-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.ino
747 lines (679 loc) · 129 KB
/
main.ino
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
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
#include <SPI.h>
#include <Wire.h>
#include <stdlib.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <time.h>
#include <Arduino.h>
#include <WiFi.h>
#include <AsyncTCP.h>
#include "vars.h"
#include "FreeSans.h"
#include <ESPAsyncWebServer.h>
#include "pitches.h"
#include <DFRobotDFPlayerMini.h>
AsyncWebServer server(80);
DFRobotDFPlayerMini myDFPlayer;
const char* ssid = SSID;
const char* password = PASSWORD;
const char* PARAM_INPUT_1 = "player";
const char* PARAM_INPUT_2 = "name";
int resetMelody[] = {
NOTE_C5, NOTE_E5, NOTE_G5, NOTE_C6};
int resetRhythm[] = { 100, 100, 100, 400 };
int deathMelody[] = {
NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, NOTE_CS4, NOTE_C4, NOTE_CS4, NOTE_C4, NOTE_CS4, NOTE_C4, NOTE_CS4, NOTE_C4
};
int deathRhythm[] = {500, 500, 500, 100, 100, 150, 175, 200, 225, 250, 300, 2000};
int player1Minus = 3;
int player1Plus = 4;
int player1Alt = 2;
int player2Minus = 7;
int player2Plus = 10;
int player2Alt = 5;
int buzzerPin = 6;
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32s
#define TCAADDR 0x70
//Array of displays eventually this number can be adjusted along with player count
Adafruit_SSD1306 displays[2] = { {SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET}, {SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET} };
#define LOGO_HEIGHT 32
#define LOGO_WIDTH 32
#define STARTING_HEALTH 25
#define CMDR_DAMAGE 0
#define ALIVE true
#define SCREEN_STATE 0
// Create a HardwareSerial object for UART1
HardwareSerial mySerial(1);
struct Player
{
uint16_t health;
uint8_t cmdr_damage;
bool alive;
String name;
int display;
bool screenState;
};
Player players[2] = { {STARTING_HEALTH, CMDR_DAMAGE, ALIVE, "Player1", 1, SCREEN_STATE}, {STARTING_HEALTH, CMDR_DAMAGE, ALIVE, "Player2", 0, SCREEN_STATE} }; // Array of Player structs
bool showStart = false;
bool applauseState = false;
#define FRAME_DELAY (42)
#define FRAME_WIDTH (64)
#define FRAME_HEIGHT (64)
#define FRAME_COUNT_DEATH (sizeof(death_frames) / sizeof(death_frames[0]))
#define FRAME_COUNT_FIRST (sizeof(first_frames) / sizeof(first_frames[0]))
#define FRAME_COUNT_SECOND (sizeof(second_frames) / sizeof(second_frames[0]))
const byte PROGMEM second_frames[][512] = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,254,28,224,0,0,3,157,255,255,152,224,0,0,1,159,254,63,249,192,0,0,1,223,193,35,249,192,0,0,0,255,17,50,255,128,0,0,0,252,17,34,63,0,0,0,0,249,144,6,31,0,0,0,1,241,128,0,111,128,0,0,1,232,0,0,199,128,0,0,3,204,0,0,3,192,0,0,3,132,0,0,29,192,0,0,7,160,15,240,25,224,0,0,7,112,31,248,0,224,0,0,15,0,31,248,2,240,0,0,14,0,60,60,7,112,0,0,14,192,56,28,0,112,0,0,14,192,56,28,0,112,0,0,30,0,56,60,3,248,0,0,30,0,0,60,3,120,0,0,29,192,0,120,0,56,0,0,28,128,1,240,0,56,0,0,30,0,3,224,3,248,0,0,30,0,7,128,3,120,0,0,14,192,31,0,0,112,0,0,14,128,30,0,0,112,0,0,14,0,60,0,7,112,0,0,15,48,63,252,2,240,0,0,7,112,63,252,0,224,0,0,7,128,127,252,25,224,0,0,3,132,0,0,13,192,0,0,3,220,0,0,67,192,0,0,1,232,0,0,103,128,0,0,1,241,128,2,111,0,0,0,0,249,16,2,31,0,0,0,0,124,51,51,62,0,0,0,0,63,51,48,252,0,0,0,0,31,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,7,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,254,28,224,0,0,3,157,255,255,152,224,0,0,1,159,254,63,249,192,0,0,1,223,193,35,249,192,0,0,0,255,17,50,255,128,0,0,0,252,17,34,63,0,0,0,0,249,144,6,31,0,0,0,1,241,128,0,111,128,0,0,1,232,0,0,199,128,0,0,3,204,0,0,3,192,0,0,3,132,0,0,29,192,0,0,7,160,15,240,25,224,0,0,7,112,31,248,0,224,0,0,15,0,31,248,2,240,0,0,14,0,60,60,7,112,0,0,14,192,56,28,0,112,0,0,14,192,56,28,0,112,0,0,30,0,56,60,3,248,0,0,30,0,0,60,3,120,0,0,29,192,0,120,0,56,0,0,28,128,1,240,0,56,0,0,30,0,3,224,3,248,0,0,30,0,7,128,3,120,0,0,14,192,31,0,0,112,0,0,14,128,30,0,0,112,0,0,14,0,60,0,7,112,0,0,15,48,63,252,2,240,0,0,7,112,63,252,0,224,0,0,7,128,127,252,25,224,0,0,3,132,0,0,13,192,0,0,3,220,0,0,67,192,0,0,1,232,0,0,103,128,0,0,1,241,128,2,111,0,0,0,0,249,16,2,31,0,0,0,0,124,51,51,62,0,0,0,0,63,51,48,252,0,0,0,0,31,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,7,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,254,28,224,0,0,3,157,255,255,152,224,0,0,1,159,254,63,249,192,0,0,1,223,193,35,249,192,0,0,0,255,17,50,255,128,0,0,0,252,17,34,63,0,0,0,0,249,144,6,31,0,0,0,1,241,128,0,111,128,0,0,1,232,0,0,199,128,0,0,3,204,0,0,3,192,0,0,3,132,0,0,29,192,0,0,7,160,15,240,25,224,0,0,7,112,31,248,0,224,0,0,15,0,31,248,2,240,0,0,14,0,60,60,7,112,0,0,14,192,56,28,0,112,0,0,14,192,56,28,0,112,0,0,30,0,56,60,3,248,0,0,30,0,0,60,3,120,0,0,29,192,0,120,0,56,0,0,28,128,1,240,0,56,0,0,30,0,3,224,3,248,0,0,30,0,7,128,3,120,0,0,14,192,31,0,0,112,0,0,14,128,30,0,0,112,0,0,14,0,60,0,7,112,0,0,15,48,63,252,2,240,0,0,7,112,63,252,0,224,0,0,7,128,127,252,25,224,0,0,3,132,0,0,13,192,0,0,3,220,0,0,67,192,0,0,1,232,0,0,103,128,0,0,1,241,128,2,111,0,0,0,0,249,16,2,31,0,0,0,0,124,51,51,62,0,0,0,0,63,51,48,252,0,0,0,0,31,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,7,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,254,28,224,0,0,3,157,255,255,152,224,0,0,1,159,254,63,249,192,0,0,1,223,193,35,249,192,0,0,0,255,17,50,255,128,0,0,0,252,17,34,63,0,0,0,0,249,144,6,31,0,0,0,1,241,128,0,111,128,0,0,1,232,0,0,199,128,0,0,3,204,0,0,3,192,0,0,3,132,0,0,29,192,0,0,7,160,15,240,25,224,0,0,7,112,31,248,0,224,0,0,15,0,31,248,2,240,0,0,14,0,60,60,7,112,0,0,14,192,56,28,0,112,0,0,14,192,56,28,0,112,0,0,30,0,56,60,3,248,0,0,30,0,0,60,3,120,0,0,29,192,0,120,0,56,0,0,28,128,1,240,0,56,0,0,30,0,3,224,3,248,0,0,30,0,7,128,3,120,0,0,14,192,31,0,0,112,0,0,14,128,30,0,0,112,0,0,14,0,60,0,7,112,0,0,15,48,63,252,2,240,0,0,7,112,63,252,0,224,0,0,7,128,127,252,25,224,0,0,3,132,0,0,13,192,0,0,3,220,0,0,67,192,0,0,1,232,0,0,103,128,0,0,1,241,128,2,111,0,0,0,0,249,16,2,31,0,0,0,0,124,51,51,62,0,0,0,0,63,51,48,252,0,0,0,0,31,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,7,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,231,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,206,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,240,12,112,0,0,3,56,127,254,28,224,0,0,3,157,255,255,152,224,0,0,1,159,254,63,249,192,0,0,1,223,193,35,249,128,0,0,1,255,17,50,127,128,0,0,0,252,17,34,63,0,0,0,0,249,144,6,31,0,0,0,0,240,128,0,103,0,0,0,1,232,0,0,199,128,0,0,3,204,0,0,3,192,0,0,3,132,0,0,29,192,0,0,7,160,15,240,25,224,0,0,7,112,31,248,0,224,0,0,15,0,31,248,2,240,0,0,14,0,60,60,6,112,0,0,14,192,56,60,0,112,0,0,14,192,56,28,0,112,0,0,14,0,56,60,3,112,0,0,30,0,0,60,3,120,0,0,31,192,0,120,0,120,0,0,30,192,1,240,0,120,0,0,30,0,3,224,3,112,0,0,14,0,7,128,3,112,0,0,14,224,31,0,0,112,0,0,14,128,30,0,4,112,0,0,15,0,60,0,7,112,0,0,15,48,63,252,2,240,0,0,7,112,63,252,0,224,0,0,7,128,127,252,25,224,0,0,3,132,0,0,13,192,0,0,3,204,0,0,67,192,0,0,1,232,0,0,103,128,0,0,0,241,128,2,111,0,0,0,0,249,16,2,31,0,0,0,0,124,51,51,62,0,0,0,0,63,51,48,252,0,0,0,0,15,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,14,48,7,56,3,56,28,224,14,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,227,128,0,103,0,115,198,0,231,0,0,115,128,51,206,1,199,0,0,51,128,59,140,1,206,0,0,57,192,27,156,3,142,0,0,24,192,31,24,3,156,0,0,28,224,15,56,7,24,0,0,12,96,14,48,7,56,0,0,14,112,14,112,14,48,0,0,6,48,12,96,14,112,0,0,7,56,31,240,28,224,0,0,3,24,255,254,28,224,0,0,3,159,255,255,185,192,0,0,1,143,254,63,249,192,0,0,1,207,193,35,243,128,0,0,0,255,17,48,255,128,0,0,0,252,17,38,63,0,0,0,0,249,144,6,31,0,0,0,0,240,128,0,111,0,0,0,1,236,0,0,199,128,0,0,3,206,0,0,3,192,0,0,3,196,0,0,25,192,0,0,7,160,7,240,17,224,0,0,7,48,15,248,0,224,0,0,7,16,31,248,6,224,0,0,15,0,60,60,6,240,0,0,14,224,56,60,0,112,0,0,14,224,56,28,0,112,0,0,14,0,56,60,3,112,0,0,14,0,0,56,3,112,0,0,14,192,0,120,0,112,0,0,14,192,1,240,0,112,0,0,14,0,3,224,3,112,0,0,14,0,7,128,3,112,0,0,14,224,15,0,0,112,0,0,15,192,30,0,0,112,0,0,15,0,60,0,6,224,0,0,7,16,63,252,2,224,0,0,7,240,63,252,0,224,0,0,7,128,63,252,25,224,0,0,3,196,0,0,11,192,0,0,3,204,0,0,67,128,0,0,1,232,0,0,199,128,0,0,0,241,128,0,111,0,0,0,0,249,16,6,30,0,0,0,0,124,51,35,62,0,0,0,0,63,51,48,248,0,0,0,0,15,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,115,128,0,231,0,103,231,0,227,128,0,103,0,115,198,0,231,0,0,115,128,51,206,1,199,0,0,51,128,59,140,1,142,0,0,57,192,27,156,3,156,0,0,24,192,31,24,3,28,0,0,28,224,15,56,7,56,0,0,12,96,14,48,6,56,0,0,14,112,14,112,14,112,0,0,6,56,12,96,12,96,0,0,7,56,31,240,28,224,0,0,3,156,255,254,57,192,0,0,3,157,255,255,177,192,0,0,1,207,254,63,243,128,0,0,1,207,193,35,243,128,0,0,0,255,17,32,255,0,0,0,0,254,25,38,62,0,0,0,0,249,144,6,30,0,0,0,0,240,192,0,79,0,0,0,1,236,0,0,199,128,0,0,3,230,0,0,3,128,0,0,3,192,0,0,27,192,0,0,7,160,7,224,49,192,0,0,7,184,15,240,1,224,0,0,7,0,31,248,6,224,0,0,15,0,28,60,12,224,0,0,15,96,56,60,0,224,0,0,15,96,56,28,0,224,0,0,14,0,56,60,7,240,0,0,14,0,0,56,6,112,0,0,14,224,0,120,0,112,0,0,14,192,1,240,0,112,0,0,14,0,3,224,7,112,0,0,15,0,7,128,3,224,0,0,15,96,15,0,0,224,0,0,15,64,30,0,0,224,0,0,15,0,60,0,14,224,0,0,7,144,63,252,2,224,0,0,7,176,63,252,1,192,0,0,7,128,63,252,25,192,0,0,3,196,0,0,27,128,0,0,3,236,0,0,7,128,0,0,1,232,128,0,199,0,0,0,0,241,128,0,79,0,0,0,0,121,144,6,30,0,0,0,0,124,19,34,60,0,0,0,0,31,51,48,248,0,0,0,0,15,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,96,3,156,1,156,57,192,56,224,1,140,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,198,0,231,99,0,115,128,0,231,0,103,231,0,227,0,0,99,0,115,198,0,199,0,0,115,128,51,206,1,206,0,0,57,128,59,140,3,142,0,0,57,192,27,156,3,156,0,0,28,192,31,24,7,24,0,0,28,224,15,56,7,56,0,0,14,96,14,48,14,112,0,0,6,112,14,112,12,112,0,0,7,56,12,96,28,224,0,0,3,56,31,240,56,192,0,0,3,156,127,254,57,192,0,0,1,143,255,255,243,128,0,0,1,207,254,63,227,128,0,0,0,223,193,35,231,0,0,0,0,255,25,32,254,0,0,0,0,254,25,38,126,0,0,0,0,252,128,4,60,0,0,0,0,248,192,0,206,0,0,0,1,244,0,0,143,0,0,0,3,230,0,0,7,128,0,0,3,192,0,0,27,128,0,0,7,208,7,224,35,128,0,0,7,152,15,240,1,192,0,0,7,128,31,248,13,192,0,0,15,128,28,56,13,192,0,0,15,112,28,60,0,224,0,0,15,48,56,60,0,224,0,0,15,0,56,56,6,224,0,0,15,0,0,56,6,224,0,0,15,96,0,120,0,224,0,0,15,96,1,240,0,224,0,0,15,0,3,224,6,224,0,0,15,0,7,128,6,224,0,0,15,112,15,0,0,224,0,0,15,224,30,0,0,224,0,0,15,128,30,0,15,192,0,0,7,152,63,252,5,192,0,0,7,248,63,252,1,192,0,0,7,192,63,252,51,128,0,0,3,226,0,0,27,128,0,0,3,230,0,0,7,0,0,0,1,244,0,0,207,0,0,0,0,248,128,4,94,0,0,0,0,125,144,38,60,0,0,0,0,126,19,38,124,0,0,0,0,63,19,48,248,0,0,0,0,31,227,3,240,0,0,0,0,7,255,127,192,0,0,0,0,3,255,255,0,0,0,0,0,0,127,252,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,96,3,156,1,156,57,192,56,224,1,204,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,230,0,231,99,0,99,128,0,231,0,103,231,0,231,0,0,115,0,115,198,1,199,0,0,115,128,51,206,1,206,0,0,57,192,59,140,3,156,0,0,25,192,27,156,7,28,0,0,28,224,31,24,7,56,0,0,12,96,15,56,14,48,0,0,14,112,14,48,14,112,0,0,7,48,14,112,28,224,0,0,7,56,12,96,56,224,0,0,3,152,31,224,57,192,0,0,3,156,255,254,115,128,0,0,1,207,255,255,227,128,0,0,1,207,254,63,231,0,0,0,0,255,193,35,238,0,0,0,0,255,153,32,254,0,0,0,0,126,25,38,124,0,0,0,0,252,200,4,60,0,0,0,1,248,192,0,222,0,0,0,1,246,0,1,142,0,0,0,3,246,0,0,31,0,0,0,3,226,0,0,55,0,0,0,7,208,7,224,35,128,0,0,7,220,15,240,3,128,0,0,7,192,31,248,15,128,0,0,15,128,28,56,25,192,0,0,15,176,28,56,1,192,0,0,15,176,24,56,1,192,0,0,15,128,24,56,15,192,0,0,15,128,0,56,13,192,0,0,15,240,0,112,1,192,0,0,15,224,1,240,1,192,0,0,15,128,3,224,15,192,0,0,15,128,7,128,7,192,0,0,15,176,15,0,1,192,0,0,15,160,30,0,1,192,0,0,15,128,30,0,29,192,0,0,7,200,31,252,7,128,0,0,7,216,63,252,3,128,0,0,7,224,63,248,55,128,0,0,3,226,0,0,55,0,0,0,3,246,0,0,143,0,0,0,1,244,0,0,142,0,0,0,0,248,192,0,222,0,0,0,0,253,144,4,60,0,0,0,0,126,27,38,120,0,0,0,0,63,147,33,240,0,0,0,0,31,227,35,224,0,0,0,0,15,255,127,192,0,0,0,0,3,255,255,0,0,0,0,0,0,127,252,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,57,192,1,206,0,206,115,128,115,128,0,230,0,231,99,0,227,128,0,231,0,103,231,0,231,0,0,115,128,115,198,1,206,0,0,51,128,51,206,3,142,0,0,57,192,59,140,3,156,0,0,28,192,27,156,7,56,0,0,28,224,31,24,14,56,0,0,14,96,15,56,14,112,0,0,14,112,14,48,28,224,0,0,7,56,14,112,56,224,0,0,7,56,12,96,57,192,0,0,3,156,31,224,115,128,0,0,1,140,255,252,99,128,0,0,1,207,255,255,231,0,0,0,0,239,254,63,206,0,0,0,0,255,225,35,238,0,0,0,0,127,153,33,252,0,0,0,0,127,9,100,120,0,0,0,0,254,200,12,56,0,0,0,1,252,64,0,156,0,0,0,1,250,0,1,158,0,0,0,3,243,0,0,14,0,0,0,3,240,0,0,55,0,0,0,7,232,7,224,103,0,0,0,6,236,15,240,7,0,0,0,7,192,15,248,11,128,0,0,15,192,28,56,27,128,0,0,13,248,28,56,3,128,0,0,13,152,28,56,3,128,0,0,13,128,24,56,13,128,0,0,13,128,0,56,13,128,0,0,15,176,0,112,1,192,0,0,13,176,1,224,1,128,0,0,13,128,3,192,13,128,0,0,13,128,7,128,13,128,0,0,13,248,15,0,3,128,0,0,15,208,14,0,3,128,0,0,15,192,30,0,27,128,0,0,15,204,31,248,11,128,0,0,7,248,31,248,7,0,0,0,7,224,31,248,103,0,0,0,3,242,0,0,63,0,0,0,3,246,0,0,14,0,0,0,1,250,0,1,158,0,0,0,1,252,192,4,188,0,0,0,0,254,200,4,120,0,0,0,0,127,27,38,248,0,0,0,0,63,147,33,240,0,0,0,0,31,225,39,224,0,0,0,0,15,255,127,128,0,0,0,0,3,255,255,0,0,0,0,0,0,255,252,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,230,0,231,99,0,227,128,0,103,0,103,231,1,199,0,0,115,128,115,198,1,206,0,0,57,128,51,206,3,156,0,0,57,192,59,140,7,28,0,0,28,192,27,156,7,56,0,0,28,224,31,24,14,112,0,0,14,112,15,56,28,112,0,0,6,48,14,48,28,224,0,0,7,56,14,112,57,192,0,0,3,152,12,96,113,192,0,0,3,156,31,224,115,128,0,0,1,207,255,252,231,0,0,0,1,207,255,255,206,0,0,0,0,239,254,127,206,0,0,0,0,127,225,7,220,0,0,0,0,127,153,97,248,0,0,1,192,127,73,100,248,14,0,1,224,254,72,12,120,30,0,0,241,220,96,1,184,60,0,0,33,186,0,1,28,48,0,0,3,187,0,0,62,0,0,0,3,112,0,0,110,0,0,0,7,120,7,224,78,0,0,0,6,238,15,240,7,0,0,0,6,224,15,240,31,0,0,0,14,224,28,56,55,0,0,0,12,216,28,56,3,0,0,0,13,216,28,56,3,128,0,0,13,192,24,56,27,128,0,0,13,192,0,112,27,128,0,0,13,248,0,112,3,128,0,3,205,208,1,224,3,159,0,3,205,192,3,192,27,159,0,0,13,192,7,128,11,128,0,0,13,216,15,0,3,0,0,0,14,208,14,0,3,0,0,0,14,224,30,0,63,0,0,0,14,228,31,248,7,0,0,0,6,236,31,248,7,0,0,0,7,112,31,248,110,0,0,0,3,113,0,0,110,0,0,0,3,187,0,0,28,0,0,0,1,186,0,1,156,0,0,0,1,220,64,1,184,0,0,0,0,254,200,12,120,0,0,0,48,127,25,36,240,112,0,0,120,63,155,33,224,120,0,1,240,31,225,39,192,60,0,1,192,15,255,127,128,14,0,0,0,7,255,255,0,0,0,0,0,0,255,252,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,199,0,0,115,128,115,198,3,142,0,0,57,128,51,206,3,156,0,0,57,192,59,140,7,56,0,0,28,224,27,156,14,56,0,0,12,96,31,24,14,112,0,0,14,112,15,56,28,224,0,0,7,48,14,48,56,224,0,0,7,56,14,112,113,192,0,0,3,156,12,96,115,128,0,0,1,140,31,224,231,0,0,0,1,207,255,253,199,0,0,224,0,239,255,255,206,0,28,240,0,255,252,127,156,0,60,60,0,127,225,7,248,0,240,31,0,127,201,99,248,3,224,7,0,247,9,108,240,3,128,1,0,238,72,8,112,2,0,0,1,222,96,1,184,0,0,0,3,157,0,3,56,0,0,0,3,185,128,0,28,0,0,0,3,56,0,0,124,0,0,0,7,116,7,224,206,0,0,0,6,118,15,240,14,0,0,0,6,96,15,240,22,0,0,0,14,96,12,56,54,0,0,0,12,252,28,56,7,0,0,0,12,236,28,56,7,0,0,0,12,224,24,56,31,0,0,0,12,224,0,112,23,0,0,0,12,248,0,240,7,0,0,255,12,248,1,224,7,3,252,255,12,224,3,192,31,3,252,0,12,224,7,128,31,0,0,0,12,252,7,0,7,0,0,0,14,232,14,0,7,0,0,0,14,224,14,0,55,0,0,0,14,102,31,248,22,0,0,0,6,124,31,248,14,0,0,0,7,112,31,248,206,0,0,0,3,57,0,0,108,0,0,0,3,187,0,1,28,0,0,0,3,156,0,1,56,0,0,0,1,220,96,1,184,0,0,0,0,238,200,12,112,0,0,0,0,247,9,100,224,0,0,0,0,127,219,35,224,0,0,1,0,63,225,39,192,6,0,7,128,31,254,255,128,7,128,15,0,7,255,254,0,3,192,62,0,1,255,248,0,1,240,120,0,0,23,192,0,0,120,240,0,0,0,0,0,0,60,64,0,0,0,0,0,0,8},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,243,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,207,0,0,115,128,115,198,3,142,0,0,57,192,51,206,3,156,0,0,25,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,96,31,24,28,112,0,0,14,112,15,56,28,224,0,0,7,56,14,48,57,192,0,0,3,24,14,112,115,128,0,0,3,156,12,96,227,128,0,0,1,204,31,224,231,0,0,0,1,207,255,249,206,0,0,224,0,239,255,255,156,0,28,240,0,127,252,127,156,0,60,60,0,125,225,15,184,0,240,30,0,123,201,99,240,1,224,4,0,247,137,108,240,0,128,0,0,239,104,8,240,0,0,0,1,206,32,1,112,0,0,0,3,157,0,3,56,0,0,0,3,29,128,0,56,0,0,0,3,56,0,0,92,0,0,0,7,60,7,224,156,0,0,0,6,54,7,224,12,0,0,0,6,114,15,240,62,0,0,0,14,112,12,48,110,0,0,0,12,108,12,56,6,0,0,0,12,108,28,56,6,0,0,0,12,96,12,48,54,0,0,0,12,96,0,112,54,0,0,0,12,252,0,240,7,0,0,252,12,232,1,224,7,0,252,252,12,96,3,192,62,0,252,0,12,96,7,128,22,0,0,0,12,108,7,0,6,0,0,0,12,104,14,0,6,0,0,0,14,112,14,0,126,0,0,0,14,114,31,248,30,0,0,0,6,118,31,248,14,0,0,0,7,56,31,240,204,0,0,0,7,56,0,0,92,0,0,0,3,25,0,0,56,0,0,0,3,157,0,3,56,0,0,0,1,206,96,1,112,0,0,0,0,207,72,12,240,0,0,0,0,231,9,109,224,0,0,0,0,123,201,35,192,0,0,0,0,61,225,15,128,0,0,2,0,31,254,255,0,1,0,14,0,7,255,254,0,1,192,62,0,1,255,248,0,1,240,120,0,0,23,192,0,0,120,224,0,0,0,0,0,0,28,0,0,0,0,0,0,0,8},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,227,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,206,0,0,115,128,115,198,3,142,0,0,57,192,51,206,7,28,0,0,28,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,96,31,24,28,240,0,0,14,112,15,56,56,224,0,0,7,56,14,48,57,192,0,0,3,152,14,112,115,128,0,0,3,156,12,96,231,0,0,0,1,206,63,225,199,0,0,0,1,199,255,249,206,0,0,224,0,239,255,255,156,0,24,240,0,127,254,127,56,0,60,112,0,125,225,15,248,0,56,0,0,115,201,99,240,0,0,0,0,231,137,105,224,0,0,0,0,231,96,8,224,0,0,0,1,206,32,1,112,0,0,0,3,157,0,2,56,0,0,0,3,29,128,0,120,0,0,0,7,24,0,0,216,0,0,0,6,60,7,224,156,0,0,0,6,54,7,224,28,0,0,0,14,48,15,240,44,0,0,0,14,112,12,48,110,0,0,0,12,124,12,48,14,0,0,0,12,116,12,48,14,0,0,0,12,96,12,48,54,0,0,0,12,96,0,112,54,0,0,0,12,108,0,240,6,0,0,240,12,104,1,224,6,0,60,240,12,96,3,192,54,0,60,0,12,96,7,128,22,0,0,0,12,124,7,0,14,0,0,0,12,120,14,0,14,0,0,0,14,112,14,0,126,0,0,0,14,50,31,248,12,0,0,0,6,54,31,248,12,0,0,0,7,56,31,240,220,0,0,0,7,24,128,0,88,0,0,0,3,29,128,0,56,0,0,0,3,157,0,3,56,0,0,0,1,206,96,1,112,0,0,0,0,199,72,8,224,0,0,0,0,231,137,109,224,0,0,0,0,115,201,99,192,0,0,0,0,61,241,15,128,0,0,0,0,31,254,255,0,0,0,0,0,15,255,254,0,0,0,48,0,3,255,248,0,0,48,240,0,0,39,192,0,0,56,240,0,0,0,0,0,0,28,64,0,0,0,0,0,0,8},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,227,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,206,0,0,115,128,115,198,3,158,0,0,57,192,51,206,7,28,0,0,28,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,112,31,24,28,224,0,0,14,112,15,56,56,224,0,0,7,56,14,48,121,192,0,0,3,152,14,112,115,128,0,0,3,156,12,96,231,0,0,0,1,206,63,225,207,0,0,0,0,199,255,251,206,0,0,0,0,239,255,255,156,0,0,0,0,127,254,127,56,0,0,0,0,125,225,15,240,0,0,0,0,115,201,99,240,0,0,0,0,231,137,73,224,0,0,0,0,199,96,8,224,0,0,0,1,206,32,3,112,0,0,0,3,141,0,2,48,0,0,0,3,29,128,0,56,0,0,0,7,24,0,0,216,0,0,0,6,58,3,224,156,0,0,0,6,63,7,224,28,0,0,0,14,48,15,240,44,0,0,0,14,48,12,48,108,0,0,0,12,124,12,48,14,0,0,0,12,116,12,48,14,0,0,0,12,112,12,48,62,0,0,0,12,112,0,112,62,0,0,0,12,108,0,240,6,0,0,0,12,108,1,224,6,0,0,0,12,96,3,192,54,0,0,0,12,112,3,128,30,0,0,0,12,124,7,0,14,0,0,0,12,120,14,0,14,0,0,0,14,112,14,0,110,0,0,0,14,50,15,248,44,0,0,0,6,62,31,248,12,0,0,0,7,56,31,240,220,0,0,0,7,24,128,0,216,0,0,0,3,29,128,0,56,0,0,0,3,157,0,3,48,0,0,0,1,206,96,1,112,0,0,0,0,199,104,8,224,0,0,0,0,231,137,109,224,0,0,0,0,115,201,99,192,0,0,0,0,61,241,15,128,0,0,0,0,31,254,255,0,0,0,0,0,15,255,254,0,0,0,0,0,3,255,248,0,0,0,0,0,0,39,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,227,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,206,0,0,115,128,115,198,3,142,0,0,57,192,51,206,7,28,0,0,28,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,96,31,24,28,240,0,0,14,112,15,56,56,224,0,0,7,56,14,48,57,192,0,0,3,152,14,112,115,128,0,0,3,156,12,96,231,0,0,0,1,206,63,225,199,0,0,0,0,199,255,249,206,0,0,0,0,239,255,255,156,0,0,0,0,127,254,127,56,0,0,0,0,125,225,15,248,0,0,0,0,115,201,99,240,0,0,0,0,231,137,73,224,0,0,0,0,231,96,8,224,0,0,0,1,206,32,1,112,0,0,0,3,157,0,2,56,0,0,0,3,29,128,0,56,0,0,0,7,24,0,0,216,0,0,0,6,60,7,224,156,0,0,0,6,54,7,224,28,0,0,0,14,48,15,240,44,0,0,0,14,112,12,48,110,0,0,0,12,124,12,48,14,0,0,0,12,116,12,48,14,0,0,0,12,112,12,48,62,0,0,0,12,96,0,112,54,0,0,0,12,108,0,240,6,0,0,0,12,104,1,224,6,0,0,0,12,96,3,192,54,0,0,0,12,96,7,128,22,0,0,0,12,124,7,0,14,0,0,0,12,120,14,0,14,0,0,0,14,112,14,0,126,0,0,0,14,50,15,248,44,0,0,0,6,54,31,248,12,0,0,0,7,56,31,240,220,0,0,0,7,24,128,0,88,0,0,0,3,29,128,0,56,0,0,0,3,157,0,3,56,0,0,0,1,206,96,1,112,0,0,0,0,199,104,8,224,0,0,0,0,231,137,109,224,0,0,0,0,115,201,99,192,0,0,0,0,61,241,15,128,0,0,0,0,31,254,255,0,0,0,0,0,15,255,254,0,0,0,0,0,3,255,248,0,0,0,0,0,0,39,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,227,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,206,0,0,115,128,115,198,3,142,0,0,57,192,51,206,7,156,0,0,25,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,96,31,24,28,112,0,0,14,112,15,56,60,224,0,0,7,56,14,48,57,192,0,0,3,152,14,112,115,128,0,0,3,156,12,96,227,128,0,0,1,206,63,224,231,0,0,0,1,207,255,249,206,0,0,0,0,239,255,255,156,0,0,0,0,127,252,127,60,0,0,0,0,125,225,15,184,0,0,0,0,123,201,99,240,0,0,0,0,231,137,109,224,0,0,0,0,239,104,8,240,0,0,0,1,206,32,1,112,0,0,0,3,157,0,3,56,0,0,0,3,29,128,0,56,0,0,0,7,56,0,0,220,0,0,0,7,60,7,224,156,0,0,0,6,54,7,224,12,0,0,0,6,114,15,240,62,0,0,0,14,112,12,48,110,0,0,0,12,124,12,56,14,0,0,0,12,108,28,48,6,0,0,0,12,96,12,48,54,0,0,0,12,96,0,112,54,0,0,0,12,108,0,240,6,0,0,0,12,104,1,224,6,0,0,0,12,96,3,192,54,0,0,0,12,96,7,128,22,0,0,0,12,108,7,0,6,0,0,0,12,120,14,0,6,0,0,0,14,112,14,0,126,0,0,0,14,114,31,248,14,0,0,0,6,54,31,248,12,0,0,0,7,56,31,240,220,0,0,0,7,56,128,0,92,0,0,0,3,29,0,0,56,0,0,0,3,157,0,3,56,0,0,0,1,206,96,1,112,0,0,0,0,207,72,8,240,0,0,0,0,231,137,109,224,0,0,0,0,123,201,35,192,0,0,0,0,61,225,15,128,0,0,0,0,31,254,255,0,0,0,0,0,7,255,254,0,0,0,0,0,1,255,248,0,0,0,0,0,0,55,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,199,0,0,115,128,115,198,3,142,0,0,57,128,51,206,3,156,0,0,57,192,59,140,7,56,0,0,28,224,27,156,14,56,0,0,14,96,31,24,28,112,0,0,14,112,15,56,28,224,0,0,7,56,14,48,57,192,0,0,7,56,14,112,113,192,0,0,3,156,12,96,115,128,0,0,1,204,31,224,231,0,0,0,1,207,255,249,206,0,0,0,0,239,255,255,142,0,0,0,0,255,252,127,156,0,0,0,0,127,225,7,184,0,0,0,0,123,201,99,240,0,0,0,0,247,9,108,240,0,0,0,0,239,104,8,112,0,0,0,1,222,96,1,112,0,0,0,3,157,0,3,56,0,0,0,3,185,128,0,28,0,0,0,3,56,0,0,92,0,0,0,7,52,7,224,204,0,0,0,6,118,7,240,14,0,0,0,6,112,15,240,62,0,0,0,14,96,12,56,54,0,0,0,12,108,28,56,6,0,0,0,12,236,28,56,7,0,0,0,12,224,28,48,63,0,0,0,12,224,0,112,23,0,0,0,12,252,0,240,7,0,0,0,12,248,1,224,7,0,0,0,12,224,3,192,63,0,0,0,12,224,7,128,31,0,0,0,12,236,7,0,7,0,0,0,14,232,14,0,6,0,0,0,14,96,14,0,54,0,0,0,14,114,31,248,14,0,0,0,6,118,31,248,14,0,0,0,7,48,31,248,204,0,0,0,7,57,0,0,124,0,0,0,3,59,0,0,28,0,0,0,3,156,0,3,56,0,0,0,1,222,96,1,120,0,0,0,0,238,72,12,240,0,0,0,0,247,9,108,224,0,0,0,0,123,217,35,192,0,0,0,0,63,225,7,192,0,0,0,0,31,254,255,128,0,0,0,0,7,255,254,0,0,0,0,0,1,255,248,0,0,0,0,0,0,23,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,184,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,206,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,231,0,231,99,0,231,0,0,119,0,103,231,1,199,0,0,115,128,115,198,1,206,0,0,57,192,51,206,3,156,0,0,57,192,59,140,7,28,0,0,28,224,27,156,14,56,0,0,12,224,31,24,14,112,0,0,14,112,15,56,28,224,0,0,7,56,14,48,56,224,0,0,7,56,14,112,57,192,0,0,3,156,12,96,115,128,0,0,3,156,31,224,227,128,0,0,1,207,255,252,231,0,0,0,0,239,255,255,206,0,0,0,0,255,254,127,156,0,0,0,0,127,225,7,220,0,0,0,0,127,137,97,248,0,0,0,0,255,73,108,240,0,0,0,0,238,72,12,112,0,0,0,1,220,96,1,184,0,0,0,3,191,0,1,60,0,0,0,3,185,0,0,28,0,0,0,3,113,0,0,110,0,0,0,7,116,7,224,78,0,0,0,6,118,15,240,14,0,0,0,6,224,15,240,23,0,0,0,14,224,12,56,55,0,0,0,12,248,28,56,7,0,0,0,12,232,28,56,7,0,0,0,12,192,24,56,27,0,0,0,12,192,0,112,27,0,0,0,12,216,0,112,3,0,0,0,12,216,1,224,3,0,0,0,12,192,3,192,27,0,0,0,12,192,7,128,27,0,0,0,12,252,7,0,7,0,0,0,14,240,14,0,7,0,0,0,14,224,30,0,55,0,0,0,14,100,31,248,22,0,0,0,6,124,31,248,14,0,0,0,7,112,31,248,78,0,0,0,3,57,0,0,108,0,0,0,3,187,0,1,28,0,0,0,1,190,0,1,60,0,0,0,1,220,64,1,184,0,0,0,0,238,200,12,112,0,0,0,0,127,9,36,240,0,0,0,0,63,219,33,224,0,0,0,0,63,225,39,192,0,0,0,0,15,255,127,128,0,0,0,0,7,255,254,0,0,0,0,0,1,255,248,0,0,0,0,0,0,31,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,230,0,231,99,0,227,128,0,103,0,103,231,1,199,0,0,115,128,115,198,1,206,0,0,57,128,51,206,3,142,0,0,57,192,59,140,7,28,0,0,28,192,27,156,7,56,0,0,28,224,31,24,14,112,0,0,14,112,15,56,28,112,0,0,6,112,14,48,28,224,0,0,7,56,14,112,57,192,0,0,3,152,12,96,113,192,0,0,3,156,31,224,115,128,0,0,1,207,255,252,231,0,0,0,1,207,255,255,199,0,0,0,0,239,254,63,206,0,0,0,0,127,225,7,220,0,0,0,0,127,153,33,248,0,0,0,0,127,73,100,248,0,0,0,0,254,200,12,120,0,0,0,1,220,96,1,188,0,0,0,1,186,0,1,28,0,0,0,3,251,0,0,14,0,0,0,3,112,0,0,110,0,0,0,7,120,7,224,71,0,0,0,6,236,15,240,7,0,0,0,6,224,15,240,31,0,0,0,14,192,28,56,51,0,0,0,13,216,28,56,3,128,0,0,13,216,28,56,3,128,0,0,13,192,24,56,31,128,0,0,13,192,0,112,27,128,0,0,13,248,0,112,3,128,0,0,13,208,1,224,3,128,0,0,13,192,3,192,31,128,0,0,13,192,7,128,11,128,0,0,13,216,15,0,3,128,0,0,15,208,14,0,3,0,0,0,14,224,30,0,63,0,0,0,14,228,31,248,15,0,0,0,6,236,31,248,7,0,0,0,7,112,31,248,110,0,0,0,3,113,0,0,46,0,0,0,3,251,0,0,30,0,0,0,1,186,0,1,156,0,0,0,1,220,64,0,184,0,0,0,0,254,200,12,120,0,0,0,0,127,25,36,240,0,0,0,0,63,155,33,224,0,0,0,0,31,225,39,192,0,0,0,0,15,255,127,128,0,0,0,0,7,255,255,0,0,0,0,0,0,255,252,0,0,0,0,0,0,15,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,57,192,1,206,0,206,115,128,115,128,0,230,0,231,99,0,227,128,0,231,0,103,231,0,231,0,0,115,128,115,198,1,206,0,0,51,128,51,206,3,142,0,0,57,192,59,140,3,156,0,0,28,192,27,156,7,56,0,0,28,224,31,24,14,56,0,0,14,96,15,56,14,112,0,0,14,112,14,48,28,224,0,0,7,48,14,112,24,224,0,0,7,56,12,96,57,192,0,0,3,156,31,224,115,128,0,0,1,140,255,252,115,128,0,0,1,207,255,255,231,0,0,0,0,239,254,63,206,0,0,0,0,255,225,35,238,0,0,0,0,127,153,33,252,0,0,0,0,127,25,100,120,0,0,0,0,254,200,12,56,0,0,0,1,252,64,0,156,0,0,0,1,250,0,1,158,0,0,0,3,243,0,0,14,0,0,0,3,224,0,0,55,0,0,0,7,232,7,224,103,0,0,0,6,236,15,240,7,128,0,0,7,192,15,248,11,128,0,0,15,192,28,56,27,128,0,0,13,248,28,56,3,128,0,0,13,152,28,56,1,128,0,0,13,128,24,56,13,128,0,0,13,128,0,56,13,192,0,0,15,176,0,112,1,192,0,0,15,176,1,240,1,192,0,0,13,128,3,192,13,128,0,0,13,128,7,128,13,128,0,0,13,248,15,0,1,128,0,0,15,240,14,0,3,128,0,0,15,192,30,0,27,128,0,0,15,204,31,248,11,128,0,0,7,248,31,248,7,0,0,0,7,224,63,248,103,0,0,0,3,242,0,0,63,0,0,0,3,246,0,0,14,0,0,0,1,248,0,1,158,0,0,0,1,252,192,4,188,0,0,0,0,254,200,4,120,0,0,0,0,127,27,38,248,0,0,0,0,63,147,33,240,0,0,0,0,31,225,39,224,0,0,0,0,15,255,127,128,0,0,0,0,3,255,255,0,0,0,0,0,0,255,252,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,96,3,156,1,156,57,192,56,224,1,204,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,230,0,231,99,0,227,128,0,231,0,103,231,0,231,0,0,115,0,115,198,1,199,0,0,115,128,51,206,1,206,0,0,57,192,59,140,3,156,0,0,25,192,27,156,7,28,0,0,28,224,31,24,7,56,0,0,12,96,15,56,14,48,0,0,14,112,14,48,12,112,0,0,7,48,14,112,28,224,0,0,7,56,12,96,56,224,0,0,3,152,31,224,57,192,0,0,3,156,255,254,115,128,0,0,1,207,255,255,227,128,0,0,1,207,254,63,231,0,0,0,0,255,193,35,238,0,0,0,0,127,153,32,254,0,0,0,0,126,25,38,124,0,0,0,0,252,200,4,60,0,0,0,1,248,192,0,222,0,0,0,1,246,0,1,142,0,0,0,3,246,0,0,15,0,0,0,3,226,0,0,55,0,0,0,7,240,7,224,35,128,0,0,7,220,15,240,3,128,0,0,7,192,31,248,15,128,0,0,15,128,28,56,25,192,0,0,15,176,28,56,1,192,0,0,15,176,24,56,1,192,0,0,15,128,24,56,15,192,0,0,15,128,0,56,13,192,0,0,15,240,0,112,1,192,0,0,15,224,1,240,1,192,0,0,15,128,3,224,15,192,0,0,15,128,7,128,7,192,0,0,15,176,15,0,1,192,0,0,15,160,30,0,1,192,0,0,15,128,30,0,29,192,0,0,7,200,31,252,7,128,0,0,7,216,63,252,3,128,0,0,7,224,63,248,55,128,0,0,3,226,0,0,55,0,0,0,3,246,0,0,143,0,0,0,1,244,0,1,142,0,0,0,0,248,192,0,222,0,0,0,0,252,144,4,60,0,0,0,0,126,27,38,120,0,0,0,0,63,147,33,240,0,0,0,0,31,225,35,224,0,0,0,0,15,255,127,192,0,0,0,0,3,255,255,0,0,0,0,0,0,127,252,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,96,3,156,1,156,57,192,56,224,1,140,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,198,0,231,99,0,115,128,0,231,0,103,231,0,227,0,0,99,0,115,198,1,199,0,0,115,128,51,206,1,206,0,0,57,128,59,140,3,142,0,0,57,192,27,156,3,156,0,0,28,192,31,24,7,56,0,0,12,224,15,56,6,56,0,0,14,112,14,48,14,112,0,0,6,112,14,112,28,112,0,0,7,56,12,96,28,224,0,0,3,24,31,240,57,192,0,0,3,156,127,254,57,192,0,0,1,143,255,255,243,128,0,0,1,207,254,63,227,128,0,0,0,223,193,35,231,0,0,0,0,255,25,32,254,0,0,0,0,126,153,38,126,0,0,0,0,252,128,4,60,0,0,0,0,248,192,0,222,0,0,0,1,244,0,0,143,0,0,0,3,230,0,0,7,0,0,0,3,226,0,0,51,128,0,0,7,208,7,224,35,128,0,0,7,216,15,240,1,192,0,0,7,128,31,248,13,192,0,0,15,128,28,56,13,192,0,0,15,240,28,60,1,224,0,0,15,48,56,60,0,224,0,0,15,0,24,56,6,224,0,0,15,0,0,56,6,224,0,0,15,96,0,120,0,224,0,0,15,96,1,240,0,224,0,0,15,0,3,224,6,224,0,0,15,0,7,128,6,224,0,0,15,112,15,0,0,224,0,0,15,224,30,0,1,192,0,0,15,128,30,0,13,192,0,0,7,152,63,252,5,192,0,0,7,248,63,252,3,192,0,0,7,192,63,248,51,128,0,0,3,226,0,0,31,128,0,0,3,230,0,0,7,0,0,0,1,244,0,0,207,0,0,0,0,248,192,4,222,0,0,0,0,253,144,38,60,0,0,0,0,126,19,38,124,0,0,0,0,63,147,48,240,0,0,0,0,31,227,3,224,0,0,0,0,7,255,127,192,0,0,0,0,3,255,255,0,0,0,0,0,0,127,252,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,198,0,231,99,0,115,128,0,231,0,103,231,0,227,128,0,99,0,115,198,0,199,0,0,115,128,51,206,1,198,0,0,49,128,59,140,1,142,0,0,57,192,27,156,3,156,0,0,24,192,31,24,3,28,0,0,28,224,15,56,7,56,0,0,14,96,14,48,14,48,0,0,14,112,14,112,14,112,0,0,7,48,12,96,28,224,0,0,7,56,31,240,24,224,0,0,3,152,127,254,57,192,0,0,3,159,255,255,177,192,0,0,1,207,254,63,243,128,0,0,0,223,193,35,243,0,0,0,0,255,17,32,255,0,0,0,0,126,153,38,62,0,0,0,0,253,144,6,30,0,0,0,0,240,192,0,207,0,0,0,1,244,0,0,199,0,0,0,3,230,0,0,7,128,0,0,3,192,0,0,27,128,0,0,7,240,7,224,51,192,0,0,7,184,15,240,1,192,0,0,7,128,31,248,7,224,0,0,15,0,28,60,12,224,0,0,15,96,56,60,0,224,0,0,15,96,56,28,0,224,0,0,15,0,56,60,7,224,0,0,15,0,0,56,6,224,0,0,15,224,0,120,0,224,0,0,15,224,1,240,0,224,0,0,15,0,3,224,7,224,0,0,15,0,7,128,3,224,0,0,15,96,15,0,0,224,0,0,15,64,30,0,0,224,0,0,15,0,30,0,14,224,0,0,7,152,63,252,1,192,0,0,7,176,63,252,1,192,0,0,7,192,63,252,51,192,0,0,3,198,0,0,27,128,0,0,3,236,0,0,7,128,0,0,1,240,0,0,207,0,0,0,0,240,128,0,79,0,0,0,0,121,144,38,30,0,0,0,0,126,19,34,124,0,0,0,0,63,19,48,248,0,0,0,0,15,227,3,240,0,0,0,0,7,255,127,192,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,115,128,0,231,0,103,231,0,99,128,0,99,0,115,198,0,231,0,0,115,128,51,206,1,199,0,0,49,128,59,140,1,206,0,0,57,192,27,156,3,140,0,0,24,192,31,24,3,28,0,0,28,224,15,56,7,56,0,0,12,96,14,48,6,56,0,0,14,112,14,112,14,112,0,0,6,48,12,96,12,112,0,0,7,56,31,240,28,224,0,0,3,24,255,254,24,224,0,0,3,157,255,255,185,192,0,0,1,143,254,63,241,128,0,0,1,207,193,35,243,128,0,0,0,255,17,48,255,0,0,0,0,252,17,38,63,0,0,0,0,249,152,6,30,0,0,0,0,240,128,0,79,0,0,0,1,236,0,0,199,128,0,0,3,206,0,0,11,128,0,0,3,192,0,0,27,192,0,0,7,160,7,240,17,192,0,0,7,176,15,248,1,224,0,0,7,0,31,248,6,224,0,0,15,0,28,60,14,224,0,0,15,224,56,60,0,240,0,0,14,96,56,28,0,112,0,0,14,0,56,60,7,112,0,0,14,0,0,56,7,112,0,0,14,224,0,120,0,112,0,0,14,192,1,240,0,112,0,0,14,0,3,224,7,112,0,0,14,0,7,128,3,112,0,0,14,224,15,0,0,112,0,0,15,192,30,0,0,224,0,0,15,0,60,0,14,224,0,0,7,16,63,252,0,224,0,0,7,176,63,252,1,224,0,0,7,128,63,252,25,192,0,0,3,196,0,0,27,192,0,0,3,204,0,0,3,128,0,0,1,232,128,0,199,128,0,0,0,241,128,0,111,0,0,0,0,121,144,6,30,0,0,0,0,124,51,34,60,0,0,0,0,63,51,48,248,0,0,0,0,15,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,3,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,231,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,206,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,14,48,0,0,6,48,12,96,14,112,0,0,7,56,31,240,28,96,0,0,3,24,127,254,28,224,0,0,3,157,255,255,185,192,0,0,1,143,254,63,241,192,0,0,1,223,193,35,243,128,0,0,0,255,17,50,251,128,0,0,0,252,17,38,63,0,0,0,0,249,144,6,31,0,0,0,0,240,128,0,111,0,0,0,1,236,0,0,199,128,0,0,3,204,0,0,3,192,0,0,3,132,0,0,25,192,0,0,7,160,7,240,17,224,0,0,7,48,31,248,0,224,0,0,7,16,31,248,2,224,0,0,15,0,60,60,6,240,0,0,14,224,56,60,0,112,0,0,14,224,56,28,0,112,0,0,14,0,56,60,3,112,0,0,14,0,0,56,3,112,0,0,15,192,0,120,0,112,0,0,30,192,1,240,0,112,0,0,14,0,3,224,3,112,0,0,14,0,7,128,3,112,0,0,14,224,15,0,0,112,0,0,14,128,30,0,4,112,0,0,15,0,60,0,6,240,0,0,15,48,63,252,2,224,0,0,7,112,63,252,0,224,0,0,7,128,63,252,25,224,0,0,3,196,0,0,9,192,0,0,3,204,0,0,67,192,0,0,1,232,0,0,199,128,0,0,0,241,128,0,111,0,0,0,0,249,16,6,30,0,0,0,0,124,51,35,62,0,0,0,0,63,51,48,248,0,0,0,0,15,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,206,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,240,12,112,0,0,3,56,127,254,28,224,0,0,3,157,255,255,152,192,0,0,1,159,254,63,249,192,0,0,1,223,193,35,249,128,0,0,0,255,17,50,127,128,0,0,0,252,17,34,63,0,0,0,0,249,144,6,31,0,0,0,0,241,128,0,103,0,0,0,1,232,0,0,199,128,0,0,3,204,0,0,3,192,0,0,3,132,0,0,29,192,0,0,7,160,15,240,25,224,0,0,7,112,31,248,0,224,0,0,15,0,31,248,2,240,0,0,14,0,60,60,7,112,0,0,14,192,56,28,0,112,0,0,14,192,56,28,0,112,0,0,14,0,56,60,3,248,0,0,30,0,0,60,3,120,0,0,29,192,0,120,0,120,0,0,30,192,1,240,0,120,0,0,30,0,3,224,3,248,0,0,14,0,7,128,3,112,0,0,14,224,31,0,0,112,0,0,14,128,30,0,4,112,0,0,14,0,60,0,7,112,0,0,15,48,63,252,2,240,0,0,7,112,63,252,0,224,0,0,7,128,127,252,25,224,0,0,3,132,0,0,13,192,0,0,3,204,0,0,67,192,0,0,1,232,0,0,103,128,0,0,0,241,128,2,111,0,0,0,0,249,16,2,31,0,0,0,0,124,51,51,62,0,0,0,0,63,51,48,252,0,0,0,0,15,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,254,28,224,0,0,3,157,255,255,152,224,0,0,1,159,254,63,249,192,0,0,1,223,193,35,249,192,0,0,0,255,17,50,255,128,0,0,0,252,17,34,63,0,0,0,0,249,144,6,31,0,0,0,1,241,128,0,111,128,0,0,1,232,0,0,199,128,0,0,3,204,0,0,3,192,0,0,3,132,0,0,29,192,0,0,7,160,15,240,25,224,0,0,7,112,31,248,0,224,0,0,15,0,31,248,2,240,0,0,14,0,60,60,7,112,0,0,14,192,56,28,0,112,0,0,14,192,56,28,0,112,0,0,30,0,56,60,3,248,0,0,30,0,0,60,3,120,0,0,29,192,0,120,0,56,0,0,28,128,1,240,0,56,0,0,30,0,3,224,3,248,0,0,30,0,7,128,3,120,0,0,14,192,31,0,0,112,0,0,14,128,30,0,0,112,0,0,14,0,60,0,7,112,0,0,15,48,63,252,2,240,0,0,7,112,63,252,0,224,0,0,7,128,127,252,25,224,0,0,3,132,0,0,13,192,0,0,3,220,0,0,67,192,0,0,1,232,0,0,103,128,0,0,1,241,128,2,111,0,0,0,0,249,16,2,31,0,0,0,0,124,51,51,62,0,0,0,0,63,51,48,252,0,0,0,0,31,195,3,240,0,0,0,0,7,255,127,224,0,0,0,0,1,255,255,128,0,0,0,0,0,127,254,0,0,0,0,0,0,7,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
const byte PROGMEM death_frames[][512] = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,127,254,0,0,0,0,0,1,255,255,128,0,0,0,0,3,192,7,192,0,0,0,0,7,0,1,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,192,96,3,0,0,0,1,193,224,224,3,128,0,0,1,193,224,240,3,128,0,0,3,129,224,240,1,128,0,0,3,129,224,240,1,192,0,0,15,1,192,224,0,240,0,0,62,0,192,96,0,124,0,0,124,0,0,0,0,63,0,1,240,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,28,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,1,248,0,120,0,0,0,0,15,248,0,56,0,0,0,0,31,240,0,24,0,0,0,0,56,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,192,0,0,1,192,0,0,3,240,0,0,7,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,124,0,0,0,0,7,0,0,112,0,0,0,0,3,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,7,128,0,0,0,0,0,240,15,0,0,0,0,0,0,127,126,0,0,0,0,0,0,31,248,0,0,0,0,0,0,7,224,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,127,254,0,0,0,0,0,1,255,255,128,0,0,0,0,3,192,7,192,0,0,0,0,7,0,1,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,24,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,192,96,3,0,0,0,1,193,224,240,3,128,0,0,1,193,224,240,3,128,0,0,3,129,224,240,1,192,0,0,3,129,224,240,1,192,0,0,15,1,192,224,0,240,0,0,62,0,192,96,0,126,0,0,248,0,0,0,0,63,0,1,224,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,1,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,31,192,0,24,0,0,0,0,56,0,0,28,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,14,0,0,0,1,192,0,0,7,192,0,0,3,192,0,0,3,240,0,0,7,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,124,0,0,0,0,7,0,0,112,0,0,0,0,3,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,7,128,0,0,0,0,0,240,15,0,0,0,0,0,0,127,254,0,0,0,0,0,0,31,248,0,0,0,0,0,0,7,224,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,127,254,0,0,0,0,0,1,252,127,128,0,0,0,0,7,192,3,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,128,64,7,0,0,0,0,192,192,96,3,0,0,0,1,193,224,240,3,128,0,0,1,129,224,240,3,128,0,0,3,129,224,240,1,192,0,0,7,1,224,240,1,192,0,0,15,0,192,96,0,248,0,0,62,0,192,96,0,126,0,0,248,0,0,0,0,31,0,1,224,0,0,0,0,3,192,3,192,0,0,0,0,1,224,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,3,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,0,0,0,1,192,0,0,7,224,0,0,3,128,0,0,3,248,0,0,7,128,0,0,0,124,0,0,31,0,0,0,0,14,0,0,124,0,0,0,0,7,0,0,240,0,0,0,0,3,128,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,240,15,0,0,0,0,0,0,63,252,0,0,0,0,0,0,31,248,0,0,0,0,0,0,3,128,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,255,255,0,0,0,0,0,3,240,15,128,0,0,0,0,7,128,1,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,224,192,96,7,0,0,0,1,192,192,96,3,0,0,0,1,193,224,240,3,128,0,0,1,129,224,240,1,128,0,0,3,129,224,240,1,192,0,0,7,1,192,224,0,192,0,0,31,0,192,96,0,248,0,0,124,0,0,0,0,126,0,0,240,0,0,0,0,15,128,1,192,0,0,0,0,3,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,96,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,7,224,0,0,0,0,0,56,0,112,0,0,0,0,7,248,0,56,0,0,0,0,31,248,0,24,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,128,0,0,1,192,0,0,7,224,0,0,3,128,0,0,1,248,0,0,15,0,0,0,0,60,0,0,62,0,0,0,0,14,0,0,120,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,120,30,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,224,0,0,0,0,0,0,127,254,0,0,0,0,0,1,255,255,0,0,0,0,0,3,224,7,192,0,0,0,0,7,128,1,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,48,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,192,96,7,0,0,0,1,193,224,224,3,0,0,0,1,193,224,240,3,128,0,0,3,129,224,240,1,128,0,0,3,129,224,240,1,192,0,0,7,1,192,224,0,224,0,0,30,0,192,96,0,124,0,0,124,0,0,0,0,63,0,1,240,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,28,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,224,0,0,0,0,0,24,1,240,0,0,0,0,1,248,0,120,0,0,0,0,15,248,0,56,0,0,0,0,31,240,0,24,0,0,0,0,60,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,192,0,0,1,192,0,0,3,240,0,0,7,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,60,0,0,0,0,7,0,0,112,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,7,128,0,0,0,0,0,240,15,0,0,0,0,0,0,126,126,0,0,0,0,0,0,63,248,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,127,254,0,0,0,0,0,1,248,63,128,0,0,0,0,7,192,3,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,7,0,0,0,0,224,192,64,7,0,0,0,0,192,192,96,3,0,0,0,1,193,224,240,3,128,0,0,1,129,224,240,3,128,0,0,3,129,224,240,1,192,0,0,7,1,224,240,1,192,0,0,15,0,192,96,0,248,0,0,62,0,192,96,0,126,0,0,248,0,0,0,0,31,128,1,224,0,0,0,0,3,192,3,192,0,0,0,0,1,224,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,15,224,0,0,0,0,0,56,0,112,0,0,0,0,3,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,0,0,0,1,192,0,0,7,224,0,0,3,128,0,0,3,248,0,0,15,128,0,0,0,124,0,0,30,0,0,0,0,14,0,0,120,0,0,0,0,7,0,0,240,0,0,0,0,3,128,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,248,31,0,0,0,0,0,0,63,252,0,0,0,0,0,0,31,240,0,0,0,0,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,0,0,0,0,0,63,252,0,0,0,0,0,0,255,255,0,0,0,0,0,3,224,7,192,0,0,0,0,7,128,1,224,0,0,0,0,14,0,0,240,0,0,0,0,28,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,192,96,7,0,0,0,1,192,192,224,3,0,0,0,1,193,224,240,3,128,0,0,3,129,224,240,1,128,0,0,3,129,224,240,1,192,0,0,7,1,192,224,0,224,0,0,30,0,192,96,0,124,0,0,124,0,0,0,0,63,0,1,240,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,224,0,0,0,0,0,24,1,240,0,0,0,0,0,248,0,120,0,0,0,0,7,248,0,56,0,0,0,0,31,240,0,24,0,0,0,0,60,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,128,0,0,1,192,0,0,3,240,0,0,3,128,0,0,0,252,0,0,31,0,0,0,0,62,0,0,62,0,0,0,0,15,0,0,112,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,3,128,0,0,0,0,0,224,15,0,0,0,0,0,0,126,62,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,127,254,0,0,0,0,0,1,248,63,128,0,0,0,0,7,192,3,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,7,0,0,0,0,224,8,4,7,0,0,0,0,192,28,14,3,0,0,0,1,192,60,30,3,128,0,0,1,128,60,30,3,128,0,0,3,128,60,30,1,192,0,0,7,0,28,30,1,192,0,0,15,0,28,14,0,248,0,0,62,0,8,4,0,126,0,0,248,0,0,0,0,31,128,1,224,0,0,0,0,3,192,3,192,0,0,0,0,1,224,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,112,0,0,0,0,3,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,0,0,0,1,192,0,0,7,224,0,0,3,128,0,0,3,248,0,0,15,128,0,0,0,124,0,0,30,0,0,0,0,14,0,0,120,0,0,0,0,7,0,0,240,0,0,0,0,3,128,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,248,31,0,0,0,0,0,0,63,252,0,0,0,0,0,0,31,248,0,0,0,0,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,192,0,0,0,0,0,0,63,252,0,0,0,0,0,0,255,255,0,0,0,0,0,3,224,7,192,0,0,0,0,7,128,1,224,0,0,0,0,14,0,0,240,0,0,0,0,28,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,3,1,135,0,0,0,1,192,3,129,195,0,0,0,1,192,3,129,195,128,0,0,3,128,3,129,193,128,0,0,3,128,3,129,193,192,0,0,7,0,3,129,192,224,0,0,30,0,3,1,128,124,0,0,124,0,0,0,0,63,0,1,240,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,224,0,0,0,0,0,24,1,240,0,0,0,0,0,248,0,120,0,0,0,0,7,248,0,56,0,0,0,0,31,240,0,24,0,0,0,0,60,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,128,0,0,1,192,0,0,3,240,0,0,3,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,62,0,0,0,0,15,0,0,112,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,7,128,0,0,0,0,0,224,15,0,0,0,0,0,0,126,62,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,127,254,0,0,0,0,0,1,248,63,128,0,0,0,0,7,192,3,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,7,0,0,0,0,224,0,0,7,0,0,0,0,192,3,129,195,0,0,0,1,192,3,131,195,128,0,0,1,128,7,131,195,128,0,0,3,128,7,131,193,192,0,0,7,0,3,129,193,192,0,0,15,0,3,129,192,248,0,0,62,0,0,0,0,126,0,0,248,0,0,0,0,31,128,1,224,0,0,0,0,3,192,3,192,0,0,0,0,1,224,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,112,0,0,0,0,3,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,0,0,0,1,192,0,0,7,224,0,0,3,128,0,0,3,248,0,0,15,128,0,0,0,124,0,0,30,0,0,0,0,14,0,0,120,0,0,0,0,7,0,0,240,0,0,0,0,3,128,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,248,31,0,0,0,0,0,0,63,252,0,0,0,0,0,0,31,248,0,0,0,0,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,192,0,0,0,0,0,0,63,252,0,0,0,0,0,0,255,255,0,0,0,0,0,3,224,15,192,0,0,0,0,7,128,1,224,0,0,0,0,14,0,0,240,0,0,0,0,28,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,0,0,7,0,0,0,1,192,1,0,131,0,0,0,1,192,7,131,195,128,0,0,3,128,7,195,225,128,0,0,3,128,7,131,193,192,0,0,7,0,1,0,128,224,0,0,30,0,0,0,0,124,0,0,124,0,0,0,0,63,0,1,240,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,224,0,0,0,0,0,24,1,240,0,0,0,0,0,248,0,120,0,0,0,0,7,248,0,56,0,0,0,0,31,240,0,24,0,0,0,0,60,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,128,0,0,1,192,0,0,3,240,0,0,3,128,0,0,0,252,0,0,31,0,0,0,0,62,0,0,62,0,0,0,0,15,0,0,112,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,3,128,0,0,0,0,0,224,15,0,0,0,0,0,0,124,62,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,127,254,0,0,0,0,0,1,252,127,128,0,0,0,0,3,192,3,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,0,0,3,0,0,0,1,192,0,0,3,128,0,0,1,192,7,195,227,128,0,0,3,128,7,195,225,192,0,0,7,0,0,0,1,192,0,0,15,0,0,0,0,240,0,0,62,0,0,0,0,126,0,0,248,0,0,0,0,31,0,1,224,0,0,0,0,3,192,3,192,0,0,0,0,1,224,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,3,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,0,0,0,1,192,0,0,7,192,0,0,3,128,0,0,3,248,0,0,7,128,0,0,0,124,0,0,31,0,0,0,0,30,0,0,124,0,0,0,0,7,0,0,240,0,0,0,0,3,128,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,240,15,0,0,0,0,0,0,63,252,0,0,0,0,0,0,31,248,0,0,0,0,0,0,3,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,31,252,0,0,0,0,0,0,255,255,0,0,0,0,0,3,240,15,128,0,0,0,0,7,128,1,192,0,0,0,0,15,0,0,240,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,224,0,0,7,0,0,0,1,192,0,0,3,0,0,0,1,192,0,0,3,128,0,0,1,128,7,195,225,128,0,0,3,128,0,0,1,192,0,0,7,0,0,0,0,224,0,0,30,0,0,0,0,252,0,0,124,0,0,0,0,62,0,0,240,0,0,0,0,15,128,1,192,0,0,0,0,3,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,3,224,0,0,0,0,0,56,0,112,0,0,0,0,7,248,0,56,0,0,0,0,31,248,0,24,0,0,0,0,28,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,7,128,0,0,1,192,0,0,7,224,0,0,3,128,0,0,1,248,0,0,15,0,0,0,0,60,0,0,62,0,0,0,0,15,0,0,120,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,120,30,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,3,224,0,0,0,0,0,0,127,252,0,0,0,0,0,1,255,255,0,0,0,0,0,3,224,7,192,0,0,0,0,7,128,1,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,48,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,0,0,7,0,0,0,1,192,0,0,3,0,0,0,1,192,1,128,195,128,0,0,3,128,7,195,225,128,0,0,3,128,0,0,1,192,0,0,7,0,0,0,0,224,0,0,30,0,0,0,0,124,0,0,124,0,0,0,0,63,0,1,240,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,28,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,224,0,0,0,0,0,24,1,240,0,0,0,0,1,248,0,120,0,0,0,0,15,248,0,56,0,0,0,0,31,240,0,24,0,0,0,0,60,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,128,0,0,1,192,0,0,3,240,0,0,7,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,60,0,0,0,0,7,0,0,112,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,7,128,0,0,0,0,0,224,15,0,0,0,0,0,0,126,62,0,0,0,0,0,0,63,252,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,7,240,0,0,0,0,0,0,127,254,0,0,0,0,0,1,255,255,128,0,0,0,0,3,192,7,192,0,0,0,0,7,0,1,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,0,0,3,0,0,0,1,192,3,1,131,128,0,0,1,192,7,131,195,128,0,0,3,128,7,195,225,192,0,0,3,128,3,131,193,192,0,0,15,0,0,0,0,240,0,0,62,0,0,0,0,124,0,0,248,0,0,0,0,63,0,1,224,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,1,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,31,224,0,24,0,0,0,0,56,0,0,28,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,14,0,0,0,1,192,0,0,7,192,0,0,3,192,0,0,3,240,0,0,7,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,124,0,0,0,0,7,0,0,112,0,0,0,0,3,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,7,128,0,0,0,0,0,240,15,0,0,0,0,0,0,127,254,0,0,0,0,0,0,31,248,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,15,240,0,0,0,0,0,0,127,254,0,0,0,0,0,1,255,255,128,0,0,0,0,3,192,3,192,0,0,0,0,7,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,24,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,3,1,131,0,0,0,1,192,3,129,195,128,0,0,1,192,7,131,195,128,0,0,3,128,7,131,193,192,0,0,7,128,3,129,193,192,0,0,15,0,3,129,192,240,0,0,62,0,0,0,0,126,0,0,248,0,0,0,0,31,0,1,224,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,3,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,31,128,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,14,0,0,0,1,192,0,0,7,192,0,0,3,192,0,0,3,240,0,0,7,128,0,0,0,124,0,0,31,0,0,0,0,30,0,0,124,0,0,0,0,7,0,0,240,0,0,0,0,3,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,224,7,0,0,0,0,0,0,240,15,0,0,0,0,0,0,127,254,0,0,0,0,0,0,31,248,0,0,0,0,0,0,7,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,7,240,0,0,0,0,0,0,127,254,0,0,0,0,0,1,255,255,128,0,0,0,0,3,192,7,192,0,0,0,0,7,0,1,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,3,1,131,0,0,0,1,192,3,129,195,128,0,0,1,192,3,129,195,128,0,0,3,128,3,131,193,128,0,0,3,128,3,129,193,192,0,0,15,0,3,129,192,240,0,0,62,0,1,0,128,124,0,0,248,0,0,0,0,63,0,1,224,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,1,248,0,120,0,0,0,0,15,248,0,56,0,0,0,0,31,224,0,24,0,0,0,0,56,0,0,28,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,192,0,0,3,192,0,0,3,240,0,0,7,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,124,0,0,0,0,7,0,0,112,0,0,0,0,3,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,7,128,0,0,0,0,0,240,15,0,0,0,0,0,0,127,254,0,0,0,0,0,0,31,248,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,1,192,0,0,0,0,0,0,63,252,0,0,0,0,0,0,255,255,0,0,0,0,0,3,224,15,192,0,0,0,0,7,128,1,224,0,0,0,0,14,0,0,240,0,0,0,0,28,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,3,1,135,0,0,0,1,192,3,129,195,0,0,0,1,192,3,129,195,128,0,0,3,128,3,129,193,128,0,0,3,128,3,129,193,192,0,0,7,0,3,129,192,224,0,0,30,0,3,1,128,124,0,0,124,0,0,0,0,63,0,1,240,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,224,0,0,0,0,0,24,1,240,0,0,0,0,0,248,0,120,0,0,0,0,7,248,0,56,0,0,0,0,31,240,0,24,0,0,0,0,60,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,128,0,0,1,192,0,0,3,240,0,0,3,128,0,0,0,252,0,0,31,0,0,0,0,62,0,0,62,0,0,0,0,15,0,0,112,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,3,128,0,0,0,0,0,224,15,0,0,0,0,0,0,124,62,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,255,254,0,0,0,0,0,3,240,31,128,0,0,0,0,7,128,3,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,7,0,0,0,0,224,1,0,135,0,0,0,1,192,3,129,195,0,0,0,1,192,3,129,195,128,0,0,1,128,3,131,195,128,0,0,3,128,3,129,193,192,0,0,7,0,3,129,193,192,0,0,15,0,3,129,192,248,0,0,62,0,0,0,0,126,0,0,248,0,0,0,0,31,128,1,224,0,0,0,0,3,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,96,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,7,224,0,0,0,0,0,24,0,112,0,0,0,0,7,248,0,56,0,0,0,0,15,248,0,24,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,0,0,0,1,192,0,0,7,224,0,0,3,128,0,0,1,248,0,0,15,0,0,0,0,124,0,0,62,0,0,0,0,14,0,0,120,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,120,30,0,0,0,0,0,0,63,252,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,7,240,0,0,0,0,0,0,127,254,0,0,0,0,0,1,255,255,0,0,0,0,0,3,192,7,192,0,0,0,0,7,0,1,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,48,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,3,1,135,0,0,0,1,192,3,129,195,128,0,0,1,192,3,129,195,128,0,0,3,128,3,131,193,128,0,0,3,128,3,129,193,192,0,0,7,0,3,129,192,240,0,0,30,0,1,1,128,124,0,0,124,0,0,0,0,63,0,1,240,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,28,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,224,0,0,0,0,0,24,0,240,0,0,0,0,1,248,0,120,0,0,0,0,15,248,0,56,0,0,0,0,31,240,0,24,0,0,0,0,60,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,192,0,0,1,192,0,0,3,240,0,0,7,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,124,0,0,0,0,7,0,0,112,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,7,128,0,0,0,0,0,240,15,0,0,0,0,0,0,127,126,0,0,0,0,0,0,63,248,0,0,0,0,0,0,7,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,255,254,0,0,0,0,0,3,240,31,128,0,0,0,0,7,128,3,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,7,0,0,0,0,224,1,0,135,0,0,0,1,192,3,129,195,0,0,0,1,192,3,129,195,128,0,0,1,128,3,131,195,128,0,0,3,128,3,129,193,192,0,0,7,0,3,129,193,192,0,0,15,0,3,129,192,248,0,0,62,0,0,0,0,126,0,0,248,0,0,0,0,31,128,1,224,0,0,0,0,3,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,96,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,7,224,0,0,0,0,0,24,0,112,0,0,0,0,7,248,0,56,0,0,0,0,15,248,0,24,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,0,0,0,1,192,0,0,7,224,0,0,3,128,0,0,1,248,0,0,15,0,0,0,0,124,0,0,62,0,0,0,0,14,0,0,120,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,120,30,0,0,0,0,0,0,63,252,0,0,0,0,0,0,31,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,224,0,0,0,0,0,0,63,252,0,0,0,0,0,0,255,255,0,0,0,0,0,3,224,7,192,0,0,0,0,7,128,1,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,48,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,112,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,3,1,135,0,0,0,1,192,3,129,195,0,0,0,1,192,3,129,195,128,0,0,3,128,3,131,193,128,0,0,3,128,3,129,193,192,0,0,7,0,3,129,192,224,0,0,30,0,3,1,128,124,0,0,124,0,0,0,0,63,0,1,240,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,224,0,0,0,0,0,24,1,240,0,0,0,0,1,248,0,120,0,0,0,0,15,248,0,56,0,0,0,0,31,240,0,24,0,0,0,0,60,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,128,0,0,1,192,0,0,3,240,0,0,7,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,60,0,0,0,0,7,0,0,112,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,192,7,128,0,0,0,0,0,224,15,0,0,0,0,0,0,126,62,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,248,0,0,0,0,0,0,127,254,0,0,0,0,0,1,252,63,128,0,0,0,0,7,192,3,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,1,0,135,0,0,0,0,192,3,129,195,0,0,0,1,192,3,129,195,128,0,0,1,128,3,131,195,128,0,0,3,128,3,129,193,192,0,0,7,0,3,129,193,192,0,0,15,0,3,129,192,248,0,0,62,0,1,0,128,126,0,0,248,0,0,0,0,31,0,1,224,0,0,0,0,3,192,3,192,0,0,0,0,1,224,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,3,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,0,0,0,1,192,0,0,7,224,0,0,3,128,0,0,3,248,0,0,7,128,0,0,0,124,0,0,30,0,0,0,0,14,0,0,124,0,0,0,0,7,0,0,240,0,0,0,0,3,128,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,240,15,0,0,0,0,0,0,63,252,0,0,0,0,0,0,31,248,0,0,0,0,0,0,3,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,63,252,0,0,0,0,0,0,255,255,0,0,0,0,0,3,224,15,192,0,0,0,0,7,128,1,224,0,0,0,0,15,0,0,240,0,0,0,0,30,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,3,1,135,0,0,0,1,192,3,129,195,0,0,0,1,192,3,129,195,128,0,0,1,128,3,129,193,128,0,0,3,128,3,129,193,192,0,0,7,0,3,129,192,224,0,0,30,0,3,1,128,124,0,0,124,0,0,0,0,63,0,0,240,0,0,0,0,15,128,1,192,0,0,0,0,3,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,192,0,0,0,0,0,24,3,240,0,0,0,0,0,120,0,112,0,0,0,0,7,248,0,56,0,0,0,0,31,248,0,24,0,0,0,0,28,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,128,0,0,1,192,0,0,7,240,0,0,3,128,0,0,1,248,0,0,15,0,0,0,0,62,0,0,62,0,0,0,0,15,0,0,120,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,15,0,0,0,0,0,0,124,30,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,127,254,0,0,0,0,0,1,254,255,128,0,0,0,0,3,192,3,192,0,0,0,0,7,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,24,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,28,12,3,0,0,0,1,192,60,30,3,128,0,0,1,192,60,30,3,128,0,0,3,128,60,30,1,192,0,0,7,0,60,30,1,192,0,0,15,0,28,14,0,240,0,0,62,0,24,12,0,126,0,0,248,0,0,0,0,31,0,1,224,0,0,0,0,3,192,3,192,0,0,0,0,1,224,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,3,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,31,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,14,0,0,0,1,192,0,0,7,192,0,0,3,192,0,0,3,248,0,0,7,128,0,0,0,124,0,0,31,0,0,0,0,30,0,0,124,0,0,0,0,7,0,0,240,0,0,0,0,3,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,224,7,0,0,0,0,0,0,240,15,0,0,0,0,0,0,127,254,0,0,0,0,0,0,31,248,0,0,0,0,0,0,7,192,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,63,252,0,0,0,0,0,0,255,255,0,0,0,0,0,3,224,15,192,0,0,0,0,7,128,1,224,0,0,0,0,15,0,0,240,0,0,0,0,30,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,192,96,7,0,0,0,1,192,192,96,3,0,0,0,1,193,224,240,3,128,0,0,1,129,224,240,1,128,0,0,3,129,224,240,1,192,0,0,7,1,192,224,0,224,0,0,30,0,192,96,0,124,0,0,124,0,0,0,0,63,0,0,240,0,0,0,0,15,128,1,192,0,0,0,0,3,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,31,192,0,0,0,0,0,24,3,240,0,0,0,0,0,120,0,112,0,0,0,0,7,248,0,56,0,0,0,0,31,248,0,24,0,0,0,0,28,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,192,0,0,7,128,0,0,1,192,0,0,7,240,0,0,3,128,0,0,1,248,0,0,15,0,0,0,0,62,0,0,62,0,0,0,0,15,0,0,120,0,0,0,0,7,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,15,0,0,0,0,0,0,124,30,0,0,0,0,0,0,63,252,0,0,0,0,0,0,15,240,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,248,0,0,0,0,0,0,127,254,0,0,0,0,0,1,248,63,128,0,0,0,0,7,192,3,192,0,0,0,0,15,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,56,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,7,0,0,0,0,224,192,64,7,0,0,0,0,192,192,96,3,0,0,0,1,193,224,240,3,128,0,0,1,129,224,240,3,128,0,0,3,129,224,240,1,192,0,0,7,1,224,240,1,192,0,0,15,0,192,96,0,248,0,0,62,0,192,96,0,126,0,0,248,0,0,0,0,31,128,1,224,0,0,0,0,3,192,3,192,0,0,0,0,1,224,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,48,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,31,0,0,0,0,0,0,24,31,192,0,0,0,0,0,24,15,224,0,0,0,0,0,56,0,112,0,0,0,0,3,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,30,0,0,24,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,15,0,0,0,1,192,0,0,7,224,0,0,3,128,0,0,3,248,0,0,15,128,0,0,0,124,0,0,30,0,0,0,0,14,0,0,120,0,0,0,0,7,0,0,240,0,0,0,0,3,128,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,0,224,7,0,0,0,0,0,0,248,31,0,0,0,0,0,0,63,252,0,0,0,0,0,0,31,240,0,0,0,0,0,0,1,128,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,0,0,0,0,0,0,127,254,0,0,0,0,0,1,255,255,128,0,0,0,0,3,192,3,192,0,0,0,0,7,0,0,224,0,0,0,0,14,0,0,112,0,0,0,0,28,0,0,56,0,0,0,0,24,0,0,56,0,0,0,0,56,0,0,28,0,0,0,0,48,0,0,28,0,0,0,0,112,0,0,14,0,0,0,0,96,0,0,14,0,0,0,0,224,0,0,6,0,0,0,0,224,0,0,7,0,0,0,0,192,192,96,3,0,0,0,1,193,224,240,3,128,0,0,1,193,224,240,3,128,0,0,3,129,224,240,1,192,0,0,7,129,224,240,1,192,0,0,15,0,192,224,0,240,0,0,62,0,192,96,0,126,0,0,248,0,0,0,0,63,0,1,224,0,0,0,0,7,128,3,192,0,0,0,0,1,192,7,128,0,0,0,0,0,224,7,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,12,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,28,0,0,0,0,0,0,56,24,0,0,0,0,0,0,24,24,0,0,0,0,0,0,24,30,0,0,0,0,0,0,24,31,128,0,0,0,0,0,24,15,224,0,0,0,0,0,24,0,240,0,0,0,0,1,248,0,56,0,0,0,0,15,248,0,56,0,0,0,0,31,192,0,24,0,0,0,0,56,0,0,28,0,0,0,0,56,0,0,28,0,0,0,0,112,0,0,28,0,0,0,0,112,0,0,12,0,0,0,0,96,0,0,12,0,0,0,0,224,0,0,14,0,0,0,0,224,0,0,14,0,0,0,1,192,0,0,7,192,0,0,3,192,0,0,3,240,0,0,7,128,0,0,0,252,0,0,31,0,0,0,0,30,0,0,124,0,0,0,0,7,0,0,112,0,0,0,0,3,0,0,224,0,0,0,0,3,128,1,192,0,0,0,0,1,192,3,128,0,0,0,0,1,224,7,128,0,0,0,0,0,240,15,0,0,0,0,0,0,127,254,0,0,0,0,0,0,31,248,0,0,0,0,0,0,7,224,0,0,0}
};
const byte PROGMEM first_frames[][512] = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,252,28,224,0,0,3,157,255,255,152,224,0,0,1,159,248,15,249,192,0,0,1,223,193,1,249,192,0,0,0,255,17,16,123,128,0,0,0,252,17,17,31,0,0,0,0,249,128,3,15,0,0,0,0,240,128,0,39,0,0,0,1,232,0,0,99,128,0,0,3,196,0,0,1,192,0,0,3,128,0,0,5,192,0,0,7,160,0,224,8,224,0,0,7,48,1,224,0,224,0,0,15,0,3,224,0,112,0,0,14,0,31,224,3,112,0,0,14,192,31,224,0,112,0,0,14,0,31,224,0,48,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,184,0,0,28,192,1,224,0,56,0,0,28,0,1,224,0,56,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,176,0,0,14,192,1,224,0,48,0,0,14,0,1,224,0,112,0,0,14,0,1,224,6,112,0,0,7,16,1,224,2,96,0,0,7,96,1,224,0,224,0,0,7,128,1,224,16,224,0,0,3,132,0,0,9,192,0,0,3,200,0,0,1,192,0,0,1,224,0,0,67,128,0,0,0,225,0,0,103,0,0,0,0,249,16,2,14,0,0,0,0,124,50,34,30,0,0,0,0,31,34,32,120,0,0,0,0,15,192,1,240,0,0,0,0,7,252,15,224,0,0,0,0,1,255,255,128,0,0,0,0,0,63,252,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,252,28,224,0,0,3,157,255,255,152,224,0,0,1,159,248,15,249,192,0,0,1,223,193,1,249,192,0,0,0,255,17,16,123,128,0,0,0,252,17,17,31,0,0,0,0,249,128,3,15,0,0,0,0,240,128,0,39,0,0,0,1,232,0,0,99,128,0,0,3,196,0,0,1,192,0,0,3,128,0,0,5,192,0,0,7,160,0,224,8,224,0,0,7,48,1,224,0,224,0,0,15,0,3,224,0,112,0,0,14,0,31,224,3,112,0,0,14,192,31,224,0,112,0,0,14,0,31,224,0,48,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,184,0,0,28,192,1,224,0,56,0,0,28,0,1,224,0,56,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,176,0,0,14,192,1,224,0,48,0,0,14,0,1,224,0,112,0,0,14,0,1,224,6,112,0,0,7,16,1,224,2,96,0,0,7,96,1,224,0,224,0,0,7,128,1,224,16,224,0,0,3,132,0,0,9,192,0,0,3,200,0,0,1,192,0,0,1,224,0,0,67,128,0,0,0,225,0,0,103,0,0,0,0,249,16,2,14,0,0,0,0,124,50,34,30,0,0,0,0,31,34,32,120,0,0,0,0,15,192,1,240,0,0,0,0,7,252,15,224,0,0,0,0,1,255,255,128,0,0,0,0,0,63,252,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,252,28,224,0,0,3,157,255,255,152,224,0,0,1,159,248,15,249,192,0,0,1,223,193,1,249,192,0,0,0,255,17,16,123,128,0,0,0,252,17,17,31,0,0,0,0,249,128,3,15,0,0,0,0,240,128,0,39,0,0,0,1,232,0,0,99,128,0,0,3,196,0,0,1,192,0,0,3,128,0,0,5,192,0,0,7,160,0,224,8,224,0,0,7,48,1,224,0,224,0,0,15,0,3,224,0,112,0,0,14,0,31,224,3,112,0,0,14,192,31,224,0,112,0,0,14,0,31,224,0,48,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,184,0,0,28,192,1,224,0,56,0,0,28,0,1,224,0,56,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,176,0,0,14,192,1,224,0,48,0,0,14,0,1,224,0,112,0,0,14,0,1,224,6,112,0,0,7,16,1,224,2,96,0,0,7,96,1,224,0,224,0,0,7,128,1,224,16,224,0,0,3,132,0,0,9,192,0,0,3,200,0,0,1,192,0,0,1,224,0,0,67,128,0,0,0,225,0,0,103,0,0,0,0,249,16,2,14,0,0,0,0,124,50,34,30,0,0,0,0,31,34,32,120,0,0,0,0,15,192,1,240,0,0,0,0,7,252,15,224,0,0,0,0,1,255,255,128,0,0,0,0,0,63,252,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,252,28,224,0,0,3,157,255,255,152,224,0,0,1,159,248,15,249,192,0,0,1,223,193,1,249,192,0,0,0,255,17,16,123,128,0,0,0,252,17,17,31,0,0,0,0,249,128,3,15,0,0,0,0,240,128,0,39,0,0,0,1,232,0,0,99,128,0,0,3,196,0,0,1,192,0,0,3,128,0,0,5,192,0,0,7,160,0,224,8,224,0,0,7,48,1,224,0,224,0,0,15,0,3,224,0,112,0,0,14,0,31,224,3,112,0,0,14,192,31,224,0,112,0,0,14,0,31,224,0,48,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,184,0,0,28,192,1,224,0,56,0,0,28,0,1,224,0,56,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,176,0,0,14,192,1,224,0,48,0,0,14,0,1,224,0,112,0,0,14,0,1,224,6,112,0,0,7,16,1,224,2,96,0,0,7,96,1,224,0,224,0,0,7,128,1,224,16,224,0,0,3,132,0,0,9,192,0,0,3,200,0,0,1,192,0,0,1,224,0,0,67,128,0,0,0,225,0,0,103,0,0,0,0,249,16,2,14,0,0,0,0,124,50,34,30,0,0,0,0,31,34,32,120,0,0,0,0,15,192,1,240,0,0,0,0,7,252,15,224,0,0,0,0,1,255,255,128,0,0,0,0,0,63,252,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,231,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,206,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,252,28,224,0,0,3,157,255,255,152,224,0,0,1,159,248,15,249,192,0,0,1,207,193,1,241,128,0,0,1,255,17,16,123,128,0,0,0,252,17,17,31,0,0,0,0,248,128,2,15,0,0,0,0,240,128,0,39,0,0,0,1,236,0,0,99,128,0,0,1,196,0,0,3,128,0,0,3,128,0,0,1,192,0,0,7,160,0,224,24,192,0,0,7,16,1,224,0,224,0,0,7,0,3,224,0,96,0,0,15,0,31,224,6,96,0,0,14,96,31,224,0,112,0,0,14,32,31,224,0,112,0,0,14,0,1,224,0,112,0,0,14,0,1,224,3,48,0,0,14,192,1,224,0,48,0,0,14,0,1,224,0,48,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,112,0,0,14,224,1,224,0,112,0,0,14,0,1,224,0,112,0,0,15,0,1,224,4,96,0,0,7,16,1,224,2,224,0,0,7,32,1,224,0,224,0,0,7,128,1,192,16,192,0,0,3,132,0,0,9,192,0,0,3,204,0,0,3,128,0,0,1,224,0,0,199,128,0,0,0,241,128,0,71,0,0,0,0,249,16,6,14,0,0,0,0,124,18,34,60,0,0,0,0,31,2,32,120,0,0,0,0,15,192,1,240,0,0,0,0,7,252,15,192,0,0,0,0,1,255,255,0,0,0,0,0,0,63,248,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,14,48,7,56,3,56,28,224,14,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,227,128,0,103,0,115,198,0,231,0,0,115,128,51,206,1,199,0,0,51,128,59,140,1,206,0,0,57,192,27,156,3,142,0,0,24,192,31,24,3,156,0,0,28,224,15,56,7,24,0,0,12,96,14,48,7,56,0,0,14,112,14,112,14,48,0,0,6,48,12,96,14,112,0,0,7,56,31,224,28,224,0,0,3,24,127,252,28,224,0,0,3,157,255,255,57,192,0,0,1,143,248,15,249,192,0,0,1,207,193,1,243,128,0,0,0,255,17,16,123,128,0,0,0,252,25,19,63,0,0,0,0,248,128,2,14,0,0,0,0,240,128,0,6,0,0,0,1,228,0,0,71,0,0,0,1,198,0,0,3,128,0,0,3,192,0,0,9,128,0,0,7,128,0,224,25,192,0,0,7,152,1,224,0,192,0,0,7,0,3,224,0,224,0,0,15,0,31,224,6,224,0,0,15,96,31,224,0,96,0,0,14,0,31,224,0,96,0,0,14,0,1,224,0,96,0,0,14,0,1,224,7,96,0,0,14,224,1,224,0,96,0,0,14,0,1,224,0,112,0,0,14,0,1,224,0,96,0,0,14,0,1,224,7,96,0,0,14,96,1,224,0,96,0,0,15,0,1,224,0,96,0,0,15,0,1,224,4,224,0,0,7,16,1,224,4,224,0,0,7,176,1,224,0,192,0,0,7,128,1,192,17,192,0,0,3,196,0,0,25,128,0,0,1,204,0,0,3,128,0,0,1,224,0,0,135,0,0,0,0,240,128,0,78,0,0,0,0,121,16,4,30,0,0,0,0,60,16,34,60,0,0,0,0,31,18,32,120,0,0,0,0,15,192,1,240,0,0,0,0,7,252,15,192,0,0,0,0,1,255,255,0,0,0,0,0,0,127,248,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,115,128,0,231,0,103,231,0,227,128,0,103,0,115,198,0,231,0,0,115,128,51,206,1,199,0,0,51,128,59,140,1,142,0,0,57,192,27,156,3,156,0,0,24,192,31,24,3,28,0,0,28,224,15,56,7,56,0,0,12,96,14,48,6,56,0,0,14,112,14,112,14,112,0,0,6,56,12,96,12,96,0,0,7,56,31,224,28,224,0,0,3,156,127,252,57,192,0,0,3,157,255,255,49,192,0,0,1,207,248,15,243,128,0,0,1,207,193,1,243,128,0,0,0,255,17,16,119,0,0,0,0,252,9,18,62,0,0,0,0,248,128,2,30,0,0,0,0,240,64,0,78,0,0,0,1,228,0,0,71,0,0,0,3,226,0,0,3,0,0,0,3,192,0,0,11,128,0,0,7,208,0,224,17,128,0,0,7,152,1,224,1,192,0,0,7,128,3,224,0,192,0,0,15,0,15,224,6,192,0,0,15,32,31,224,0,224,0,0,15,0,31,224,0,224,0,0,15,0,1,224,0,96,0,0,15,0,1,224,6,96,0,0,15,96,1,224,0,96,0,0,15,0,1,224,0,96,0,0,15,0,1,224,0,96,0,0,15,0,1,224,6,96,0,0,15,96,1,224,0,224,0,0,15,0,1,224,0,224,0,0,15,0,1,224,12,192,0,0,7,152,1,224,4,192,0,0,7,144,1,224,1,192,0,0,7,192,1,192,1,128,0,0,3,192,0,0,19,128,0,0,3,228,0,0,3,0,0,0,1,240,0,0,135,0,0,0,0,240,128,0,78,0,0,0,0,121,16,4,28,0,0,0,0,124,16,38,56,0,0,0,0,31,18,32,112,0,0,0,0,15,192,1,224,0,0,0,0,7,252,15,192,0,0,0,0,1,255,255,0,0,0,0,0,0,127,248,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,96,3,156,1,156,57,192,56,224,1,140,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,198,0,231,99,0,115,128,0,231,0,103,231,0,227,0,0,99,0,115,198,0,199,0,0,115,128,51,206,1,206,0,0,57,128,59,140,3,142,0,0,57,192,27,156,3,156,0,0,28,192,31,24,7,24,0,0,28,224,15,56,7,56,0,0,14,96,14,48,14,112,0,0,6,112,14,112,12,112,0,0,7,56,12,96,28,224,0,0,3,56,31,224,56,192,0,0,3,156,127,252,57,192,0,0,1,143,255,255,115,128,0,0,1,207,248,15,227,128,0,0,0,223,193,1,231,0,0,0,0,255,9,16,126,0,0,0,0,254,9,2,62,0,0,0,0,252,128,2,28,0,0,0,0,248,64,0,78,0,0,0,1,244,0,0,70,0,0,0,3,226,0,0,7,0,0,0,3,192,0,0,19,0,0,0,7,192,0,224,51,128,0,0,7,152,1,224,1,128,0,0,7,128,3,224,1,192,0,0,15,128,15,224,12,192,0,0,15,176,31,224,8,192,0,0,15,16,31,224,0,192,0,0,15,0,1,224,0,192,0,0,15,0,1,224,6,192,0,0,15,96,1,224,0,192,0,0,15,0,1,224,0,192,0,0,15,0,1,224,0,192,0,0,15,0,1,224,6,192,0,0,15,48,1,224,0,192,0,0,15,128,1,224,0,192,0,0,15,128,1,224,9,192,0,0,7,136,1,224,5,192,0,0,7,208,1,224,1,128,0,0,7,192,0,192,35,128,0,0,3,226,0,0,19,0,0,0,3,228,0,0,7,0,0,0,1,240,0,0,142,0,0,0,0,248,128,0,206,0,0,0,0,124,144,4,28,0,0,0,0,126,17,36,56,0,0,0,0,63,18,32,240,0,0,0,0,31,192,1,224,0,0,0,0,7,252,15,128,0,0,0,0,3,255,255,0,0,0,0,0,0,127,248,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,96,3,156,1,156,57,192,56,224,1,204,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,230,0,231,99,0,99,128,0,231,0,103,231,0,231,0,0,115,0,115,198,1,199,0,0,115,128,51,206,1,206,0,0,57,192,59,140,3,156,0,0,25,192,27,156,7,28,0,0,28,224,31,24,7,56,0,0,12,96,15,56,14,48,0,0,14,112,14,48,14,112,0,0,7,48,14,112,28,224,0,0,7,56,12,96,56,224,0,0,3,152,31,224,57,192,0,0,3,156,255,248,115,128,0,0,1,207,255,255,227,128,0,0,1,207,248,15,231,0,0,0,0,255,193,1,238,0,0,0,0,255,9,16,254,0,0,0,0,126,9,34,60,0,0,0,0,252,200,2,28,0,0,0,1,248,64,0,92,0,0,0,1,242,0,0,206,0,0,0,3,226,0,0,7,0,0,0,3,224,0,0,23,0,0,0,7,192,0,192,51,0,0,0,7,204,1,192,3,128,0,0,7,192,1,192,1,128,0,0,15,128,15,192,13,128,0,0,15,176,31,192,1,192,0,0,15,128,31,192,0,192,0,0,15,128,1,192,0,192,0,0,15,128,1,192,14,192,0,0,15,176,1,192,0,192,0,0,15,0,1,192,0,192,0,0,15,128,1,192,0,192,0,0,15,128,1,192,12,192,0,0,15,176,1,192,0,192,0,0,15,128,1,192,1,192,0,0,15,128,1,192,9,128,0,0,7,200,1,192,9,128,0,0,7,216,1,192,3,128,0,0,7,192,0,192,35,0,0,0,3,226,0,0,55,0,0,0,3,246,0,0,6,0,0,0,1,240,0,0,142,0,0,0,0,248,128,0,156,0,0,0,0,252,128,4,56,0,0,0,0,126,17,36,120,0,0,0,0,63,16,32,240,0,0,0,0,31,192,1,224,0,0,0,0,15,252,15,128,0,0,0,0,3,255,255,0,0,0,0,0,0,127,248,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,57,192,1,206,0,206,115,128,115,128,0,230,0,231,99,0,227,128,0,231,0,103,231,0,231,0,0,115,128,115,198,1,206,0,0,51,128,51,206,3,142,0,0,57,192,59,140,3,156,0,0,28,192,27,156,7,56,0,0,28,224,31,24,14,56,0,0,14,96,15,56,14,112,0,0,14,112,14,48,28,224,0,0,7,56,14,112,56,224,0,0,7,56,12,96,57,192,0,0,3,156,31,224,115,128,0,0,1,140,255,248,99,128,0,0,1,207,255,255,231,0,0,0,0,239,248,15,206,0,0,0,0,255,193,1,206,0,0,0,0,127,9,0,252,0,0,0,0,126,9,34,120,0,0,0,0,252,72,4,56,0,0,0,1,248,64,0,28,0,0,0,1,250,0,0,142,0,0,0,3,243,0,0,6,0,0,0,3,224,0,0,23,0,0,0,7,232,0,192,35,0,0,0,6,204,0,192,3,0,0,0,6,192,1,192,3,128,0,0,15,192,15,192,9,128,0,0,13,144,15,192,1,128,0,0,13,128,15,192,1,128,0,0,13,128,1,192,1,128,0,0,13,128,1,192,13,128,0,0,13,176,1,192,1,128,0,0,13,128,1,192,1,128,0,0,13,128,1,192,1,128,0,0,13,128,1,192,13,128,0,0,13,176,1,192,1,128,0,0,15,128,1,192,1,128,0,0,14,192,1,192,25,128,0,0,14,200,1,192,11,128,0,0,7,200,1,192,3,0,0,0,7,224,0,192,7,0,0,0,3,98,0,0,38,0,0,0,3,246,0,0,14,0,0,0,1,248,0,1,12,0,0,0,1,248,64,0,156,0,0,0,0,252,128,4,56,0,0,0,0,126,17,36,112,0,0,0,0,63,17,32,224,0,0,0,0,31,192,3,192,0,0,0,0,15,252,15,128,0,0,0,0,3,255,254,0,0,0,0,0,0,255,248,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,230,0,231,99,0,227,128,0,103,0,103,231,1,199,0,0,115,128,115,198,1,206,0,0,57,128,51,206,3,156,0,0,57,192,59,140,7,28,0,0,28,192,27,156,7,56,0,0,28,224,31,24,14,112,0,0,14,112,15,56,28,112,0,0,6,48,14,48,28,224,0,0,7,56,14,112,57,192,0,0,3,152,12,96,113,192,0,0,3,156,31,224,115,128,0,0,1,207,255,248,231,0,0,0,1,207,255,255,206,0,0,0,0,239,248,15,206,0,0,0,0,127,193,3,220,0,0,0,0,127,137,32,248,0,0,1,192,127,9,34,120,14,0,1,224,254,64,4,56,30,0,0,241,220,64,0,152,60,0,0,33,186,0,0,140,48,0,0,3,177,0,0,14,0,0,0,3,112,0,0,6,0,0,0,7,96,0,192,38,0,0,0,6,236,0,192,3,0,0,0,6,192,1,192,3,0,0,0,14,192,15,192,27,0,0,0,12,216,15,192,17,128,0,0,12,200,15,192,1,128,0,0,12,192,1,192,1,128,0,0,13,128,1,192,13,128,0,0,13,152,1,192,1,128,0,3,205,128,1,192,1,159,0,3,204,128,1,192,1,159,0,0,12,192,1,192,13,128,0,0,12,216,1,192,1,128,0,0,14,192,1,192,3,128,0,0,14,192,1,192,19,0,0,0,14,196,1,192,27,0,0,0,6,104,1,192,3,0,0,0,7,96,0,192,70,0,0,0,3,112,0,0,38,0,0,0,3,178,0,0,14,0,0,0,1,184,0,1,28,0,0,0,1,220,64,0,152,0,0,0,0,236,136,4,56,0,0,0,48,126,1,36,112,112,0,0,120,63,145,32,224,120,0,1,240,31,192,3,192,60,0,1,192,15,248,15,128,14,0,0,0,7,255,254,0,0,0,0,0,0,255,248,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,199,0,0,115,128,115,198,3,142,0,0,57,128,51,206,3,156,0,0,57,192,59,140,7,56,0,0,28,224,27,156,14,56,0,0,12,96,31,24,14,112,0,0,14,112,15,56,28,224,0,0,7,48,14,48,56,224,0,0,7,56,14,112,113,192,0,0,3,156,12,96,115,128,0,0,1,140,31,224,231,0,0,0,1,207,255,249,199,0,0,224,0,239,255,255,206,0,28,240,0,255,252,15,156,0,60,60,0,127,192,3,248,0,240,31,0,127,137,32,248,3,224,7,0,247,9,32,112,3,128,1,0,238,64,4,112,2,0,0,1,220,0,0,184,0,0,0,3,152,0,0,156,0,0,0,3,185,0,0,12,0,0,0,3,48,0,0,46,0,0,0,7,112,0,192,102,0,0,0,6,100,0,192,6,0,0,0,6,96,1,192,3,0,0,0,14,224,15,192,27,0,0,0,12,200,15,192,3,0,0,0,12,192,15,192,3,0,0,0,12,192,1,192,3,0,0,0,12,192,1,192,27,0,0,0,12,216,1,192,3,0,0,255,12,192,1,192,3,3,252,255,12,192,1,192,3,3,252,0,12,192,1,192,27,0,0,0,12,216,1,192,3,0,0,0,14,192,1,192,3,0,0,0,14,96,1,192,19,0,0,0,14,100,1,192,23,0,0,0,6,108,1,192,6,0,0,0,7,112,0,192,70,0,0,0,3,49,0,0,110,0,0,0,3,187,0,0,12,0,0,0,3,152,0,1,28,0,0,0,1,220,64,1,184,0,0,0,0,238,8,8,112,0,0,0,0,247,9,36,240,0,0,0,0,123,129,33,224,0,0,1,0,63,192,3,192,6,0,7,128,31,248,15,0,7,128,15,0,7,255,254,0,3,192,62,0,1,255,240,0,1,240,120,0,0,31,0,0,0,120,240,0,0,0,0,0,0,60,64,0,0,0,0,0,0,8},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,243,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,207,0,0,115,128,115,198,3,142,0,0,57,192,51,206,3,156,0,0,25,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,96,31,24,28,112,0,0,14,112,15,56,28,224,0,0,7,56,14,48,57,192,0,0,3,24,14,112,115,128,0,0,3,156,12,96,227,128,0,0,1,204,31,224,231,0,0,0,1,207,255,249,206,0,0,224,0,239,255,255,156,0,28,240,0,127,248,31,156,0,60,60,0,125,224,3,248,0,240,30,0,123,137,33,240,1,224,4,0,247,9,36,240,0,128,0,0,238,64,4,112,0,0,0,1,204,32,0,48,0,0,0,3,157,0,1,24,0,0,0,3,25,0,0,28,0,0,0,3,48,0,0,44,0,0,0,7,52,0,192,76,0,0,0,6,38,0,192,6,0,0,0,6,96,1,192,6,0,0,0,14,96,15,192,22,0,0,0,12,104,15,192,3,0,0,0,12,96,15,192,3,0,0,0,12,64,1,192,3,0,0,0,12,64,0,192,27,0,0,0,12,216,0,192,3,0,0,252,12,192,0,192,3,0,252,252,12,64,0,192,3,0,252,0,12,64,0,192,27,0,0,0,12,104,0,192,3,0,0,0,12,96,0,192,2,0,0,0,14,96,0,192,38,0,0,0,14,100,0,192,22,0,0,0,6,116,0,192,6,0,0,0,7,48,0,192,12,0,0,0,7,49,0,0,76,0,0,0,3,27,0,0,28,0,0,0,3,152,0,1,24,0,0,0,1,204,64,1,48,0,0,0,0,198,72,8,112,0,0,0,0,231,9,36,224,0,0,0,0,123,129,33,192,0,0,0,0,61,224,3,128,0,0,2,0,31,252,31,0,1,0,14,0,7,255,254,0,1,192,62,0,1,255,248,0,1,240,120,0,0,23,0,0,0,120,224,0,0,0,0,0,0,28,0,0,0,0,0,0,0,8},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,227,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,206,0,0,115,128,115,198,3,142,0,0,57,192,51,206,7,28,0,0,28,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,96,31,24,28,240,0,0,14,112,15,56,56,224,0,0,7,56,14,48,57,192,0,0,3,152,14,112,115,128,0,0,3,156,12,96,231,0,0,0,1,206,63,225,199,0,0,0,1,199,255,249,206,0,0,224,0,239,255,255,156,0,24,240,0,127,248,31,56,0,60,112,0,125,224,3,248,0,56,0,0,115,137,33,240,0,0,0,0,231,9,36,224,0,0,0,0,230,32,4,96,0,0,0,1,204,32,0,48,0,0,0,3,141,0,1,56,0,0,0,3,24,128,0,24,0,0,0,7,24,0,0,12,0,0,0,6,48,0,192,76,0,0,0,6,50,0,192,12,0,0,0,14,48,1,192,6,0,0,0,14,32,7,192,54,0,0,0,12,108,15,192,6,0,0,0,12,100,15,192,6,0,0,0,12,96,1,192,6,0,0,0,12,96,0,192,22,0,0,0,12,108,0,192,2,0,0,240,12,96,0,192,2,0,60,240,12,96,0,192,2,0,60,0,12,96,0,192,22,0,0,0,12,108,0,192,6,0,0,0,12,96,0,192,6,0,0,0,14,32,0,192,38,0,0,0,14,50,0,192,36,0,0,0,6,52,0,192,12,0,0,0,7,48,0,192,12,0,0,0,7,24,0,0,72,0,0,0,3,25,0,0,24,0,0,0,3,140,0,0,56,0,0,0,1,204,64,1,48,0,0,0,0,198,72,8,96,0,0,0,0,227,9,8,224,0,0,0,0,115,129,33,192,0,0,0,0,61,224,7,128,0,0,0,0,31,252,31,0,0,0,0,0,15,255,254,0,0,0,48,0,3,255,248,0,0,48,240,0,0,39,0,0,0,56,240,0,0,0,0,0,0,28,64,0,0,0,0,0,0,8},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,227,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,206,0,0,115,128,115,198,3,158,0,0,57,192,51,206,7,28,0,0,28,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,112,31,24,28,224,0,0,14,112,15,56,56,224,0,0,7,56,14,48,121,192,0,0,3,152,14,112,115,128,0,0,3,156,12,96,231,0,0,0,1,206,63,225,207,0,0,0,0,199,255,251,206,0,0,0,0,239,255,255,156,0,0,0,0,127,248,31,56,0,0,0,0,124,224,7,240,0,0,0,0,113,201,33,240,0,0,0,0,227,129,36,224,0,0,0,0,199,32,0,224,0,0,0,1,198,32,1,48,0,0,0,3,140,0,1,48,0,0,0,3,12,128,0,24,0,0,0,7,24,0,0,88,0,0,0,6,24,0,192,200,0,0,0,6,18,0,192,12,0,0,0,14,48,1,192,12,0,0,0,14,48,7,192,44,0,0,0,12,52,15,192,6,0,0,0,12,32,15,192,6,0,0,0,12,32,1,192,6,0,0,0,12,32,0,192,54,0,0,0,12,44,0,192,6,0,0,0,12,96,0,192,6,0,0,0,12,32,0,192,6,0,0,0,12,32,0,192,54,0,0,0,12,44,0,192,6,0,0,0,12,48,0,192,4,0,0,0,14,48,0,192,36,0,0,0,14,50,0,192,44,0,0,0,6,50,0,192,12,0,0,0,7,24,0,192,136,0,0,0,7,24,0,0,88,0,0,0,3,13,0,0,24,0,0,0,3,140,0,2,48,0,0,0,1,198,32,1,112,0,0,0,0,199,72,8,96,0,0,0,0,227,9,72,192,0,0,0,0,113,201,1,192,0,0,0,0,60,224,7,128,0,0,0,0,31,252,31,0,0,0,0,0,15,255,252,0,0,0,0,0,3,255,240,0,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,227,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,206,0,0,115,128,115,198,3,142,0,0,57,192,51,206,7,28,0,0,28,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,96,31,24,28,240,0,0,14,112,15,56,56,224,0,0,7,56,14,48,57,192,0,0,3,152,14,112,115,128,0,0,3,156,12,96,231,0,0,0,1,206,63,225,199,0,0,0,0,199,255,249,206,0,0,0,0,239,255,255,156,0,0,0,0,127,248,31,56,0,0,0,0,125,224,7,248,0,0,0,0,115,137,33,240,0,0,0,0,227,9,36,224,0,0,0,0,230,32,4,96,0,0,0,1,206,32,0,48,0,0,0,3,141,0,1,56,0,0,0,3,24,128,0,24,0,0,0,7,24,0,0,72,0,0,0,6,48,0,192,76,0,0,0,6,50,0,192,12,0,0,0,14,48,1,192,6,0,0,0,14,32,7,192,54,0,0,0,12,108,15,192,6,0,0,0,12,100,15,192,6,0,0,0,12,96,1,192,6,0,0,0,12,96,0,192,22,0,0,0,12,108,0,192,6,0,0,0,12,96,0,192,2,0,0,0,12,96,0,192,6,0,0,0,12,96,0,192,22,0,0,0,12,108,0,192,6,0,0,0,12,96,0,192,6,0,0,0,14,48,0,192,38,0,0,0,14,50,0,192,36,0,0,0,6,52,0,192,12,0,0,0,7,48,0,192,12,0,0,0,7,24,0,0,72,0,0,0,3,25,0,0,24,0,0,0,3,140,0,0,56,0,0,0,1,204,0,1,48,0,0,0,0,198,72,8,96,0,0,0,0,227,9,8,224,0,0,0,0,113,129,33,192,0,0,0,0,61,224,7,128,0,0,0,0,31,252,31,0,0,0,0,0,15,255,252,0,0,0,0,0,3,255,248,0,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,57,224,1,204,1,206,49,128,113,192,0,206,0,206,115,128,227,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,206,0,0,115,128,115,198,3,142,0,0,57,192,51,206,7,156,0,0,25,192,59,140,7,56,0,0,28,224,27,156,14,112,0,0,14,96,31,24,28,112,0,0,14,112,15,56,60,224,0,0,7,56,14,48,57,192,0,0,3,152,14,112,115,128,0,0,3,156,12,96,227,128,0,0,1,206,63,224,231,0,0,0,1,207,255,249,206,0,0,0,0,239,255,255,156,0,0,0,0,127,248,31,188,0,0,0,0,125,224,3,248,0,0,0,0,123,137,33,240,0,0,0,0,231,9,36,224,0,0,0,0,230,64,4,112,0,0,0,1,204,32,0,48,0,0,0,3,157,0,1,24,0,0,0,3,25,0,0,24,0,0,0,7,48,0,0,12,0,0,0,7,52,0,192,76,0,0,0,6,54,0,192,6,0,0,0,6,32,1,192,6,0,0,0,14,96,15,192,54,0,0,0,12,104,15,192,6,0,0,0,12,100,15,192,3,0,0,0,12,96,1,192,3,0,0,0,12,96,0,192,27,0,0,0,12,72,0,192,3,0,0,0,12,64,0,192,3,0,0,0,12,96,0,192,3,0,0,0,12,96,0,192,27,0,0,0,12,108,0,192,2,0,0,0,12,96,0,192,2,0,0,0,14,96,0,192,38,0,0,0,14,98,0,192,22,0,0,0,6,52,0,192,6,0,0,0,7,48,0,192,12,0,0,0,7,49,0,0,76,0,0,0,3,25,0,0,24,0,0,0,3,156,0,0,24,0,0,0,1,204,64,1,48,0,0,0,0,198,72,8,112,0,0,0,0,231,9,4,224,0,0,0,0,123,129,33,192,0,0,0,0,61,224,3,128,0,0,0,0,31,252,31,0,0,0,0,0,7,255,254,0,0,0,0,0,1,255,248,0,0,0,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,152,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,231,0,231,99,0,231,0,0,115,0,103,231,1,199,0,0,115,128,115,198,3,142,0,0,57,128,51,206,3,156,0,0,57,192,59,140,7,56,0,0,28,224,27,156,14,56,0,0,14,96,31,24,28,112,0,0,14,112,15,56,28,224,0,0,7,56,14,48,57,192,0,0,7,56,14,112,113,192,0,0,3,156,12,96,115,128,0,0,1,204,31,224,231,0,0,0,1,207,255,249,206,0,0,0,0,239,255,255,142,0,0,0,0,255,252,15,156,0,0,0,0,125,192,3,248,0,0,0,0,123,137,32,240,0,0,0,0,247,9,36,112,0,0,0,0,238,64,4,112,0,0,0,1,204,32,0,184,0,0,0,3,152,0,1,152,0,0,0,3,185,0,0,12,0,0,0,3,48,0,0,44,0,0,0,7,52,0,192,102,0,0,0,6,102,0,192,6,0,0,0,6,96,1,192,6,0,0,0,14,96,15,192,19,0,0,0,12,232,15,192,3,0,0,0,12,192,15,192,3,0,0,0,12,192,1,192,3,0,0,0,12,192,1,192,27,0,0,0,12,216,1,192,3,0,0,0,12,192,1,192,3,0,0,0,12,192,1,192,3,0,0,0,12,192,1,192,27,0,0,0,12,216,1,192,3,0,0,0,14,64,1,192,3,0,0,0,14,96,1,192,51,0,0,0,14,100,1,192,22,0,0,0,6,100,1,192,6,0,0,0,7,48,0,192,70,0,0,0,7,49,0,0,108,0,0,0,3,59,0,0,12,0,0,0,3,152,0,1,24,0,0,0,1,204,64,1,56,0,0,0,0,238,72,8,112,0,0,0,0,247,9,36,224,0,0,0,0,123,129,33,192,0,0,0,0,63,192,3,192,0,0,0,0,31,248,15,0,0,0,0,0,7,255,254,0,0,0,0,0,1,255,240,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,28,112,3,184,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,206,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,231,0,231,99,0,231,0,0,119,0,103,231,1,199,0,0,115,128,115,198,1,206,0,0,57,192,51,206,3,156,0,0,57,192,59,140,7,28,0,0,28,224,27,156,14,56,0,0,12,224,31,24,14,112,0,0,14,112,15,56,28,224,0,0,7,56,14,48,56,224,0,0,7,56,14,112,57,192,0,0,3,156,12,96,115,128,0,0,3,156,31,224,227,128,0,0,1,207,255,248,231,0,0,0,0,239,255,255,206,0,0,0,0,255,252,15,156,0,0,0,0,127,192,3,252,0,0,0,0,127,137,32,248,0,0,0,0,247,9,32,112,0,0,0,0,238,64,4,112,0,0,0,1,220,0,0,152,0,0,0,3,152,0,0,156,0,0,0,3,177,0,0,12,0,0,0,3,48,0,0,46,0,0,0,7,96,0,192,102,0,0,0,6,100,0,192,6,0,0,0,6,96,1,192,3,0,0,0,14,192,15,192,27,0,0,0,12,216,15,192,3,0,0,0,12,192,15,192,3,0,0,0,12,192,1,192,1,0,0,0,12,192,1,192,25,0,0,0,12,216,1,192,1,128,0,0,12,192,1,192,1,128,0,0,12,192,1,192,1,128,0,0,12,192,1,192,11,0,0,0,12,216,1,192,3,0,0,0,14,192,1,192,3,0,0,0,14,192,1,192,19,0,0,0,14,100,1,192,19,0,0,0,6,108,1,192,7,0,0,0,7,96,0,192,70,0,0,0,3,49,0,0,46,0,0,0,3,178,0,0,12,0,0,0,1,152,0,1,28,0,0,0,1,220,64,0,152,0,0,0,0,238,8,8,48,0,0,0,0,119,1,36,112,0,0,0,0,63,129,32,224,0,0,0,0,63,192,3,192,0,0,0,0,15,248,15,0,0,0,0,0,7,255,254,0,0,0,0,0,1,255,248,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,113,192,1,206,0,206,115,128,115,128,0,230,0,231,99,0,227,128,0,103,0,103,231,1,199,0,0,115,128,115,198,1,206,0,0,57,128,51,206,3,142,0,0,57,192,59,140,7,28,0,0,28,192,27,156,7,56,0,0,28,224,31,24,14,112,0,0,14,112,15,56,28,112,0,0,6,112,14,48,28,224,0,0,7,56,14,112,57,192,0,0,3,152,12,96,113,192,0,0,3,156,31,224,115,128,0,0,1,207,255,248,231,0,0,0,1,207,255,255,199,0,0,0,0,239,248,15,206,0,0,0,0,127,193,3,220,0,0,0,0,127,137,0,248,0,0,0,0,126,9,34,120,0,0,0,0,252,64,4,56,0,0,0,1,216,64,0,28,0,0,0,1,186,0,0,140,0,0,0,3,177,0,0,14,0,0,0,3,112,0,0,6,0,0,0,7,96,0,192,39,0,0,0,6,236,0,192,3,0,0,0,6,192,1,192,3,0,0,0,14,192,15,192,27,0,0,0,12,216,15,192,17,128,0,0,12,200,15,192,1,128,0,0,13,128,1,192,1,128,0,0,13,128,1,192,13,128,0,0,13,176,1,192,1,128,0,0,13,128,1,192,1,128,0,0,13,128,1,192,1,128,0,0,13,128,1,192,13,128,0,0,12,216,1,192,1,128,0,0,14,192,1,192,1,128,0,0,14,192,1,192,19,0,0,0,14,196,1,192,11,0,0,0,6,232,1,192,3,0,0,0,7,96,0,192,7,0,0,0,3,112,0,0,38,0,0,0,3,178,0,0,14,0,0,0,1,248,0,1,28,0,0,0,1,220,64,0,152,0,0,0,0,252,136,4,56,0,0,0,0,126,1,36,112,0,0,0,0,63,145,32,224,0,0,0,0,31,192,3,192,0,0,0,0,15,248,15,128,0,0,0,0,7,255,254,0,0,0,0,0,0,255,248,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,224,3,156,1,156,57,192,56,224,1,204,1,206,49,128,57,192,1,206,0,206,115,128,115,128,0,230,0,231,99,0,227,128,0,231,0,103,231,0,231,0,0,115,128,115,198,1,206,0,0,51,128,51,206,3,142,0,0,57,192,59,140,3,156,0,0,28,192,27,156,7,56,0,0,28,224,31,24,14,56,0,0,14,96,15,56,14,112,0,0,14,112,14,48,28,224,0,0,7,48,14,112,24,224,0,0,7,56,12,96,57,192,0,0,3,156,31,224,115,128,0,0,1,140,255,248,115,128,0,0,1,207,255,255,231,0,0,0,0,239,248,15,206,0,0,0,0,255,193,1,206,0,0,0,0,127,9,0,252,0,0,0,0,126,9,34,120,0,0,0,0,252,72,4,56,0,0,0,1,248,64,0,28,0,0,0,1,242,0,0,142,0,0,0,3,243,0,0,6,0,0,0,3,224,0,0,23,0,0,0,7,232,0,192,35,0,0,0,6,204,0,192,3,0,0,0,6,192,1,192,3,128,0,0,15,192,15,192,9,128,0,0,13,144,15,192,1,128,0,0,13,128,15,192,1,128,0,0,13,128,1,192,1,128,0,0,13,128,1,192,13,128,0,0,13,176,1,192,1,128,0,0,13,128,1,192,1,128,0,0,13,128,1,192,1,128,0,0,13,128,1,192,13,128,0,0,13,176,1,192,1,128,0,0,15,128,1,192,1,128,0,0,14,192,1,192,25,128,0,0,14,200,1,192,11,128,0,0,7,200,1,192,3,0,0,0,7,224,0,192,3,0,0,0,3,98,0,0,38,0,0,0,3,246,0,0,14,0,0,0,1,248,0,1,12,0,0,0,1,248,64,0,156,0,0,0,0,252,128,4,56,0,0,0,0,126,17,36,112,0,0,0,0,63,17,32,224,0,0,0,0,31,192,3,192,0,0,0,0,15,252,15,128,0,0,0,0,3,255,254,0,0,0,0,0,0,255,248,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,184,3,156,24,192,28,96,3,156,1,156,57,192,56,224,1,204,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,230,0,231,99,0,227,128,0,231,0,103,231,0,231,0,0,115,0,115,198,1,199,0,0,115,128,51,206,1,206,0,0,57,192,59,140,3,156,0,0,25,192,27,156,7,28,0,0,28,224,31,24,7,56,0,0,12,96,15,56,14,48,0,0,14,112,14,48,12,112,0,0,7,48,14,112,28,224,0,0,7,56,12,96,56,224,0,0,3,152,31,224,57,192,0,0,3,156,255,248,115,128,0,0,1,207,255,255,227,128,0,0,1,207,248,15,231,0,0,0,0,255,193,1,238,0,0,0,0,127,9,16,254,0,0,0,0,126,9,34,60,0,0,0,0,252,200,2,28,0,0,0,1,248,64,0,28,0,0,0,1,242,0,0,206,0,0,0,3,226,0,0,6,0,0,0,3,224,0,0,23,0,0,0,7,192,0,192,51,0,0,0,7,204,1,192,3,128,0,0,7,192,1,192,1,128,0,0,15,128,15,192,13,128,0,0,15,176,31,192,1,128,0,0,15,128,31,192,0,192,0,0,15,128,1,192,0,192,0,0,15,128,1,192,14,192,0,0,15,176,1,192,0,192,0,0,15,128,1,192,0,192,0,0,15,128,1,192,0,192,0,0,15,128,1,192,12,192,0,0,15,176,1,192,0,192,0,0,15,128,1,192,1,192,0,0,15,128,1,192,9,128,0,0,7,200,1,192,9,128,0,0,7,216,1,192,3,128,0,0,7,192,0,192,35,0,0,0,3,226,0,0,55,0,0,0,3,246,0,0,6,0,0,0,1,240,0,0,142,0,0,0,0,248,128,0,156,0,0,0,0,252,128,4,56,0,0,0,0,126,17,36,120,0,0,0,0,63,16,32,240,0,0,0,0,31,192,3,224,0,0,0,0,15,252,15,128,0,0,0,0,3,255,255,0,0,0,0,0,0,127,248,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,96,3,156,1,156,57,192,56,224,1,140,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,198,0,231,99,0,115,128,0,231,0,103,231,0,227,0,0,99,0,115,198,1,199,0,0,115,128,51,206,1,206,0,0,57,128,59,140,3,142,0,0,57,192,27,156,3,156,0,0,28,192,31,24,7,56,0,0,12,224,15,56,6,56,0,0,14,112,14,48,14,112,0,0,6,112,14,112,28,112,0,0,7,56,12,96,28,224,0,0,3,24,31,224,57,192,0,0,3,156,127,252,57,192,0,0,1,143,255,255,115,128,0,0,1,207,248,15,227,128,0,0,0,223,193,1,231,0,0,0,0,255,9,16,254,0,0,0,0,126,9,2,62,0,0,0,0,252,128,2,28,0,0,0,0,248,64,0,78,0,0,0,1,240,0,0,198,0,0,0,3,226,0,0,7,0,0,0,3,224,0,0,19,0,0,0,7,192,0,224,51,128,0,0,7,216,1,224,1,128,0,0,7,128,3,224,1,128,0,0,15,128,15,224,13,192,0,0,15,176,31,224,8,192,0,0,15,16,31,224,0,192,0,0,15,0,1,224,0,192,0,0,15,0,1,224,6,192,0,0,15,112,1,224,0,192,0,0,15,0,1,224,0,192,0,0,15,0,1,224,0,192,0,0,15,0,1,224,6,192,0,0,15,48,1,224,0,192,0,0,15,128,1,224,0,192,0,0,15,128,1,224,9,192,0,0,7,136,1,224,13,128,0,0,7,208,1,224,1,128,0,0,7,192,0,192,35,128,0,0,3,226,0,0,19,0,0,0,3,228,0,0,7,0,0,0,1,240,0,0,142,0,0,0,0,248,128,0,204,0,0,0,0,252,128,4,28,0,0,0,0,126,17,36,120,0,0,0,0,63,18,32,240,0,0,0,0,31,192,1,224,0,0,0,0,7,252,15,128,0,0,0,0,3,255,255,0,0,0,0,0,0,127,248,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,57,192,1,206,0,206,115,128,113,192,0,198,0,231,99,0,115,128,0,231,0,103,231,0,227,128,0,99,0,115,198,0,199,0,0,115,128,51,206,1,198,0,0,49,128,59,140,1,142,0,0,57,192,27,156,3,156,0,0,24,192,31,24,3,28,0,0,28,224,15,56,7,56,0,0,14,96,14,48,14,48,0,0,14,112,14,112,14,112,0,0,7,48,12,96,28,224,0,0,7,56,31,224,24,224,0,0,3,152,127,252,57,192,0,0,3,159,255,255,49,192,0,0,1,207,248,15,243,128,0,0,0,223,129,1,243,0,0,0,0,255,17,16,127,0,0,0,0,126,9,2,62,0,0,0,0,248,128,2,30,0,0,0,0,240,64,0,78,0,0,0,1,244,0,0,71,0,0,0,3,226,0,0,3,0,0,0,3,192,0,0,3,128,0,0,7,208,0,224,17,128,0,0,7,152,1,224,1,192,0,0,7,128,3,224,0,192,0,0,15,128,15,224,4,192,0,0,15,32,31,224,0,192,0,0,15,0,31,224,0,224,0,0,15,0,1,224,0,224,0,0,15,0,1,224,6,224,0,0,15,96,1,224,0,96,0,0,15,0,1,224,0,96,0,0,15,0,1,224,0,224,0,0,15,0,1,224,6,224,0,0,15,112,1,224,0,224,0,0,15,0,1,224,0,192,0,0,15,128,1,224,12,192,0,0,7,152,1,224,5,192,0,0,7,144,1,224,1,192,0,0,7,192,0,192,1,128,0,0,3,192,0,0,19,128,0,0,3,228,0,0,7,0,0,0,1,240,0,0,135,0,0,0,0,240,128,0,78,0,0,0,0,120,16,4,28,0,0,0,0,124,17,38,56,0,0,0,0,63,18,32,112,0,0,0,0,15,192,1,224,0,0,0,0,7,252,15,192,0,0,0,0,1,255,255,0,0,0,0,0,0,127,248,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,115,128,0,231,0,103,231,0,99,128,0,99,0,115,198,0,231,0,0,115,128,51,206,1,199,0,0,49,128,59,140,1,206,0,0,57,192,27,156,3,140,0,0,24,192,31,24,3,28,0,0,28,224,15,56,7,56,0,0,12,96,14,48,6,56,0,0,14,112,14,112,14,112,0,0,6,48,12,96,12,112,0,0,7,56,31,224,28,224,0,0,3,24,127,252,24,224,0,0,3,157,255,255,57,192,0,0,1,143,248,15,241,128,0,0,1,207,193,1,243,128,0,0,0,255,17,16,119,0,0,0,0,252,25,18,63,0,0,0,0,248,128,2,30,0,0,0,0,240,64,0,14,0,0,0,1,228,0,0,71,0,0,0,3,230,0,0,3,128,0,0,3,192,0,0,11,128,0,0,7,144,0,224,25,192,0,0,7,152,1,224,1,192,0,0,7,0,3,224,0,192,0,0,15,0,15,224,6,224,0,0,15,96,31,224,0,224,0,0,15,0,31,224,0,96,0,0,15,0,1,224,0,96,0,0,14,0,1,224,7,96,0,0,14,96,1,224,0,96,0,0,14,0,1,224,0,96,0,0,14,0,1,224,0,96,0,0,15,0,1,224,6,96,0,0,15,96,1,224,0,96,0,0,15,0,1,224,0,224,0,0,15,0,1,224,12,224,0,0,7,16,1,224,4,192,0,0,7,176,1,224,1,192,0,0,7,128,1,192,1,192,0,0,3,196,0,0,27,128,0,0,3,236,0,0,3,128,0,0,1,224,0,0,135,0,0,0,0,240,128,0,78,0,0,0,0,121,16,4,28,0,0,0,0,60,16,34,60,0,0,0,0,31,18,32,112,0,0,0,0,15,192,1,224,0,0,0,0,7,252,15,192,0,0,0,0,1,255,255,0,0,0,0,0,0,127,248,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,56,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,231,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,206,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,14,48,0,0,6,48,12,96,14,112,0,0,7,56,31,224,28,96,0,0,3,24,127,252,28,224,0,0,3,157,255,255,57,192,0,0,1,143,248,15,241,192,0,0,1,207,193,1,243,128,0,0,0,255,17,16,123,128,0,0,0,252,25,19,31,0,0,0,0,248,128,2,15,0,0,0,0,240,128,0,39,0,0,0,1,228,0,0,71,0,0,0,1,198,0,0,3,128,0,0,3,192,0,0,9,192,0,0,7,128,0,224,25,192,0,0,7,152,1,224,0,192,0,0,7,0,3,224,0,224,0,0,15,0,31,224,6,96,0,0,15,96,31,224,0,96,0,0,14,32,31,224,0,96,0,0,14,0,1,224,0,96,0,0,14,0,1,224,3,112,0,0,14,224,1,224,0,112,0,0,14,0,1,224,0,112,0,0,14,0,1,224,0,112,0,0,14,0,1,224,3,96,0,0,14,96,1,224,0,96,0,0,15,0,1,224,0,96,0,0,15,0,1,224,4,224,0,0,7,16,1,224,2,224,0,0,7,160,1,224,0,192,0,0,7,128,1,192,17,192,0,0,3,196,0,0,25,128,0,0,1,204,0,0,3,128,0,0,1,224,0,0,199,0,0,0,0,241,128,0,78,0,0,0,0,121,16,6,30,0,0,0,0,60,18,34,60,0,0,0,0,31,2,32,120,0,0,0,0,15,192,1,240,0,0,0,0,7,252,15,192,0,0,0,0,1,255,255,0,0,0,0,0,0,127,248,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,192,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,206,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,252,28,224,0,0,3,157,255,255,152,192,0,0,1,159,248,15,249,192,0,0,1,207,193,1,241,128,0,0,0,255,17,16,123,128,0,0,0,252,17,17,31,0,0,0,0,248,128,2,15,0,0,0,0,240,128,0,39,0,0,0,1,236,0,0,99,128,0,0,1,196,0,0,1,128,0,0,3,128,0,0,5,192,0,0,7,160,0,224,24,192,0,0,7,16,1,224,0,224,0,0,7,0,3,224,0,96,0,0,14,0,31,224,6,96,0,0,14,224,31,224,0,112,0,0,14,0,31,224,0,112,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,48,0,0,14,192,1,224,0,48,0,0,14,0,1,224,0,48,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,48,0,0,14,224,1,224,0,112,0,0,14,0,1,224,0,112,0,0,15,0,1,224,4,96,0,0,7,16,1,224,2,96,0,0,7,32,1,224,0,224,0,0,7,128,1,224,16,192,0,0,3,132,0,0,9,192,0,0,3,204,0,0,3,128,0,0,1,224,0,0,67,128,0,0,0,241,128,0,71,0,0,0,0,249,16,6,14,0,0,0,0,124,18,34,60,0,0,0,0,31,2,32,120,0,0,0,0,15,192,1,240,0,0,0,0,7,252,15,192,0,0,0,0,1,255,255,0,0,0,0,0,0,63,252,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,48,3,56,12,96,12,48,7,48,3,56,28,224,12,112,3,56,3,156,24,192,28,112,3,156,1,156,57,192,24,224,1,156,1,206,49,128,56,224,1,206,0,206,115,128,49,192,0,206,0,231,99,0,113,128,0,231,0,103,231,0,99,128,0,103,0,115,198,0,227,0,0,115,128,51,206,0,199,0,0,51,128,59,140,1,198,0,0,57,192,27,156,1,142,0,0,25,192,31,24,3,156,0,0,28,224,15,56,3,28,0,0,12,224,14,48,7,56,0,0,14,112,14,112,6,56,0,0,6,112,12,96,14,112,0,0,7,56,31,224,12,112,0,0,3,56,127,252,28,224,0,0,3,157,255,255,152,224,0,0,1,159,248,15,249,192,0,0,1,223,193,1,249,192,0,0,0,255,17,16,123,128,0,0,0,252,17,17,31,0,0,0,0,249,128,3,15,0,0,0,0,240,128,0,39,0,0,0,1,232,0,0,99,128,0,0,3,196,0,0,1,192,0,0,3,128,0,0,5,192,0,0,7,160,0,224,8,224,0,0,7,48,1,224,0,224,0,0,15,0,3,224,0,112,0,0,14,0,31,224,3,112,0,0,14,192,31,224,0,112,0,0,14,0,31,224,0,48,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,184,0,0,28,192,1,224,0,56,0,0,28,0,1,224,0,56,0,0,14,0,1,224,0,48,0,0,14,0,1,224,3,176,0,0,14,192,1,224,0,48,0,0,14,0,1,224,0,112,0,0,14,0,1,224,6,112,0,0,7,16,1,224,2,96,0,0,7,96,1,224,0,224,0,0,7,128,1,224,16,224,0,0,3,132,0,0,9,192,0,0,3,200,0,0,1,192,0,0,1,224,0,0,67,128,0,0,0,225,0,0,103,0,0,0,0,249,16,2,14,0,0,0,0,124,50,34,30,0,0,0,0,31,34,32,120,0,0,0,0,15,192,1,240,0,0,0,0,7,252,15,224,0,0,0,0,1,255,255,128,0,0,0,0,0,63,252,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
static const unsigned char PROGMEM logo_bmp[] =
{ 0b00000000, 0b11000000,
0b00000001, 0b11000000,
0b00000001, 0b11000000,
0b00000011, 0b11100000,
0b11110011, 0b11100000,
0b11111110, 0b11111000,
0b01111110, 0b11111111,
0b00110011, 0b10011111,
0b00011111, 0b11111100,
0b00001101, 0b01110000,
0b00011011, 0b10100000,
0b00111111, 0b11100000,
0b00111111, 0b11110000,
0b01111100, 0b11110000,
0b01110000, 0b01110000,
0b00000000, 0b00110000 };
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
<title>Dan's MTG Health Counter Helper</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="data:,">
<style>
html {font-family: Arial; display: inline-block; text-align: center;}
h2 {font-size: 3.0rem;}
p {font-size: 3.0rem;}
body {max-width: 600px; margin:0px auto; padding-bottom: 25px;}
button {background-color: #04AA6D;border: none;color: white;padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;
}
</style>
</head>
<body>
<h2>Dan's MTG Health Counter Helper</h2>
<button onclick="toggleReset()">Reset Game</button>
<div>
<input id="pName" name="pName" placeholder="Player Name"></input>
<input id="pNumber" name="pNumber" placeholder="Player Number"></input>
<button onclick="setName()">Set Name</button>
</div>
<script>
function toggleReset() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "/reset", true)
xhr.send();
}
function setName() {
var xhr = new XMLHttpRequest();
let pName = document.getElementById("pName").value;
let pNumber = document.getElementById("pNumber").value;
console.log("/update_name?player=" + pNumber + "&name=" + pName)
xhr.open("GET", "/update_name?player=" + pNumber + "&name=" + pName, true)
xhr.send();
}
</script>
</body>
</html>
)rawliteral";
unsigned long animation_timer = 0; // the time the delay started
unsigned long button_timer = 0; // the time the delay started
int delay_interval = 200;
int r_display = 0;
bool display_rolloff = true;
bool display_first = true;
int frame = 0;
int animate_r = 0;
void notFound(AsyncWebServerRequest *request) {
request->send(404, "text/plain", "Not found");
}
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
//delay(50);
}
int returnRandomNumber(int numPlayers) {
return random(0, numPlayers);
}
void setup() {
Serial.begin(115200);
mySerial.begin(9600, SERIAL_8N1, D12, 11);
Serial.print("setup online");
button_timer = millis(); // start delay for non blocking functions
animation_timer = millis();
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.print("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/html", index_html);
});
server.on("/reset", HTTP_GET, [](AsyncWebServerRequest *request){
resetGame();
request->send(200, "text/plain", "Hello, world");
});
// Send a GET request to <ESP_IP>/update_name?player=<inputMessage1>&name=<inputMessage2>
server.on("/update_name", HTTP_GET, [] (AsyncWebServerRequest *request) {
String inputMessage1;
String inputMessage2;
// GET input1 value on <ESP_IP>/update_name?player=<inputMessage1>&name=<inputMessage2>
if (request->hasParam(PARAM_INPUT_1) && request->hasParam(PARAM_INPUT_2)) {
inputMessage1 = request->getParam(PARAM_INPUT_1)->value();
inputMessage2 = request->getParam(PARAM_INPUT_2)->value();
int playerNum = inputMessage1.toInt();
playerNum--;
updatePlayerName(inputMessage2, players[playerNum]);
}
else {
Serial.printf("No Param sent\n");
}
request->send(200, "text/plain", "OK");
});
if (!myDFPlayer.begin(mySerial)) { //Use serial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true){
delay(0); // Code to compatible with ESP8266 watch dog.
}
}
//myDFPlayer.next();
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(25); //Set volume value. From 0 to 30
//Play the first mp3
//playResetMusic();
pinMode(player1Plus, INPUT_PULLUP);
pinMode(player1Minus, INPUT_PULLUP);
pinMode(player1Alt, INPUT_PULLUP);
pinMode(player2Plus, INPUT_PULLUP);
pinMode(player2Minus, INPUT_PULLUP);
pinMode(player2Alt, INPUT_PULLUP);
for (int i = 1; i >= 0; i--) {
delay(500);
tcaselect(i);
delay(500);
if(!displays[i].begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.print("Alloc failed");
for(;;); // Don't proceed, loop forever
}
//displays[i].setFont(Fonts/);
// Show initial display buffer contents on the screen --
// the library initializes this with an Adafruit splash screen.
}
server.onNotFound(notFound);
server.begin();
r_display = returnRandomNumber(2);
delay(200);
}
void printDetail(uint8_t type, int value){
switch (type) {
case TimeOut:
Serial.println(F("Time Out!"));
break;
case WrongStack:
Serial.println(F("Stack Wrong!"));
break;
case DFPlayerCardInserted:
Serial.println(F("Card Inserted!"));
break;
case DFPlayerCardRemoved:
Serial.println(F("Card Removed!"));
break;
case DFPlayerCardOnline:
Serial.println(F("Card Online!"));
break;
case DFPlayerUSBInserted:
Serial.println("USB Inserted!");
break;
case DFPlayerUSBRemoved:
Serial.println("USB Removed!");
break;
case DFPlayerPlayFinished:
Serial.print(F("Number:"));
Serial.print(value);
Serial.println(F(" Play Finished!"));
break;
case DFPlayerError:
Serial.print(F("DFPlayerError:"));
switch (value) {
case Busy:
Serial.println(F("Card not found"));
break;
case Sleeping:
Serial.println(F("Sleeping"));
break;
case SerialWrongStack:
Serial.println(F("Get Wrong Stack"));
break;
case CheckSumNotMatch:
Serial.println(F("Check Sum Not Match"));
break;
case FileIndexOut:
Serial.println(F("File Index Out of Bound"));
break;
case FileMismatch:
Serial.println(F("Cannot Find File"));
break;
case Advertise:
Serial.println(F("In Advertise"));
break;
default:
break;
}
break;
default:
break;
}
}
void loop() {
unsigned long currentTime = millis();
if (myDFPlayer.available()) {
printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
}
displays[0].clearDisplay();
displays[1].clearDisplay();
//show initial blocking rolloff
if (display_rolloff == true) {
displayCountdown();
display_rolloff = false;
}
//handle non blocking first/second animations
if (display_first == true && ((currentTime - animation_timer) >= FRAME_DELAY)) {
if (applauseState == false) {
playApplause();
applauseState = true;
}
tcaselect(r_display);
displays[r_display].clearDisplay();
displays[r_display].drawBitmap(32, 0, first_frames[frame], FRAME_WIDTH, FRAME_HEIGHT, 1);
displays[r_display].display();
if (r_display == 1) {
tcaselect(0);
displays[0].clearDisplay();
displays[0].drawBitmap(32, 0, second_frames[frame], FRAME_WIDTH, FRAME_HEIGHT, 1);
displays[0].display();
} else {
tcaselect(1);
displays[1].clearDisplay();
displays[1].drawBitmap(32, 0, second_frames[frame], FRAME_WIDTH, FRAME_HEIGHT, 1);
displays[1].display();
}
frame++;
if (frame == FRAME_COUNT_FIRST) {
if (animate_r <= 3) {
animate_r++;
frame = 0;
} else {
display_first = false;
animate_r = 0;
frame = 0;
}
}
animation_timer = currentTime;
}
//Handle main health displays
if (display_first != true) {
tcaselect(players[0].display);
if (players[0].screenState == 0 && display_first != true){
displayPlayerData(players[0]);
} else {
displayPlayerCmdrDamage(players[0]);
}
}
if (display_first != true) {
tcaselect(players[1].display);
if (players[1].screenState == 0){
displayPlayerData(players[1]);
} else {
displayPlayerCmdrDamage(players[1]);
}
}
if ((digitalRead(player1Alt) == LOW) && ((currentTime - button_timer) >= delay_interval))
{
Serial.println("screenstate changed p1");
toggleScreen(players[0]);
button_timer = currentTime;
playSwoosh();
}
if (digitalRead(player2Alt) == LOW && ((currentTime - button_timer) >= delay_interval))
{
Serial.println("screenstate changed");
toggleScreen(players[1]);
button_timer = currentTime;
playSwoosh();
}
if (digitalRead(player1Plus) == LOW && ((currentTime - button_timer) >= delay_interval))
{
playBeep();
if (players[0].screenState == 0) {
incrementPlayerHealth(players[0]);
} else {
incrementCmdrDamage(players[0]);
}
button_timer = currentTime;
}
if (digitalRead(player1Minus) == LOW && ((currentTime - button_timer) >= delay_interval))
{
playBeep();
if (players[0].screenState == 0) {
decrementPlayerHealth(players[0]);
} else {
decrementCmdrDamage(players[0]);
}
button_timer = currentTime;
}
if (digitalRead(player2Plus) == LOW && ((currentTime - button_timer) >= delay_interval))
{
playBeep();
if (players[1].screenState == 0) {
incrementPlayerHealth(players[1]);
} else {
incrementCmdrDamage(players[1]);
}
button_timer = currentTime;
}
if (digitalRead(player2Minus) == LOW && ((currentTime - button_timer) >= delay_interval))
{
playBeep();
if (players[1].screenState == 0) {
decrementPlayerHealth(players[1]);
} else {
decrementCmdrDamage(players[1]);
}
button_timer = currentTime;
}
}
void toggleScreen(Player &playerData) {
playerData.screenState = !playerData.screenState;
//delay(100);
}
void updatePlayerName(String playerName, Player &playerData) {
playerData.name = playerName;
}
void setDisplayOpt(int displayNumber, int textSize, char textColor, int cursorX, int cursorY) {
displays[displayNumber].setTextSize(textSize);
displays[displayNumber].setTextColor(textColor);
displays[displayNumber].setCursor(cursorX, cursorY);
}
void drawCentered(const char *buf, int displayNumber, int textSize, char textColor, int x, int y) {
if (displayNumber < 0 || displayNumber > 1) { // Check displayNumber bounds
Serial.println("Invalid display number");
return;
}
int16_t x1, y1;
uint16_t w, h;
displays[displayNumber].setTextSize(textSize);
displays[displayNumber].setTextColor(textColor);
displays[displayNumber].getTextBounds(buf, x, y, &x1, &y1, &w, &h);
displays[displayNumber].setCursor(x - w / 2, y);
displays[displayNumber].print(buf);
}
void displayFirst(int displayNumber) {
displayCountdown();
delay(100);
setDisplayOpt(0, 2, SSD1306_WHITE, 0, 5);
displays[1].clearDisplay();
setDisplayOpt(1, 2, SSD1306_WHITE, 0, 5);
if (displayNumber == 1) {
tcaselect(players[1].display);
displays[1].clearDisplay();
animateFirst(players[0].display);
} else {
tcaselect(players[0].display);
displays[0].clearDisplay();
animateFirst(players[1].display);
};
delay(5000);
}
bool incrementPlayerHealth(Player &playerData) {
playerData.health++;
//delay(100);
return true;
}
bool incrementCmdrDamage(Player &playerData) {
playerData.health--;
playerData.cmdr_damage++;
if (playerData.cmdr_damage >= 21 || playerData.health <= 0) {
playerData.alive = false;
animateDeath(playerData.display);
resetGame();
}
return true;
}
bool decrementPlayerHealth(Player &playerData) {
playerData.health--;
if (playerData.health <= 0) {
playerData.alive = false;
animateDeath(playerData.display);
resetGame();
}
return true;
}
bool decrementCmdrDamage(Player &playerData) {
if (playerData.cmdr_damage != 0){
playerData.health++;
playerData.cmdr_damage--;
}
return true;
}
void resetGame(void) {
players[0].health = STARTING_HEALTH;
players[0].cmdr_damage = CMDR_DAMAGE;
players[0].screenState = 0;
players[1].health = STARTING_HEALTH;
players[1].cmdr_damage = CMDR_DAMAGE;
players[1].screenState = 0;
playResetMusic();
r_display = returnRandomNumber(2);
display_rolloff = true;
display_first = true;
frame = 0;
animate_r = 0;
applauseState = false;
}
void displayCountdown(void) {
tcaselect(players[0].display);
displays[0].clearDisplay();
setDisplayOpt(0, 2, SSD1306_WHITE, 10, 5);
displays[0].print("Rolling for first!");
displays[0].display();
tcaselect(players[1].display);
displays[1].clearDisplay();
setDisplayOpt(1, 2, SSD1306_WHITE, 10, 5);
displays[1].print("Rolling for first!");
displays[1].display();
delay(2000);
for (int i = 5; i > 0; i--) {
playBeep();
tcaselect(players[1].display);
displays[0].clearDisplay();
char cBuffer[2];
itoa(i, cBuffer, 10); // Convert to decimal string
drawCentered(cBuffer, 0, 3, SSD1306_WHITE, 64, 18);
displays[0].display();
tcaselect(players[0].display);
displays[1].clearDisplay();
drawCentered(cBuffer, 1, 3, SSD1306_WHITE, 64, 18);
displays[1].display();
delay(500);
}
}
void animateDeath(int displayNumber) {
playDeathMusic();
int frame = 0;
tcaselect(displayNumber);
for (int i = 0; i <= FRAME_COUNT_DEATH * 4; i++) {
displays[displayNumber].clearDisplay();
displays[displayNumber].drawBitmap(32, 0, death_frames[frame], FRAME_WIDTH, FRAME_HEIGHT, 1);
displays[displayNumber].display();
if (frame == FRAME_COUNT_DEATH) {
frame = 0;
} else {
frame = (frame + 1) % FRAME_COUNT_DEATH;
}
delay(FRAME_DELAY);
}
}
void animateFirst(int displayNumber) {
int frame = 0;
tcaselect(displayNumber);
for (int i = 0; i <= FRAME_COUNT_FIRST * 4; i++) {
displays[displayNumber].clearDisplay();
displays[displayNumber].drawBitmap(32, 0, first_frames[frame], FRAME_WIDTH, FRAME_HEIGHT, 1);
displays[displayNumber].display();
if (frame == FRAME_COUNT_FIRST) {
frame = 0;
} else {
frame = (frame + 1) % FRAME_COUNT_FIRST;
}
delay(FRAME_DELAY);
}
}
/* void playDeathMusic(void) {
for (int i = 0; i < 12; i++) {
tone(buzzerPin, deathMelody[i], deathRhythm[i]);
//delay(deathRhythm[i]);
}
} */
void playResetMusic(void) {
for (int i = 0; i < 4; i++) {
tone(buzzerPin, resetMelody[i], resetRhythm[i]);
//delay(resetRhythm[i]);
}
}
void displayPlayerData(Player &playerData) {
char cBuffer[6]; // Buffer large enough to hold a 16-bit integer (up to 5 digits) + null terminator
// Convert the 16-bit integer to a string
itoa(playerData.health, cBuffer, 10); // Convert to decimal string
const char* nBuffer = playerData.name.c_str();
displays[playerData.display].clearDisplay();
//Serial.print(playerData.display);
drawCentered(nBuffer, playerData.display, 1, SSD1306_WHITE, 64, 1);
drawCentered(cBuffer, playerData.display, 3, SSD1306_WHITE, 64, 32);
displays[playerData.display].display();
}
void displayPlayerCmdrDamage(Player &playerData) {
char cBuffer[6]; // Buffer large enough to hold a 16-bit integer (up to 5 digits) + null terminator
// Convert the 16-bit integer to a string
itoa(playerData.cmdr_damage, cBuffer, 10); // Convert to decimal string
const char* nBuffer = playerData.name.c_str();
displays[playerData.display].clearDisplay();
drawCentered("CMDR DMG", playerData.display, 2, SSD1306_WHITE, 64, 0);
drawCentered(cBuffer, playerData.display, 3, SSD1306_WHITE, 64, 32);
displays[playerData.display].display();
}
void playDeathMusic(void) {
myDFPlayer.play(1);
}
void playSwoosh(void) {
myDFPlayer.play(2);
}
void playBeep(void) {
myDFPlayer.play(3);
}
void playApplause(void) {
myDFPlayer.play(4);
}