This repository has been archived by the owner on Dec 13, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
boards.go
715 lines (684 loc) · 40.6 KB
/
boards.go
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
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"github.com/gdamore/tcell"
)
// loadBoards loads the internal boards
func loadBoards() error {
logger.Println("loadBoards start")
var boardsJSON []BoardsJSON
err := json.Unmarshal(boardsInternal, &boardsJSON)
if err != nil {
return fmt.Errorf("unmarshal error: %v", err)
}
numInternalBoards = len(boardsJSON)
boards = make([]Boards, numInternalBoards)
for boardNum, boardLoad := range boardsJSON {
aBoards := Boards{name: boardLoad.Name}
aBoards.colors = make([][]tcell.Color, len(boardLoad.Mino))
aBoards.rotation = boardLoad.Rotation
for i := 0; i < len(boardLoad.Mino); i++ {
aBoards.colors[i] = make([]tcell.Color, len(boardLoad.Mino[i]))
for j := 0; j < len(boardLoad.Mino[i]); j++ {
switch boardLoad.Mino[i][j] {
case "b":
aBoards.colors[i][j] = colorBlank
case "i":
aBoards.colors[i][j] = colorCyan
case "j":
aBoards.colors[i][j] = colorBlue
case "l":
aBoards.colors[i][j] = colorWhite
case "o":
aBoards.colors[i][j] = colorYellow
case "s":
aBoards.colors[i][j] = colorGreen
case "t":
aBoards.colors[i][j] = colorMagenta
case "z":
aBoards.colors[i][j] = colorRed
}
}
}
boards[boardNum] = aBoards
}
boardsJSON = nil
logger.Println("loadBoards end")
return nil
}
// loadUserBoards loads the user boards from file
func loadUserBoards() error {
_, err := os.Stat(baseDir + settingsFileName)
if os.IsNotExist(err) {
return nil
}
logger.Println("loadUserBoards start")
if err != nil {
return fmt.Errorf("stat error: %v", err)
}
var settingsJSON []byte
settingsJSON, err = ioutil.ReadFile(baseDir + settingsFileName)
if err != nil {
return fmt.Errorf("read file error: %v", err)
}
if len(settingsJSON) < 2 {
return nil
}
var settings Settings
err = json.Unmarshal(settingsJSON, &settings)
if err != nil {
return fmt.Errorf("unmarshal error: %v", err)
}
for _, boardLoad := range settings.Boards {
aBoards := Boards{name: boardLoad.Name}
aBoards.colors = make([][]tcell.Color, len(boardLoad.Mino))
aBoards.rotation = boardLoad.Rotation
for i := 0; i < len(boardLoad.Mino); i++ {
aBoards.colors[i] = make([]tcell.Color, len(boardLoad.Mino[i]))
for j := 0; j < len(boardLoad.Mino[i]); j++ {
switch boardLoad.Mino[i][j] {
case "b":
aBoards.colors[i][j] = colorBlank
case "i":
aBoards.colors[i][j] = colorCyan
case "j":
aBoards.colors[i][j] = colorBlue
case "l":
aBoards.colors[i][j] = colorWhite
case "o":
aBoards.colors[i][j] = colorYellow
case "s":
aBoards.colors[i][j] = colorGreen
case "t":
aBoards.colors[i][j] = colorMagenta
case "z":
aBoards.colors[i][j] = colorRed
}
}
}
boards = append(boards, aBoards)
}
logger.Println("loadUserBoards end")
return nil
}
// saveUserBoards saves the user boards to file
func saveUserBoards() error {
logger.Println("saveUserBoards start")
boardsJSON := make([]BoardsJSON, len(boards)-numInternalBoards)
for x := numInternalBoards; x < len(boards); x++ {
aBoards := BoardsJSON{Name: boards[x].name}
aBoards.Mino = make([][]string, len(boards[x].colors))
aBoards.Rotation = boards[x].rotation
for i := 0; i < len(boards[x].colors); i++ {
aBoards.Mino[i] = make([]string, len(boards[x].colors[i]))
for j := 0; j < len(boards[x].colors[i]); j++ {
switch boards[x].colors[i][j] {
case colorBlank:
aBoards.Mino[i][j] = "b"
case colorCyan:
aBoards.Mino[i][j] = "i"
case colorBlue:
aBoards.Mino[i][j] = "j"
case colorWhite:
aBoards.Mino[i][j] = "l"
case colorYellow:
aBoards.Mino[i][j] = "o"
case colorGreen:
aBoards.Mino[i][j] = "s"
case colorMagenta:
aBoards.Mino[i][j] = "t"
case colorRed:
aBoards.Mino[i][j] = "z"
}
}
}
boardsJSON[x-numInternalBoards] = aBoards
}
settings := Settings{Boards: boardsJSON}
settingsJSON, err := json.Marshal(settings)
if err != nil {
return fmt.Errorf("marshal error: %v", err)
}
err = ioutil.WriteFile(baseDir+settingsFileName, settingsJSON, 0644)
if err != nil {
return fmt.Errorf("write file error: %v", err)
}
logger.Println("saveUserBoards end")
return nil
}
var boardsInternal = []byte(`
[
{
"name":"10 x 20 blank",
"mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"10 x 20 checkerboard double",
"mino":[
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"10 x 20 checkerboard single",
"mino":[
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"]
],
"rotation":[
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"20 x 20 blank",
"mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"20 x 20 heart",
"mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","l","l","l","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","z","z","t","l","o","o","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","z","z","t","t","t","o","o","j","b","b","b","b","b"],
["b","b","b","b","b","b","b","l","l","l","i","i","i","i","j","b","b","b","b","b"],
["b","b","b","b","b","b","b","s","s","l","l","l","z","z","j","j","b","b","b","b"],
["b","b","b","b","b","b","b","b","s","s","l","z","z","i","i","i","i","b","b","b"],
["b","b","b","b","b","b","b","b","j","j","l","s","s","t","t","t","z","z","b","b"],
["b","b","b","b","b","b","b","b","s","j","o","o","s","s","t","z","z","b","b","b"],
["b","b","b","b","b","b","b","s","s","j","o","o","o","o","l","l","b","b","b","b"],
["b","b","b","b","b","b","b","s","z","z","s","s","o","o","l","b","b","b","b","b"],
["b","b","b","b","b","b","b","z","z","t","j","s","s","j","l","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","t","t","j","j","j","j","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","t","j","j","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,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,1,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,1,1,3,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,3,3,3,0,0,2,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,1,3,3,3,3,2,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,1,2,2,1,1,2,2,0,0,0,0],
[0,0,0,0,0,0,0,0,1,1,2,1,1,1,1,1,1,0,0,0],
[0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,0,0],
[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0],
[0,0,0,0,0,0,0,0,0,0,1,1,3,3,2,2,0,0,0,0],
[0,0,0,0,0,0,0,0,1,1,1,1,3,3,2,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,0,2,1,1,1,2,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,2,3,3,3,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"20 x 20 checkerboard double",
"mino":[
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"20 x 20 checkerboard single",
"mino":[
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"]
],
"rotation":[
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"26 x 28 peace symbol",
"Mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","j","i","i","i","i","o","o","l","l","j","j","j","z","j","j","i"],
["b","b","b","b","b","b","b","b","j","l","j","j","j","s","j","j","j","o","o","l","z","j","l","l","z","z","j","i"],
["b","b","b","b","b","b","b","b","j","l","l","l","s","s","j","b","b","b","b","l","z","z","l","o","o","z","j","i"],
["b","b","b","b","b","b","b","t","j","j","z","z","s","b","b","b","j","l","b","b","b","z","l","o","o","j","z","i"],
["b","b","b","b","b","b","t","t","t","z","z","b","b","b","j","j","j","l","l","l","b","b","b","j","j","j","z","z"],
["b","b","b","b","b","b","i","i","i","i","b","b","j","z","s","s","t","t","t","z","z","s","b","b","t","t","t","z"],
["b","b","b","b","b","b","t","t","t","b","b","s","j","z","z","s","s","t","z","z","s","s","b","b","b","t","l","l"],
["b","b","b","b","b","b","b","t","b","b","s","s","j","j","z","j","j","j","o","o","s","b","b","s","b","b","l","i"],
["b","b","b","b","b","b","z","z","b","l","s","i","i","i","i","j","s","s","o","o","b","b","s","s","j","b","l","i"],
["b","b","b","b","b","z","z","b","b","l","o","o","l","l","t","t","t","s","s","b","b","z","s","b","j","b","b","i"],
["b","b","b","b","b","l","l","b","l","l","o","o","l","o","o","t","z","z","b","b","t","z","z","l","j","j","b","i"],
["b","b","b","b","b","l","b","b","i","i","i","i","l","o","o","z","z","b","b","t","t","t","z","l","l","l","b","b"],
["b","b","b","b","b","l","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","j","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","j","b","b","o","o","l","l","t","t","t","z","z","b","b","i","i","i","i","j","o","o","b","b"],
["b","b","b","b","b","j","j","b","o","o","l","s","s","t","z","z","s","s","b","b","s","s","b","j","o","o","b","l"],
["b","b","b","b","b","b","z","b","b","z","l","i","s","s","l","l","l","s","s","b","b","s","s","j","j","b","b","l"],
["b","b","b","b","b","b","z","z","b","z","z","i","j","j","j","i","l","j","j","j","b","b","t","t","t","b","l","l"],
["b","b","b","b","b","b","l","z","b","b","z","i","j","o","o","i","s","j","o","o","z","b","b","t","b","b","j","j"],
["b","b","b","b","b","b","l","l","l","b","b","i","l","o","o","i","s","s","o","o","z","z","b","b","b","o","o","j"],
["b","b","b","b","b","b","i","i","i","i","b","b","l","l","l","i","j","s","t","t","t","z","b","b","t","o","o","j"],
["b","b","b","b","b","b","b","b","t","s","s","b","b","b","j","j","j","z","z","t","b","b","b","t","t","t","z","z"],
["b","b","b","b","b","b","b","b","t","t","s","s","l","b","b","b","z","z","b","b","b","i","i","i","i","z","z","i"],
["b","b","b","b","b","b","b","b","t","o","o","z","l","l","l","b","b","b","b","j","j","j","t","t","t","j","j","i"],
["b","b","b","b","b","b","b","b","b","o","o","z","z","j","j","j","l","l","l","j","t","s","s","t","o","o","j","i"],
["b","b","b","b","b","b","b","b","i","i","i","i","z","j","i","i","i","i","l","t","t","t","s","s","o","o","j","i"]
],
"Rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,2,2,1,1,1,0,0,0,2],
[0,0,0,0,0,0,0,0,2,3,3,3,3,0,1,1,1,0,0,2,0,1,2,2,0,0,0,2],
[0,0,0,0,0,0,0,0,2,3,3,3,0,0,1,0,0,0,0,2,0,0,2,1,1,0,0,2],
[0,0,0,0,0,0,0,3,2,2,1,1,0,0,0,0,3,3,0,0,0,0,2,1,1,3,0,2],
[0,0,0,0,0,0,3,3,3,1,1,0,0,0,3,3,3,3,3,3,0,0,0,3,3,3,0,0],
[0,0,0,0,0,0,1,1,1,1,0,0,2,0,3,3,1,1,1,3,3,0,0,0,1,1,1,0],
[0,0,0,0,0,0,1,1,1,0,0,2,2,0,0,3,3,1,3,3,0,0,0,0,0,1,2,2],
[0,0,0,0,0,0,0,1,0,0,2,2,2,2,0,1,1,1,2,2,0,0,0,2,0,0,2,0],
[0,0,0,0,0,0,3,3,0,0,2,3,3,3,3,1,1,1,2,2,0,0,2,2,2,0,2,0],
[0,0,0,0,0,3,3,0,0,0,1,1,2,2,1,1,1,1,1,0,0,0,2,0,2,0,0,0],
[0,0,0,0,0,2,2,0,0,0,1,1,2,3,3,1,3,3,0,0,3,0,0,3,2,2,0,0],
[0,0,0,0,0,2,0,0,1,1,1,1,2,3,3,3,3,0,0,3,3,3,0,3,3,3,0,0],
[0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,0,0,0,2,2,1,1,1,3,3,0,0,1,1,1,1,2,1,1,0,0],
[0,0,0,0,0,2,2,0,0,0,2,1,1,1,3,3,1,1,0,0,3,3,0,2,1,1,0,0],
[0,0,0,0,0,0,2,0,0,0,2,2,1,1,1,1,1,1,1,0,0,3,3,2,2,0,0,0],
[0,0,0,0,0,0,2,2,0,0,0,2,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0],
[0,0,0,0,0,0,3,2,0,0,0,2,1,3,3,0,0,1,0,0,2,0,0,1,0,0,0,0],
[0,0,0,0,0,0,3,3,3,0,0,2,3,3,3,0,0,0,0,0,2,2,0,0,0,2,2,0],
[0,0,0,0,0,0,1,1,1,1,0,0,3,3,3,0,3,0,1,1,1,2,0,0,3,2,2,0],
[0,0,0,0,0,0,0,0,2,3,3,0,0,0,3,3,3,3,3,1,0,0,0,3,3,3,1,1],
[0,0,0,0,0,0,0,0,2,2,3,3,3,0,0,0,3,3,0,0,0,3,3,3,3,1,1,2],
[0,0,0,0,0,0,0,0,2,1,1,2,3,3,3,0,0,0,0,1,1,1,1,1,1,0,0,2],
[0,0,0,0,0,0,0,0,0,1,1,2,2,1,1,1,1,1,1,1,3,3,3,1,3,3,0,2],
[0,0,0,0,0,0,0,0,3,3,3,3,2,1,3,3,3,3,1,3,3,3,3,3,3,3,0,2]
]
},
{
"name":"30 x 30 blank",
"mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"30 x 30 checkerboard double",
"mino":[
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"30 x 30 checkerboard single",
"mino":[
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"]
],
"rotation":[
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
}
]
`)