1 /* coded by Ketmar // Invisible Vector <ketmar@ketmar.no-ip.org>
2 * Understanding is not required. Only obedience.
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, version 3 of the License ONLY.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 module iv
.glgfx0
/*is aliced*/;
18 import arsd
.simpledisplay
: SimpleWindow
;
24 // ////////////////////////////////////////////////////////////////////////// //
25 // 0:b; 1:g; 2:r; 3: nothing
26 __gshared
int vbufW
= 256, vbufH
= 192; // 128
27 __gshared
uint[] vbuf
; // ABGR
28 __gshared
bool blit2x
= true;
29 enum BlitType
{ Normal
, BlackWhite
, Green
, Red
}
30 __gshared
int blitType
= BlitType
.Normal
;
31 __gshared
int blitShine
= 0; // adds this to non-black colors
32 private __gshared
uint[] vbimg
; // RGBA
33 __gshared SimpleWindow vbwin
;
34 private __gshared
uint vbTexId
= 0;
37 // ////////////////////////////////////////////////////////////////////////// //
39 import arsd
.simpledisplay
;
41 if (vbwin
!is null) { if (!vbwin
.closed
) vbwin
.close(); delete vbwin
; flushGui(); }
42 if (vbimg
!is null) delete vbimg
;
43 if (vbuf
!is null) delete vbuf
;
50 SimpleWindow
glgfxInitWindow (string title
) {
51 import arsd
.simpledisplay
;
53 if (vbufW
< 1 || vbufH
< 1 || vbufW
> 4096 || vbufH
> 4096) assert(0, "invalid dimensions");
55 vbuf
.length
= vbufW
*vbufH
;
57 vbimg
.length
= vbufW
*vbufH
;
61 vbwin
= new SimpleWindow(vbufW
*(blit2x ?
2 : 1), vbufH
*(blit2x ?
2 : 1), title
, OpenGlOptions
.yes
, Resizablity
.fixedSize
);
63 vbwin
.redrawOpenGlScene
= delegate () {
68 vbwin
.visibleForTheFirstTime
= delegate () {
69 vbwin
.setAsCurrentOpenGlContext();
71 glconInit(vbufW
, vbufH
, (blit2x ?
2: 1));
72 vbwin
.redrawOpenGlScene();
79 if (vbwin
is null || vbwin
.closed || vbTexId
== 0) return;
82 auto sp
= cast(const(ubyte)*)vbuf
.ptr
;
83 auto dp
= cast(ubyte*)vbimg
.ptr
;
84 foreach (immutable _
; 0..vbufW
*vbufH
) {
99 glGetIntegerv(GL_MATRIX_MODE
, &glmatmode
);
100 glGetIntegerv(GL_TEXTURE_BINDING_2D
, &gltextbinding
);
101 glGetIntegerv(GL_VIEWPORT
, glviewport
.ptr
);
102 glGetIntegerv(GL_CURRENT_PROGRAM
, &oldprg
);
103 glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING
, &oldfbr
);
104 glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING
, &oldfbw
);
105 glMatrixMode(GL_PROJECTION
); glPushMatrix();
106 glMatrixMode(GL_MODELVIEW
); glPushMatrix();
107 glMatrixMode(GL_TEXTURE
); glPushMatrix();
108 glMatrixMode(GL_COLOR
); glPushMatrix();
109 glPushAttrib(/*GL_ENABLE_BIT|GL_COLOR_BUFFER_BIT|GL_CURRENT_BIT*/GL_ALL_ATTRIB_BITS
); // let's play safe
112 glPopAttrib(/*GL_ENABLE_BIT*/);
113 glMatrixMode(GL_PROJECTION
); glPopMatrix();
114 glMatrixMode(GL_MODELVIEW
); glPopMatrix();
115 glMatrixMode(GL_TEXTURE
); glPopMatrix();
116 glMatrixMode(GL_COLOR
); glPopMatrix();
117 glMatrixMode(glmatmode
);
118 glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT
, oldfbr
);
119 glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT
, oldfbw
);
120 glBindTexture(GL_TEXTURE_2D
, gltextbinding
);
121 glUseProgram(oldprg
);
122 glViewport(glviewport
.ptr
[0], glviewport
.ptr
[1], glviewport
.ptr
[2], glviewport
.ptr
[3]);
125 glTextureSubImage2D(vbTexId
, 0, 0/*x*/, 0/*y*/, vbufW
, vbufH
, GL_RGBA
, GL_UNSIGNED_BYTE
, vbimg
.ptr
);
132 glBindTexture(GL_TEXTURE_CUBE_MAP
, 0);
133 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT
, 0);
136 glMatrixMode(GL_PROJECTION
); // for ortho camera
138 // left, right, bottom, top, near, far
139 glOrtho(0, w
, h
, 0, -1, 1); // top-to-bottom
140 glViewport(0, 0, w
, h
);
141 glMatrixMode(GL_MODELVIEW
);
144 glEnable(GL_TEXTURE_2D
);
145 glDisable(GL_LIGHTING
);
146 glDisable(GL_DITHER
);
147 //glDisable(GL_BLEND);
148 glDisable(GL_DEPTH_TEST
);
149 //glEnable(GL_BLEND);
150 //glBlendFunc(GL_SRC_ALPHA, GL_ONE);
151 //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
153 glDisable(GL_STENCIL_TEST
);
155 glColor4f(1, 1, 1, 1);
156 glBindTexture(GL_TEXTURE_2D
, vbTexId
);
157 //scope(exit) glBindTexture(GL_TEXTURE_2D, 0);
159 glTexCoord2f(0.0f, 0.0f); glVertex2i(x
, y
); // top-left
160 glTexCoord2f(1.0f, 0.0f); glVertex2i(w
, y
); // top-right
161 glTexCoord2f(1.0f, 1.0f); glVertex2i(w
, h
); // bottom-right
162 glTexCoord2f(0.0f, 1.0f); glVertex2i(x
, h
); // bottom-left
167 private void glgfxInitTexture () {
168 if (vbTexId
) { glDeleteTextures(1, &vbTexId
); vbTexId
= 0; }
170 enum wrapOpt
= GL_REPEAT
;
171 enum filterOpt
= GL_NEAREST
; //GL_LINEAR;
172 enum ttype
= GL_UNSIGNED_BYTE
;
174 glGenTextures(1, &vbTexId
);
175 if (vbTexId
== 0) assert(0, "can't create cmdcon texture");
178 glGetIntegerv(GL_TEXTURE_BINDING_2D
, &gltextbinding
);
179 scope(exit
) glBindTexture(GL_TEXTURE_2D
, gltextbinding
);
181 glBindTexture(GL_TEXTURE_2D
, vbTexId
);
182 glTexParameterf(GL_TEXTURE_2D
, GL_TEXTURE_WRAP_S
, wrapOpt
);
183 glTexParameterf(GL_TEXTURE_2D
, GL_TEXTURE_WRAP_T
, wrapOpt
);
184 glTexParameteri(GL_TEXTURE_2D
, GL_TEXTURE_MIN_FILTER
, filterOpt
);
185 glTexParameteri(GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, filterOpt
);
186 //glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
187 //glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
189 GLfloat
[4] bclr
= 0.0;
190 glTexParameterfv(GL_TEXTURE_2D
, GL_TEXTURE_BORDER_COLOR
, bclr
.ptr
);
191 glTexImage2D(GL_TEXTURE_2D
, 0, GL_RGBA
, vbufW
, vbufH
, 0, GL_RGBA
, GL_UNSIGNED_BYTE
, vbimg
.ptr
);
195 // ////////////////////////////////////////////////////////////////////////// //
196 ubyte clampToByte(T
) (T n
) @safe pure nothrow @nogc
197 if (__traits(isIntegral
, T
) && (T
.sizeof
== 2 || T
.sizeof
== 4))
199 static if (__VERSION__
> 2067) pragma(inline
, true);
200 n
&= -cast(int)(n
>= 0);
201 return cast(ubyte)(n|
((255-cast(int)n
)>>31));
204 ubyte clampToByte(T
) (T n
) @safe pure nothrow @nogc
205 if (__traits(isIntegral
, T
) && T
.sizeof
== 1)
207 static if (__VERSION__
> 2067) pragma(inline
, true);
212 // ////////////////////////////////////////////////////////////////////////// //
215 /// vlRGBA struct to ease color components extraction/replacing
216 align(1) struct vlRGBA
{
220 static assert(vlRGBA
.sizeof
== VColor
.sizeof
);
224 vlAMask
= 0xff000000u
,
225 vlRMask
= 0x00ff0000u
,
226 vlGMask
= 0x0000ff00u
,
227 vlBMask
= 0x000000ffu
238 enum VColor Transparent
= vlAMask
; /// completely transparent pixel color
241 bool isTransparent(T
: VColor
) (T col
) @safe pure nothrow @nogc {
242 static if (__VERSION__
> 2067) pragma(inline
, true);
243 return ((col
&vlAMask
) == vlAMask
);
246 bool isOpaque(T
: VColor
) (T col
) @safe pure nothrow @nogc {
247 static if (__VERSION__
> 2067) pragma(inline
, true);
248 return ((col
&vlAMask
) == 0);
252 VColor
rgbcol(TR
, TG
, TB
, TA
=ubyte) (TR r
, TG g
, TB b
, TA a
=0) @safe pure nothrow @nogc
253 if (__traits(isIntegral
, TR
) && __traits(isIntegral
, TG
) && __traits(isIntegral
, TB
) && __traits(isIntegral
, TA
)) {
254 static if (__VERSION__
> 2067) pragma(inline
, true);
256 (clampToByte(a
)<<vlAShift
)|
257 (clampToByte(r
)<<vlRShift
)|
258 (clampToByte(g
)<<vlGShift
)|
259 (clampToByte(b
)<<vlBShift
);
262 alias rgbacol
= rgbcol
;
265 // generate some templates
266 private enum genRGBGetSet(string cname
) =
267 "ubyte rgb"~cname
~"() (VColor clr) @safe pure nothrow @nogc {\n"~
268 " static if (__VERSION__ > 2067) pragma(inline, true);\n"~
269 " return ((clr>>vl"~cname
[0]~"Shift)&0xff);\n"~
271 "VColor rgbSet"~cname
~"(T) (VColor clr, T v) @safe pure nothrow @nogc if (__traits(isIntegral, T)) {\n"~
272 " static if (__VERSION__ > 2067) pragma(inline, true);\n"~
273 " return (clr&~vl"~cname
[0]~"Mask)|(clampToByte(v)<<vl"~cname
[0]~"Shift);\n"~
276 mixin(genRGBGetSet
!"Alpha");
277 mixin(genRGBGetSet
!"Red");
278 mixin(genRGBGetSet
!"Green");
279 mixin(genRGBGetSet
!"Blue");
282 // ////////////////////////////////////////////////////////////////////////// //
283 void putPixel(TX
, TY
) (TX x
, TY y
, VColor col
) @trusted
284 if (__traits(isIntegral
, TX
) && __traits(isIntegral
, TY
))
286 static if (__VERSION__
> 2067) pragma(inline
, true);
287 immutable long xx
= cast(long)x
;
288 immutable long yy
= cast(long)y
;
289 if ((col
&vlAMask
) != vlAMask
&& xx
>= 0 && yy
>= 0 && xx
< vbufW
&& yy
< vbufH
) {
290 uint* da = vbuf
.ptr
+yy
*vbufW
+xx
;
292 immutable uint a
= 256-(col
>>24); // to not loose bits
293 immutable uint dc
= (*da)&0xffffff;
294 immutable uint srb
= (col
&0xff00ff);
295 immutable uint sg
= (col
&0x00ff00);
296 immutable uint drb
= (dc
&0xff00ff);
297 immutable uint dg
= (dc
&0x00ff00);
298 immutable uint orb
= (drb
+(((srb
-drb
)*a
+0x800080)>>8))&0xff00ff;
299 immutable uint og
= (dg
+(((sg
-dg
)*a
+0x008000)>>8))&0x00ff00;
307 void setPixel(TX
, TY
) (TX x
, TY y
, VColor col
) @trusted
308 if (__traits(isIntegral
, TX
) && __traits(isIntegral
, TY
))
310 static if (__VERSION__
> 2067) pragma(inline
, true);
311 immutable long xx
= cast(long)x
;
312 immutable long yy
= cast(long)y
;
313 if (xx
>= 0 && yy
>= 0 && xx
< vbufW
&& yy
< vbufH
) {
314 uint* da = vbuf
.ptr
+yy
*vbufW
+xx
;
320 // ////////////////////////////////////////////////////////////////////////// //
321 void clear (VColor col
) @trusted {
322 vbuf
.ptr
[0..vbufW
*vbufH
] = col
;
326 // ////////////////////////////////////////////////////////////////////////// //
327 void drawRect (int x
, int y
, int w
, int h
, immutable VColor col
) {
328 if (w
< 1 || h
< 1) return;
329 if (x
<= -w || y
<= -h || x
>= vbufW || y
>= vbufH ||
isTransparent(col
)) return;
330 if (x
< 0) { w
+= x
; x
= 0; }
331 if (y
< 0) { h
+= y
; h
= 0; }
332 if (x
+w
>= vbufW
) w
= vbufW
-x
;
333 if (y
+h
>= vbufH
) h
= vbufH
-y
;
334 assert(x
>= 0 && y
>= 0 && x
< vbufW
&& y
< vbufH
&& w
> 0 && h
> 0 && x
+w
<= vbufW
&& y
+h
<= vbufH
);
339 foreach (immutable yy
; y
+1..y
+h
-1) {
344 if (h
> 1) vbuf
[d
..d
+w
] = col
;
346 foreach (immutable yy
; y
..y
+h
) {
347 putPixel(x
, yy
, col
);
348 putPixel(x
+w
-1, yy
, col
);
350 foreach (immutable xx
; x
+1..x
+w
-1) {
351 putPixel(xx
, y
, col
);
352 if (h
> 1) putPixel(xx
, y
+h
-1, col
);
357 void fillRect (int x
, int y
, int w
, int h
, immutable VColor col
) {
358 if (w
< 1 || h
< 1) return;
359 if (x
<= -w || y
<= -h || x
>= vbufW || y
>= vbufH ||
isTransparent(col
)) return;
360 if (x
< 0) { w
+= x
; x
= 0; }
361 if (y
< 0) { h
+= y
; h
= 0; }
362 if (x
+w
>= vbufW
) w
= vbufW
-x
;
363 if (y
+h
>= vbufH
) h
= vbufH
-y
;
364 assert(x
>= 0 && y
>= 0 && x
< vbufW
&& y
< vbufH
&& w
> 0 && h
> 0 && x
+w
<= vbufW
&& y
+h
<= vbufH
);
367 foreach (immutable yy
; y
..y
+h
) {
372 foreach (immutable yy
; y
..y
+h
) {
373 foreach (immutable xx
; x
..x
+w
) {
374 putPixel(xx
, yy
, col
);
380 void hline (int x
, int y
, int len
, immutable VColor col
) { drawRect(x
, y
, len
, 1, col
); }
381 void vline (int x
, int y
, int len
, immutable VColor col
) { drawRect(x
, y
, 1, len
, col
); }
384 // ////////////////////////////////////////////////////////////////////////// //
385 void drawLine(bool lastPoint
=true) (int x0
, int y0
, int x1
, int y1
, immutable VColor col
) {
386 enum swap(string a
, string b
) = "{int tmp_="~a
~";"~a
~"="~b
~";"~b
~"=tmp_;}";
388 if ((col
&vlAMask
) == vlAMask
) return;
390 if (x0
== x1
&& y0
== y1
) {
391 static if (lastPoint
) putPixel(x0
, y0
, col
);
396 int wx0
= 0, wy0
= 0, wx1
= vbufW
-1, wy1
= vbufH
-1;
398 int stx
, sty
; // "steps" for x and y axes
399 int dsx
, dsy
; // "lengthes" for x and y axes
400 int dx2
, dy2
; // "double lengthes" for x and y axes
401 int xd
, yd
; // current coord
402 int e
; // "error" (as in bresenham algo)
408 // from left to right
409 if (x0
> wx1 || x1
< wx0
) return; // out of screen
410 stx
= 1; // going right
412 // from right to left
413 if (x1
> wx1 || x0
< wx0
) return; // out of screen
414 stx
= -1; // going left
419 mixin(swap
!("wx0", "wx1"));
423 // from top to bottom
424 if (y0
> wy1 || y1
< wy0
) return; // out of screen
425 sty
= 1; // going down
427 // from bottom to top
428 if (y1
> wy1 || y0
< wy0
) return; // out of screen
429 sty
= -1; // going up
434 mixin(swap
!("wy0", "wy1"));
441 mixin(swap
!("x0", "y0"));
442 mixin(swap
!("x1", "y1"));
443 mixin(swap
!("dsx", "dsy"));
444 mixin(swap
!("wx0", "wy0"));
445 mixin(swap
!("wx1", "wy1"));
446 mixin(swap
!("stx", "sty"));
460 int temp
= dx2
*(wy0
-y0
)-dsx
;
463 if (xd
> wx1
) return; // x is moved out of clipping rect, nothing to do
467 if (rem
> 0) { ++xd
; e
+= dy2
; }
471 if (!xfixed
&& x0
< wx0
) {
473 int temp
= dy2
*(wx0
-x0
);
476 if (yd
> wy1 || yd
== wy1
&& rem
>= dsx
) return;
479 if (rem
>= dsx
) { ++yd
; e
-= dx2
; }
483 int temp
= dx2
*(wy1
-y0
)+dsx
;
486 if (rem
== 0) --term
;
488 if (term
> wx1
) term
= wx1
; // clip at right
489 static if (lastPoint
) {
493 if (term
== xd
) return; // this is the only point, get out of here
495 if (sty
== -1) yd
= -yd
;
496 if (stx
== -1) { xd
= -xd
; term
= -term
; }
498 // draw it; `putPixel()` can omit checks
500 // inlined `putPixel(*d0, *d1, col)`
501 // this can be made even faster by precalculating `da` and making
502 // separate code branches for mixing and non-mixing drawing, but...
504 uint* da = vbuf
.ptr
+(*d1
)*vbufW
+(*d0
);
506 immutable uint a
= 256-(col
>>24); // to not loose bits
507 immutable uint dc
= (*da)&0xffffff;
508 immutable uint srb
= (col
&0xff00ff);
509 immutable uint sg
= (col
&0x00ff00);
510 immutable uint drb
= (dc
&0xff00ff);
511 immutable uint dg
= (dc
&0x00ff00);
512 immutable uint orb
= (drb
+(((srb
-drb
)*a
+0x800080)>>8))&0xff00ff;
513 immutable uint og
= (dg
+(((sg
-dg
)*a
+0x008000)>>8))&0x00ff00;
518 // done drawing, move coords
530 // ////////////////////////////////////////////////////////////////////////// //
531 private void plot4points() (int cx
, int cy
, int x
, int y
, VColor clr
) @trusted {
532 putPixel(cx
+x
, cy
+y
, clr
);
533 if (x
!= 0) putPixel(cx
-x
, cy
+y
, clr
);
534 if (y
!= 0) putPixel(cx
+x
, cy
-y
, clr
);
535 putPixel(cx
-x
, cy
-y
, clr
);
539 void drawCircle (int cx
, int cy
, int radius
, VColor clr
) @trusted {
540 if (radius
> 0 && !isTransparent(clr
)) {
541 int error
= -radius
, x
= radius
, y
= 0;
542 if (radius
== 1) { putPixel(cx
, cy
, clr
); return; }
544 plot4points(cx
, cy
, x
, y
, clr
);
545 plot4points(cx
, cy
, y
, x
, clr
);
548 if (error
>= 0) { --x
; error
-= x
*2; }
550 plot4points(cx
, cy
, x
, y
, clr
);
554 void fillCircle (int cx
, int cy
, int radius
, VColor clr
) @trusted {
555 if (radius
> 0 && !isTransparent(clr
)) {
556 int error
= -radius
, x
= radius
, y
= 0;
557 if (radius
== 1) { putPixel(cx
, cy
, clr
); return; }
563 hline(cx
-x
, cy
+last_y
, 2*x
+1, clr
);
564 if (x
!= 0 && last_y
!= 0) hline(cx
-x
, cy
-last_y
, 2*x
+1, clr
);
567 hline(cx
-last_y
, cy
+x
, 2*last_y
+1, clr
);
568 if (last_y
!= 0 && x
!= 0) hline(cx
-last_y
, cy
-x
, 2*last_y
+1, clr
);
579 void drawEllipse (int x0
, int y0
, int w
, int h
, VColor clr
) @trusted {
580 import std
.math
: abs
;
581 if (w
== 0 && h
== 0) return;
582 if (w
== 1) { vline(x0
, y0
, h
, clr
); return; }
583 if (h
== 1) { hline(x0
, y0
, w
, clr
); return; }
586 int a
= abs(x1
-x0
), b
= abs(y1
-y0
), b1
= b
&1; // values of diameter
587 long dx
= 4*(1-a
)*b
*b
, dy
= 4*(b1
+1)*a
*a
; // error increment
588 long err
= dx
+dy
+b1
*a
*a
; // error of 1.step
589 if (x0
> x1
) { x0
= x1
; x1
+= a
; } // if called with swapped points...
590 if (y0
> y1
) y0
= y1
; // ...exchange them
591 y0
+= (b
+1)/2; y1
= y0
-b1
; // starting pixel
592 a
*= 8*a
; b1
= 8*b
*b
;
595 putPixel(x1
, y0
, clr
); // I. Quadrant
596 putPixel(x0
, y0
, clr
); // II. Quadrant
597 putPixel(x0
, y1
, clr
); // III. Quadrant
598 putPixel(x1
, y1
, clr
); // IV. Quadrant
600 if (e2
>= dx
) { ++x0
; --x1
; err
+= dx
+= b1
; } // x step
601 if (e2
<= dy
) { ++y0
; --y1
; err
+= dy
+= a
; } // y step
604 // too early stop of flat ellipses a=1
605 putPixel(x0
-1, ++y0
, clr
); // complete tip of ellipse
606 putPixel(x0
-1, --y1
, clr
);
610 void fillEllipse (int x0
, int y0
, int w
, int h
, VColor clr
) @trusted {
611 import std
.math
: abs
;
612 if (w
== 0 && h
== 0) return;
613 if (w
== 1) { vline(x0
, y0
, h
, clr
); return; }
614 if (h
== 1) { hline(x0
, y0
, w
, clr
); return; }
617 int a
= abs(x1
-x0
), b
= abs(y1
-y0
), b1
= b
&1; // values of diameter
618 long dx
= 4*(1-a
)*b
*b
, dy
= 4*(b1
+1)*a
*a
; // error increment
619 long err
= dx
+dy
+b1
*a
*a
; // error of 1.step
620 int prev_y0
= -1, prev_y1
= -1;
621 if (x0
> x1
) { x0
= x1
; x1
+= a
; } // if called with swapped points...
622 if (y0
> y1
) y0
= y1
; // ...exchange them
623 y0
+= (b
+1)/2; y1
= y0
-b1
; // starting pixel
624 a
*= 8*a
; b1
= 8*b
*b
;
627 if (y0
!= prev_y0
) { hline(x0
, y0
, x1
-x0
+1, clr
); prev_y0
= y0
; }
628 if (y1
!= y0
&& y1
!= prev_y1
) { hline(x0
, y1
, x1
-x0
+1, clr
); prev_y1
= y1
; }
630 if (e2
>= dx
) { ++x0
; --x1
; err
+= dx
+= b1
; } // x step
631 if (e2
<= dy
) { ++y0
; --y1
; err
+= dy
+= a
; } // y step
634 // too early stop of flat ellipses a=1
635 putPixel(x0
-1, ++y0
, clr
); // complete tip of ellipse
636 putPixel(x0
-1, --y1
, clr
);
641 // //////////////////////////////////////////////////////////////////////// //
642 int charWidth(string type
="msx") () {
643 static if (type
== "msx") return 6;
644 else static if (type
== "dos") return 8;
645 else static if (type
== "d10") return 10;
646 else static assert(0, "invalid font type");
649 int charHeight(string type
="msx") () {
650 static if (type
== "msx") return 8;
651 else static if (type
== "dos") return 8;
652 else static if (type
== "d10") return 10;
653 else static assert(0, "invalid font type");
656 void drawCharWdt(string type
="msx") (int x
, int y
, int wdt
, int shift
, char ch
, VColor fgcol
, VColor bgcol
=Transparent
) @trusted {
657 static if (type
== "msx") { alias fontb8
= vlFont6
; enum fwdt
= 8; enum fhgt
= 8; enum fmask
= 0x80; }
658 else static if (type
== "dos") { alias fontb8
= dosFont8
; enum fwdt
= 8; enum fhgt
= 8; enum fmask
= 0x80; }
659 else static if (type
== "d10") { alias fontb8
= dosFont10
; enum fwdt
= 10; enum fhgt
= 10; enum fmask
= 0x8000; }
660 else static assert(0, "invalid font type");
662 if (wdt
< 1 || shift
>= fwdt
) return;
663 if (fgcol
== Transparent
&& bgcol
== Transparent
) return;
664 if (wdt
> fwdt
) wdt
= fwdt
;
665 if (shift
< 0) shift
= 0;
666 foreach (immutable int dy
; 0..fhgt
) {
667 ushort b
= cast(ushort)(fontb8
[pos
++]<<shift
);
668 foreach (immutable int dx
; 0..wdt
) {
669 VColor c
= (b
&fmask ? fgcol
: bgcol
);
670 if (!isTransparent(c
)) putPixel(x
+dx
, y
+dy
, c
);
682 OutLU
= 0x10, // left-up
683 OutRU
= 0x20, // right-up
684 OutLD
= 0x40, // left-down
685 OutRD
= 0x80, // right-down
689 void drawCharWdtOut(string type
="msx") (int x
, int y
, int wdt
, int shift
, char ch
, VColor fgcol
, VColor outcol
=Transparent
, ubyte ot
=0) @trusted {
690 static if (type
== "msx") { alias fontb8
= vlFont6
; enum fwdt
= 8; enum fhgt
= 8; enum fmask
= 0x80; }
691 else static if (type
== "dos") { alias fontb8
= dosFont8
; enum fwdt
= 8; enum fhgt
= 8; enum fmask
= 0x80; }
692 else static if (type
== "d10") { alias fontb8
= dosFont10
; enum fwdt
= 10; enum fhgt
= 10; enum fmask
= 0x8000; }
693 else static assert(0, "invalid font type");
694 if (fgcol
== Transparent
&& outcol
== Transparent
) return;
695 if (ot
== 0 || outcol
== Transparent
) {
696 // no outline? simple draw
697 drawCharWdt(x
, y
, wdt
, shift
, ch
, fgcol
, Transparent
);
701 if (wdt
< 1 || shift
>= fwdt
) return;
702 if (wdt
> 8) wdt
= fwdt
;
703 if (shift
< 0) shift
= 0;
704 ubyte[fhgt
+2][fwdt
+2] bmp
= 0; // char bitmap; 0: empty; 1: char; 2: outline
705 foreach (immutable dy
; 1..fhgt
+1) {
706 ushort b
= cast(ushort)(fontb8
[pos
++]<<shift
);
707 foreach (immutable dx
; 1..wdt
+1) {
712 if ((ot
&OutUp
) && bmp
[dy
-1][dx
] == 0) bmp
[dy
-1][dx
] = 2;
713 if ((ot
&OutDown
) && bmp
[dy
+1][dx
] == 0) bmp
[dy
+1][dx
] = 2;
714 if ((ot
&OutLeft
) && bmp
[dy
][dx
-1] == 0) bmp
[dy
][dx
-1] = 2;
715 if ((ot
&OutRight
) && bmp
[dy
][dx
+1] == 0) bmp
[dy
][dx
+1] = 2;
716 if ((ot
&OutLU
) && bmp
[dy
-1][dx
-1] == 0) bmp
[dy
-1][dx
-1] = 2;
717 if ((ot
&OutRU
) && bmp
[dy
-1][dx
+1] == 0) bmp
[dy
-1][dx
+1] = 2;
718 if ((ot
&OutLD
) && bmp
[dy
+1][dx
-1] == 0) bmp
[dy
+1][dx
-1] = 2;
719 if ((ot
&OutRD
) && bmp
[dy
+1][dx
+1] == 0) bmp
[dy
+1][dx
+1] = 2;
727 foreach (immutable int dy
; 0..fhgt
+2) {
728 foreach (immutable int dx
; 0..fwdt
+2) {
729 if (auto t
= bmp
[dy
][dx
]) putPixel(x
+dx
, y
+dy
, (t
== 1 ? fgcol
: outcol
));
734 void drawChar(string type
="msx") (int x
, int y
, char ch
, VColor fgcol
, VColor bgcol
=Transparent
) @trusted {
735 drawCharWdt
!type(x
, y
, charWidth
!type
, 0, ch
, fgcol
, bgcol
);
738 void drawCharOut(string type
="msx") (int x
, int y
, char ch
, VColor fgcol
, VColor outcol
=Transparent
, ubyte ot
=OutAll
) @trusted {
739 drawCharWdtOut
!type(x
, y
, charWidth
!type
, 0, ch
, fgcol
, outcol
, ot
);
742 void drawStr(string type
="msx") (int x
, int y
, const(char)[] str, VColor fgcol
, VColor bgcol
=Transparent
) @trusted {
743 foreach (immutable char ch
; str) {
744 drawChar
!type(x
, y
, ch
, fgcol
, bgcol
);
749 void drawStrOut(string type
="msx") (int x
, int y
, const(char)[] str, VColor fgcol
, VColor outcol
=Transparent
, ubyte ot
=OutAll
) @trusted {
750 foreach (immutable char ch
; str) {
751 drawCharOut
!type(x
, y
, ch
, fgcol
, outcol
, ot
);
756 int strWidth(string type
="msx") (const(char)[] str) {
757 return cast(int)str.length
*charWidth
!type
;
760 int charWidthProp(string type
="msx") (char ch
) @trusted pure {
761 static if (type
== "msx") { alias fontw8
= vlFontPropWidth
; }
762 else static if (type
== "dos") { alias fontw8
= dosFontPropWidth
; }
763 else static assert(0, "invalid font type");
764 return (fontw8
.ptr
[ch
]&0x0f);
767 int strWidthProp(string type
="msx") (const(char)[] str) @trusted pure {
768 static if (type
== "msx") { alias fontw8
= vlFontPropWidth
; }
769 else static if (type
== "dos") { alias fontw8
= dosFontPropWidth
; }
770 else static assert(0, "invalid font type");
772 foreach (immutable char ch
; str) wdt
+= (fontw8
[ch
]&0x0f)+1;
773 if (wdt
> 0) --wdt
; // don't count last empty pixel
777 int drawCharProp(string type
="msx") (int x
, int y
, char ch
, VColor fgcol
, VColor bgcol
=Transparent
) @trusted {
778 static if (type
== "msx") { alias fontw8
= vlFontPropWidth
; }
779 else static if (type
== "dos") { alias fontw8
= dosFontPropWidth
; }
780 else static assert(0, "invalid font type");
781 immutable int wdt
= (fontw8
[ch
]&0x0f);
782 drawCharWdt
!type(x
, y
, wdt
, fontw8
[ch
]>>4, ch
, fgcol
, bgcol
);
786 int drawCharPropOut(string type
="msx") (int x
, int y
, char ch
, VColor fgcol
, VColor outcol
=Transparent
, ubyte ot
=OutAll
) @trusted {
787 static if (type
== "msx") { alias fontw8
= vlFontPropWidth
; }
788 else static if (type
== "dos") { alias fontw8
= dosFontPropWidth
; }
789 else static assert(0, "invalid font type");
790 immutable int wdt
= (fontw8
[ch
]&0x0f);
791 drawCharWdtOut
!type(x
, y
, wdt
, fontw8
[ch
]>>4, ch
, fgcol
, outcol
, ot
);
795 int drawStrProp(string type
="msx") (int x
, int y
, const(char)[] str, VColor fgcol
, VColor bgcol
=Transparent
) @trusted {
798 foreach (immutable char ch
; str) {
800 if (!isTransparent(bgcol
)) foreach (int dy
; 0..8) putPixel(x
, y
+dy
, bgcol
);
804 x
+= drawCharProp
!type(x
, y
, ch
, fgcol
, bgcol
);
809 int drawStrPropOut(string type
="msx") (int x
, int y
, const(char)[] str, VColor fgcol
, VColor outcol
=Transparent
, ubyte ot
=OutAll
) @trusted {
811 foreach (immutable char ch
; str) {
812 x
+= drawCharPropOut
!type(x
, y
, ch
, fgcol
, outcol
, ot
)+1;
814 if (x
> sx
) --x
; // don't count last empty pixel
819 // ////////////////////////////////////////////////////////////////////////// //
820 public static immutable ubyte[256*8] vlFont6
= [
3129 // bits 4..7: lshift
3130 public immutable ubyte[256] vlFontPropWidth
= () {
3132 foreach (immutable cnum
; 0..256) {
3133 import core
.bitop
: bsf, bsr;
3135 (cnum
>= 32 && cnum
<= 127) ||
3136 (cnum
>= 143 && cnum
<= 144) ||
3137 (cnum
>= 166 && cnum
<= 167) ||
3138 (cnum
>= 192 && cnum
<= 255);
3142 foreach (immutable dy
; 0..8) {
3143 immutable b
= vlFont6
[cnum
*8+dy
];
3145 immutable mn
= 7-bsr(b
);
3146 if (mn
< shift
) shift
= mn
;
3151 foreach (immutable dy
; 0..8) {
3152 immutable b
= (vlFont6
[cnum
*8+dy
]<<shift
);
3153 immutable cwdt
= (b ?
8-bsf(b
) : 0);
3154 if (cwdt
> wdt
) wdt
= cast(ubyte)cwdt
;
3157 case 0: wdt
= 8; break; // 8px space
3158 case 32: wdt
= 5; break; // 5px space
3159 case 17: .. case 27: wdt
= 8; break; // single frames
3160 case 48: .. case 57: wdt
= 5; break; // digits are monospaced
3161 case 127: .. case 142: wdt
= 8; break; // filled frames
3162 case 145: .. case 151: wdt
= 8; break; // filled frames
3163 case 155: .. case 159: wdt
= 8; break; // filled frames
3166 res
[cnum
] = (wdt
&0x0f)|
((shift
<<4)&0xf0);
3172 public static immutable ubyte[256*8] dosFont8
= [
5481 // bits 4..7: lshift
5482 public immutable ubyte[256] dosFontPropWidth
= () {
5484 foreach (immutable cnum
; 0..256) {
5485 import core
.bitop
: bsf, bsr;
5487 (cnum
>= 32 && cnum
<= 127) ||
5488 (cnum
>= 143 && cnum
<= 144) ||
5489 (cnum
>= 166 && cnum
<= 167) ||
5490 (cnum
>= 192 && cnum
<= 255);
5494 foreach (immutable dy
; 0..8) {
5495 immutable b
= dosFont8
[cnum
*8+dy
];
5497 immutable mn
= 7-bsr(b
);
5498 if (mn
< shift
) shift
= mn
;
5503 foreach (immutable dy
; 0..8) {
5504 immutable b
= (dosFont8
[cnum
*8+dy
]<<shift
);
5505 immutable cwdt
= (b ?
8-bsf(b
) : 0);
5506 if (cwdt
> wdt
) wdt
= cast(ubyte)cwdt
;
5509 case 0: wdt
= 8; break; // 8px space
5510 case 32: wdt
= 5; break; // 5px space
5511 case 48: .. case 57: wdt
= 5; break; // digits are monospaced
5512 case 176: .. case 223: wdt
= 8; break; // pseudographics (frames, etc)
5515 res
[cnum
] = (wdt
&0x0f)|
((shift
<<4)&0xf0);
5521 static public immutable ushort[256*10] dosFont10
= [
5523 0b_0000000000_000000,
5524 0b_0000000000_000000,
5525 0b_0000000000_000000,
5526 0b_0000000000_000000,
5527 0b_0000000000_000000,
5528 0b_0000000000_000000,
5529 0b_0000000000_000000,
5530 0b_0000000000_000000,
5531 0b_0000000000_000000,
5532 0b_0000000000_000000,
5534 0b_0000000000_000000,
5535 0b_0011111100_000000,
5536 0b_0100000010_000000,
5537 0b_0101001010_000000,
5538 0b_0100000010_000000,
5539 0b_0101111010_000000,
5540 0b_0100110010_000000,
5541 0b_0010000100_000000,
5542 0b_0001111000_000000,
5543 0b_0000000000_000000,
5545 0b_0000000000_000000,
5546 0b_0011111100_000000,
5547 0b_0111111110_000000,
5548 0b_0110110110_000000,
5549 0b_0111111110_000000,
5550 0b_0110000110_000000,
5551 0b_0111001110_000000,
5552 0b_0011111100_000000,
5553 0b_0001111000_000000,
5554 0b_0000000000_000000,
5556 0b_0000000000_000000,
5557 0b_0011101110_000000,
5558 0b_0111111111_000000,
5559 0b_0111111111_000000,
5560 0b_0111111111_000000,
5561 0b_0011111110_000000,
5562 0b_0001111100_000000,
5563 0b_0000111000_000000,
5564 0b_0000010000_000000,
5565 0b_0000000000_000000,
5567 0b_0000010000_000000,
5568 0b_0000111000_000000,
5569 0b_0001111100_000000,
5570 0b_0011111110_000000,
5571 0b_0111111111_000000,
5572 0b_0011111110_000000,
5573 0b_0001111100_000000,
5574 0b_0000111000_000000,
5575 0b_0000010000_000000,
5576 0b_0000000000_000000,
5578 0b_0000000000_000000,
5579 0b_0000111000_000000,
5580 0b_0001111100_000000,
5581 0b_0000111000_000000,
5582 0b_0011111110_000000,
5583 0b_0111111111_000000,
5584 0b_0011010110_000000,
5585 0b_0000010000_000000,
5586 0b_0000111000_000000,
5587 0b_0000000000_000000,
5589 0b_0000010000_000000,
5590 0b_0000111000_000000,
5591 0b_0001111100_000000,
5592 0b_0011111110_000000,
5593 0b_0111111111_000000,
5594 0b_0111111111_000000,
5595 0b_0011010110_000000,
5596 0b_0000010000_000000,
5597 0b_0000111000_000000,
5598 0b_0000000000_000000,
5600 0b_0000000000_000000,
5601 0b_0000000000_000000,
5602 0b_0000000000_000000,
5603 0b_0000110000_000000,
5604 0b_0001111000_000000,
5605 0b_0001111000_000000,
5606 0b_0000110000_000000,
5607 0b_0000000000_000000,
5608 0b_0000000000_000000,
5609 0b_0000000000_000000,
5611 0b_1111111111_000000,
5612 0b_1111111111_000000,
5613 0b_1111111111_000000,
5614 0b_1111001111_000000,
5615 0b_1110000111_000000,
5616 0b_1110000111_000000,
5617 0b_1111001111_000000,
5618 0b_1111111111_000000,
5619 0b_1111111111_000000,
5620 0b_1111111111_000000,
5622 0b_0000000000_000000,
5623 0b_0000000000_000000,
5624 0b_0001111000_000000,
5625 0b_0011001100_000000,
5626 0b_0010000100_000000,
5627 0b_0010000100_000000,
5628 0b_0011001100_000000,
5629 0b_0001111000_000000,
5630 0b_0000000000_000000,
5631 0b_0000000000_000000,
5633 0b_1111111111_000000,
5634 0b_1111111111_000000,
5635 0b_1110000111_000000,
5636 0b_1100110011_000000,
5637 0b_1101111011_000000,
5638 0b_1101111011_000000,
5639 0b_1100110011_000000,
5640 0b_1110000111_000000,
5641 0b_1111111111_000000,
5642 0b_1111111111_000000,
5644 0b_0000000000_000000,
5645 0b_0000011110_000000,
5646 0b_0000001110_000000,
5647 0b_0000011110_000000,
5648 0b_0011111010_000000,
5649 0b_0110011000_000000,
5650 0b_0110011000_000000,
5651 0b_0110011000_000000,
5652 0b_0011110000_000000,
5653 0b_0000000000_000000,
5655 0b_0000000000_000000,
5656 0b_0001111000_000000,
5657 0b_0011001100_000000,
5658 0b_0011001100_000000,
5659 0b_0011001100_000000,
5660 0b_0001111000_000000,
5661 0b_0000110000_000000,
5662 0b_0011111100_000000,
5663 0b_0000110000_000000,
5664 0b_0000000000_000000,
5666 0b_0000010000_000000,
5667 0b_0000011000_000000,
5668 0b_0000011100_000000,
5669 0b_0000010100_000000,
5670 0b_0000010100_000000,
5671 0b_0000010000_000000,
5672 0b_0001110000_000000,
5673 0b_0011110000_000000,
5674 0b_0001100000_000000,
5675 0b_0000000000_000000,
5677 0b_0000000000_000000,
5678 0b_0001111110_000000,
5679 0b_0001111110_000000,
5680 0b_0001000010_000000,
5681 0b_0001000010_000000,
5682 0b_0001000110_000000,
5683 0b_0011001110_000000,
5684 0b_0111000100_000000,
5685 0b_0010000000_000000,
5686 0b_0000000000_000000,
5688 0b_0000000000_000000,
5689 0b_0000110000_000000,
5690 0b_0110110110_000000,
5691 0b_0001111000_000000,
5692 0b_0111001110_000000,
5693 0b_0111001110_000000,
5694 0b_0001111000_000000,
5695 0b_0110110110_000000,
5696 0b_0000110000_000000,
5697 0b_0000000000_000000,
5699 0b_0001000000_000000,
5700 0b_0001100000_000000,
5701 0b_0001110000_000000,
5702 0b_0001111000_000000,
5703 0b_0001111100_000000,
5704 0b_0001111000_000000,
5705 0b_0001110000_000000,
5706 0b_0001100000_000000,
5707 0b_0001000000_000000,
5708 0b_0000000000_000000,
5710 0b_0000000100_000000,
5711 0b_0000001100_000000,
5712 0b_0000011100_000000,
5713 0b_0000111100_000000,
5714 0b_0001111100_000000,
5715 0b_0000111100_000000,
5716 0b_0000011100_000000,
5717 0b_0000001100_000000,
5718 0b_0000000100_000000,
5719 0b_0000000000_000000,
5721 0b_0000000000_000000,
5722 0b_0000110000_000000,
5723 0b_0001111000_000000,
5724 0b_0011111100_000000,
5725 0b_0000110000_000000,
5726 0b_0000110000_000000,
5727 0b_0011111100_000000,
5728 0b_0001111000_000000,
5729 0b_0000110000_000000,
5730 0b_0000000000_000000,
5732 0b_0000000000_000000,
5733 0b_0011001100_000000,
5734 0b_0011001100_000000,
5735 0b_0011001100_000000,
5736 0b_0011001100_000000,
5737 0b_0011001100_000000,
5738 0b_0000000000_000000,
5739 0b_0011001100_000000,
5740 0b_0000000000_000000,
5741 0b_0000000000_000000,
5743 0b_0000000000_000000,
5744 0b_0011111110_000000,
5745 0b_0110110110_000000,
5746 0b_0110110110_000000,
5747 0b_0011110110_000000,
5748 0b_0000110110_000000,
5749 0b_0000110110_000000,
5750 0b_0000110110_000000,
5751 0b_0000000000_000000,
5752 0b_0000000000_000000,
5754 0b_0000000000_000000,
5755 0b_0001111100_000000,
5756 0b_0011000000_000000,
5757 0b_0001111100_000000,
5758 0b_0011000110_000000,
5759 0b_0001111100_000000,
5760 0b_0000000110_000000,
5761 0b_0001111100_000000,
5762 0b_0000000000_000000,
5763 0b_0000000000_000000,
5765 0b_0000000000_000000,
5766 0b_0000000000_000000,
5767 0b_0000000000_000000,
5768 0b_0000000000_000000,
5769 0b_0000000000_000000,
5770 0b_0111111110_000000,
5771 0b_0111111110_000000,
5772 0b_0111111110_000000,
5773 0b_0000000000_000000,
5774 0b_0000000000_000000,
5776 0b_0000000000_000000,
5777 0b_0000110000_000000,
5778 0b_0001111000_000000,
5779 0b_0011111100_000000,
5780 0b_0000110000_000000,
5781 0b_0000110000_000000,
5782 0b_0011111100_000000,
5783 0b_0001111000_000000,
5784 0b_0000110000_000000,
5785 0b_1111111111_000000,
5787 0b_0000000000_000000,
5788 0b_0000110000_000000,
5789 0b_0001111000_000000,
5790 0b_0011111100_000000,
5791 0b_0000110000_000000,
5792 0b_0000110000_000000,
5793 0b_0000110000_000000,
5794 0b_0000110000_000000,
5795 0b_0000110000_000000,
5796 0b_0000000000_000000,
5798 0b_0000000000_000000,
5799 0b_0000110000_000000,
5800 0b_0000110000_000000,
5801 0b_0000110000_000000,
5802 0b_0000110000_000000,
5803 0b_0000110000_000000,
5804 0b_0011111100_000000,
5805 0b_0001111000_000000,
5806 0b_0000110000_000000,
5807 0b_0000000000_000000,
5809 0b_0000000000_000000,
5810 0b_0000000000_000000,
5811 0b_0000011000_000000,
5812 0b_0000001100_000000,
5813 0b_0111111110_000000,
5814 0b_0000001100_000000,
5815 0b_0000011000_000000,
5816 0b_0000000000_000000,
5817 0b_0000000000_000000,
5818 0b_0000000000_000000,
5820 0b_0000000000_000000,
5821 0b_0000000000_000000,
5822 0b_0001100000_000000,
5823 0b_0011000000_000000,
5824 0b_0111111110_000000,
5825 0b_0011000000_000000,
5826 0b_0001100000_000000,
5827 0b_0000000000_000000,
5828 0b_0000000000_000000,
5829 0b_0000000000_000000,
5831 0b_0000000000_000000,
5832 0b_0000000000_000000,
5833 0b_0000000000_000000,
5834 0b_0000000000_000000,
5835 0b_0110000000_000000,
5836 0b_0110000000_000000,
5837 0b_0110000000_000000,
5838 0b_0111111110_000000,
5839 0b_0000000000_000000,
5840 0b_0000000000_000000,
5842 0b_0000000000_000000,
5843 0b_0000000000_000000,
5844 0b_0001000100_000000,
5845 0b_0011000110_000000,
5846 0b_0111111111_000000,
5847 0b_0011000110_000000,
5848 0b_0001000100_000000,
5849 0b_0000000000_000000,
5850 0b_0000000000_000000,
5851 0b_0000000000_000000,
5853 0b_0000000000_000000,
5854 0b_0000000000_000000,
5855 0b_0000010000_000000,
5856 0b_0000111000_000000,
5857 0b_0001111100_000000,
5858 0b_0011111110_000000,
5859 0b_0111111111_000000,
5860 0b_0000000000_000000,
5861 0b_0000000000_000000,
5862 0b_0000000000_000000,
5864 0b_0000000000_000000,
5865 0b_0000000000_000000,
5866 0b_0111111111_000000,
5867 0b_0011111110_000000,
5868 0b_0001111100_000000,
5869 0b_0000111000_000000,
5870 0b_0000010000_000000,
5871 0b_0000000000_000000,
5872 0b_0000000000_000000,
5873 0b_0000000000_000000,
5875 0b_0000000000_000000,
5876 0b_0000000000_000000,
5877 0b_0000000000_000000,
5878 0b_0000000000_000000,
5879 0b_0000000000_000000,
5880 0b_0000000000_000000,
5881 0b_0000000000_000000,
5882 0b_0000000000_000000,
5883 0b_0000000000_000000,
5884 0b_0000000000_000000,
5886 0b_0000000000_000000,
5887 0b_0000110000_000000,
5888 0b_0001111000_000000,
5889 0b_0001111000_000000,
5890 0b_0000110000_000000,
5891 0b_0000110000_000000,
5892 0b_0000000000_000000,
5893 0b_0000110000_000000,
5894 0b_0000000000_000000,
5895 0b_0000000000_000000,
5897 0b_0000000000_000000,
5898 0b_0001101100_000000,
5899 0b_0001101100_000000,
5900 0b_0001101100_000000,
5901 0b_0000000000_000000,
5902 0b_0000000000_000000,
5903 0b_0000000000_000000,
5904 0b_0000000000_000000,
5905 0b_0000000000_000000,
5906 0b_0000000000_000000,
5908 0b_0000000000_000000,
5909 0b_0001101100_000000,
5910 0b_0001101100_000000,
5911 0b_0111111111_000000,
5912 0b_0001101100_000000,
5913 0b_0111111111_000000,
5914 0b_0001101100_000000,
5915 0b_0001101100_000000,
5916 0b_0000000000_000000,
5917 0b_0000000000_000000,
5919 0b_0000010000_000000,
5920 0b_0001111100_000000,
5921 0b_0011010110_000000,
5922 0b_0011010000_000000,
5923 0b_0001111100_000000,
5924 0b_0000010110_000000,
5925 0b_0011010110_000000,
5926 0b_0001111100_000000,
5927 0b_0000010000_000000,
5928 0b_0000000000_000000,
5930 0b_0000000000_000000,
5931 0b_0011000110_000000,
5932 0b_0011001100_000000,
5933 0b_0000011000_000000,
5934 0b_0000110000_000000,
5935 0b_0001100110_000000,
5936 0b_0011000110_000000,
5937 0b_0000000000_000000,
5938 0b_0000000000_000000,
5939 0b_0000000000_000000,
5941 0b_0000000000_000000,
5942 0b_0001110000_000000,
5943 0b_0011001100_000000,
5944 0b_0011001100_000000,
5945 0b_0001111110_000000,
5946 0b_0011001100_000000,
5947 0b_0011001100_000000,
5948 0b_0001110110_000000,
5949 0b_0000000000_000000,
5950 0b_0000000000_000000,
5952 0b_0000000000_000000,
5953 0b_0000111000_000000,
5954 0b_0000110000_000000,
5955 0b_0001100000_000000,
5956 0b_0000000000_000000,
5957 0b_0000000000_000000,
5958 0b_0000000000_000000,
5959 0b_0000000000_000000,
5960 0b_0000000000_000000,
5961 0b_0000000000_000000,
5963 0b_0000000000_000000,
5964 0b_0000011000_000000,
5965 0b_0000110000_000000,
5966 0b_0001100000_000000,
5967 0b_0001100000_000000,
5968 0b_0001100000_000000,
5969 0b_0000110000_000000,
5970 0b_0000011000_000000,
5971 0b_0000000000_000000,
5972 0b_0000000000_000000,
5974 0b_0000000000_000000,
5975 0b_0001100000_000000,
5976 0b_0000110000_000000,
5977 0b_0000011000_000000,
5978 0b_0000011000_000000,
5979 0b_0000011000_000000,
5980 0b_0000110000_000000,
5981 0b_0001100000_000000,
5982 0b_0000000000_000000,
5983 0b_0000000000_000000,
5985 0b_0000000000_000000,
5986 0b_0000000000_000000,
5987 0b_0011001100_000000,
5988 0b_0001111000_000000,
5989 0b_0111111110_000000,
5990 0b_0001111000_000000,
5991 0b_0011001100_000000,
5992 0b_0000000000_000000,
5993 0b_0000000000_000000,
5994 0b_0000000000_000000,
5996 0b_0000000000_000000,
5997 0b_0000000000_000000,
5998 0b_0000110000_000000,
5999 0b_0000110000_000000,
6000 0b_0011111100_000000,
6001 0b_0000110000_000000,
6002 0b_0000110000_000000,
6003 0b_0000000000_000000,
6004 0b_0000000000_000000,
6005 0b_0000000000_000000,
6007 0b_0000000000_000000,
6008 0b_0000000000_000000,
6009 0b_0000000000_000000,
6010 0b_0000000000_000000,
6011 0b_0000000000_000000,
6012 0b_0000000000_000000,
6013 0b_0000110000_000000,
6014 0b_0000110000_000000,
6015 0b_0001100000_000000,
6016 0b_0000000000_000000,
6018 0b_0000000000_000000,
6019 0b_0000000000_000000,
6020 0b_0000000000_000000,
6021 0b_0000000000_000000,
6022 0b_0011111100_000000,
6023 0b_0000000000_000000,
6024 0b_0000000000_000000,
6025 0b_0000000000_000000,
6026 0b_0000000000_000000,
6027 0b_0000000000_000000,
6029 0b_0000000000_000000,
6030 0b_0000000000_000000,
6031 0b_0000000000_000000,
6032 0b_0000000000_000000,
6033 0b_0000000000_000000,
6034 0b_0000000000_000000,
6035 0b_0000110000_000000,
6036 0b_0000110000_000000,
6037 0b_0000000000_000000,
6038 0b_0000000000_000000,
6040 0b_0000000000_000000,
6041 0b_0000000110_000000,
6042 0b_0000001100_000000,
6043 0b_0000011000_000000,
6044 0b_0000110000_000000,
6045 0b_0001100000_000000,
6046 0b_0011000000_000000,
6047 0b_0110000000_000000,
6048 0b_0000000000_000000,
6049 0b_0000000000_000000,
6051 0b_0000000000_000000,
6052 0b_0001111100_000000,
6053 0b_0011001110_000000,
6054 0b_0011011110_000000,
6055 0b_0011111110_000000,
6056 0b_0011110110_000000,
6057 0b_0011100110_000000,
6058 0b_0001111100_000000,
6059 0b_0000000000_000000,
6060 0b_0000000000_000000,
6062 0b_0000000000_000000,
6063 0b_0000110000_000000,
6064 0b_0001110000_000000,
6065 0b_0000110000_000000,
6066 0b_0000110000_000000,
6067 0b_0000110000_000000,
6068 0b_0000110000_000000,
6069 0b_0011111100_000000,
6070 0b_0000000000_000000,
6071 0b_0000000000_000000,
6073 0b_0000000000_000000,
6074 0b_0001111100_000000,
6075 0b_0011000110_000000,
6076 0b_0000000110_000000,
6077 0b_0000111100_000000,
6078 0b_0001100000_000000,
6079 0b_0011000110_000000,
6080 0b_0011111110_000000,
6081 0b_0000000000_000000,
6082 0b_0000000000_000000,
6084 0b_0000000000_000000,
6085 0b_0001111100_000000,
6086 0b_0011000110_000000,
6087 0b_0000000110_000000,
6088 0b_0000011100_000000,
6089 0b_0000000110_000000,
6090 0b_0011000110_000000,
6091 0b_0001111100_000000,
6092 0b_0000000000_000000,
6093 0b_0000000000_000000,
6095 0b_0000000000_000000,
6096 0b_0000011100_000000,
6097 0b_0000111100_000000,
6098 0b_0001101100_000000,
6099 0b_0011001100_000000,
6100 0b_0011111110_000000,
6101 0b_0000001100_000000,
6102 0b_0000011110_000000,
6103 0b_0000000000_000000,
6104 0b_0000000000_000000,
6106 0b_0000000000_000000,
6107 0b_0011111110_000000,
6108 0b_0011000000_000000,
6109 0b_0011000000_000000,
6110 0b_0011111100_000000,
6111 0b_0000000110_000000,
6112 0b_0011000110_000000,
6113 0b_0001111100_000000,
6114 0b_0000000000_000000,
6115 0b_0000000000_000000,
6117 0b_0000000000_000000,
6118 0b_0000111100_000000,
6119 0b_0001100000_000000,
6120 0b_0011000000_000000,
6121 0b_0011111100_000000,
6122 0b_0011000110_000000,
6123 0b_0011000110_000000,
6124 0b_0001111100_000000,
6125 0b_0000000000_000000,
6126 0b_0000000000_000000,
6128 0b_0000000000_000000,
6129 0b_0011111110_000000,
6130 0b_0011000110_000000,
6131 0b_0000000110_000000,
6132 0b_0000001100_000000,
6133 0b_0000011000_000000,
6134 0b_0000110000_000000,
6135 0b_0000110000_000000,
6136 0b_0000000000_000000,
6137 0b_0000000000_000000,
6139 0b_0000000000_000000,
6140 0b_0001111100_000000,
6141 0b_0011000110_000000,
6142 0b_0011000110_000000,
6143 0b_0001111100_000000,
6144 0b_0011000110_000000,
6145 0b_0011000110_000000,
6146 0b_0001111100_000000,
6147 0b_0000000000_000000,
6148 0b_0000000000_000000,
6150 0b_0000000000_000000,
6151 0b_0001111100_000000,
6152 0b_0011000110_000000,
6153 0b_0011000110_000000,
6154 0b_0001111110_000000,
6155 0b_0000000110_000000,
6156 0b_0000001100_000000,
6157 0b_0001111000_000000,
6158 0b_0000000000_000000,
6159 0b_0000000000_000000,
6161 0b_0000000000_000000,
6162 0b_0000000000_000000,
6163 0b_0000110000_000000,
6164 0b_0000110000_000000,
6165 0b_0000000000_000000,
6166 0b_0000000000_000000,
6167 0b_0000110000_000000,
6168 0b_0000110000_000000,
6169 0b_0000000000_000000,
6170 0b_0000000000_000000,
6172 0b_0000000000_000000,
6173 0b_0000000000_000000,
6174 0b_0000110000_000000,
6175 0b_0000110000_000000,
6176 0b_0000000000_000000,
6177 0b_0000000000_000000,
6178 0b_0000110000_000000,
6179 0b_0000110000_000000,
6180 0b_0001100000_000000,
6181 0b_0000000000_000000,
6183 0b_0000000000_000000,
6184 0b_0000001100_000000,
6185 0b_0000011000_000000,
6186 0b_0000110000_000000,
6187 0b_0001100000_000000,
6188 0b_0000110000_000000,
6189 0b_0000011000_000000,
6190 0b_0000001100_000000,
6191 0b_0000000000_000000,
6192 0b_0000000000_000000,
6194 0b_0000000000_000000,
6195 0b_0000000000_000000,
6196 0b_0000000000_000000,
6197 0b_0011111100_000000,
6198 0b_0000000000_000000,
6199 0b_0011111100_000000,
6200 0b_0000000000_000000,
6201 0b_0000000000_000000,
6202 0b_0000000000_000000,
6203 0b_0000000000_000000,
6205 0b_0000000000_000000,
6206 0b_0001100000_000000,
6207 0b_0000110000_000000,
6208 0b_0000011000_000000,
6209 0b_0000001100_000000,
6210 0b_0000011000_000000,
6211 0b_0000110000_000000,
6212 0b_0001100000_000000,
6213 0b_0000000000_000000,
6214 0b_0000000000_000000,
6216 0b_0000000000_000000,
6217 0b_0001111000_000000,
6218 0b_0011001100_000000,
6219 0b_0000001100_000000,
6220 0b_0000001100_000000,
6221 0b_0000011000_000000,
6222 0b_0000110000_000000,
6223 0b_0000000000_000000,
6224 0b_0000110000_000000,
6225 0b_0000000000_000000,
6227 0b_0000000000_000000,
6228 0b_0011111100_000000,
6229 0b_0110000110_000000,
6230 0b_0110011110_000000,
6231 0b_0110110110_000000,
6232 0b_0110011110_000000,
6233 0b_0110000000_000000,
6234 0b_0011111100_000000,
6235 0b_0000000000_000000,
6236 0b_0000000000_000000,
6238 0b_0000000000_000000,
6239 0b_0001111100_000000,
6240 0b_0011000110_000000,
6241 0b_0011000110_000000,
6242 0b_0011111110_000000,
6243 0b_0011000110_000000,
6244 0b_0011000110_000000,
6245 0b_0011000110_000000,
6246 0b_0000000000_000000,
6247 0b_0000000000_000000,
6249 0b_0000000000_000000,
6250 0b_0011111100_000000,
6251 0b_0011000110_000000,
6252 0b_0011000110_000000,
6253 0b_0011111100_000000,
6254 0b_0011000110_000000,
6255 0b_0011000110_000000,
6256 0b_0011111100_000000,
6257 0b_0000000000_000000,
6258 0b_0000000000_000000,
6260 0b_0000000000_000000,
6261 0b_0001111100_000000,
6262 0b_0011000110_000000,
6263 0b_0011000000_000000,
6264 0b_0011000000_000000,
6265 0b_0011000000_000000,
6266 0b_0011000110_000000,
6267 0b_0001111100_000000,
6268 0b_0000000000_000000,
6269 0b_0000000000_000000,
6271 0b_0000000000_000000,
6272 0b_0011111000_000000,
6273 0b_0011001100_000000,
6274 0b_0011000110_000000,
6275 0b_0011000110_000000,
6276 0b_0011000110_000000,
6277 0b_0011001100_000000,
6278 0b_0011111000_000000,
6279 0b_0000000000_000000,
6280 0b_0000000000_000000,
6282 0b_0000000000_000000,
6283 0b_0011111110_000000,
6284 0b_0011000000_000000,
6285 0b_0011000000_000000,
6286 0b_0011111100_000000,
6287 0b_0011000000_000000,
6288 0b_0011000000_000000,
6289 0b_0011111110_000000,
6290 0b_0000000000_000000,
6291 0b_0000000000_000000,
6293 0b_0000000000_000000,
6294 0b_0011111110_000000,
6295 0b_0011000000_000000,
6296 0b_0011000000_000000,
6297 0b_0011111100_000000,
6298 0b_0011000000_000000,
6299 0b_0011000000_000000,
6300 0b_0011000000_000000,
6301 0b_0000000000_000000,
6302 0b_0000000000_000000,
6304 0b_0000000000_000000,
6305 0b_0001111100_000000,
6306 0b_0011000110_000000,
6307 0b_0011000000_000000,
6308 0b_0011001110_000000,
6309 0b_0011000110_000000,
6310 0b_0011000110_000000,
6311 0b_0001111100_000000,
6312 0b_0000000000_000000,
6313 0b_0000000000_000000,
6315 0b_0000000000_000000,
6316 0b_0011000110_000000,
6317 0b_0011000110_000000,
6318 0b_0011000110_000000,
6319 0b_0011111110_000000,
6320 0b_0011000110_000000,
6321 0b_0011000110_000000,
6322 0b_0011000110_000000,
6323 0b_0000000000_000000,
6324 0b_0000000000_000000,
6326 0b_0000000000_000000,
6327 0b_0001111000_000000,
6328 0b_0000110000_000000,
6329 0b_0000110000_000000,
6330 0b_0000110000_000000,
6331 0b_0000110000_000000,
6332 0b_0000110000_000000,
6333 0b_0001111000_000000,
6334 0b_0000000000_000000,
6335 0b_0000000000_000000,
6337 0b_0000000000_000000,
6338 0b_0000011100_000000,
6339 0b_0000001100_000000,
6340 0b_0000001100_000000,
6341 0b_0000001100_000000,
6342 0b_0011001100_000000,
6343 0b_0011001100_000000,
6344 0b_0001111000_000000,
6345 0b_0000000000_000000,
6346 0b_0000000000_000000,
6348 0b_0000000000_000000,
6349 0b_0011000110_000000,
6350 0b_0011000110_000000,
6351 0b_0011001100_000000,
6352 0b_0011111000_000000,
6353 0b_0011001100_000000,
6354 0b_0011000110_000000,
6355 0b_0011000110_000000,
6356 0b_0000000000_000000,
6357 0b_0000000000_000000,
6359 0b_0000000000_000000,
6360 0b_0011000000_000000,
6361 0b_0011000000_000000,
6362 0b_0011000000_000000,
6363 0b_0011000000_000000,
6364 0b_0011000000_000000,
6365 0b_0011000000_000000,
6366 0b_0011111110_000000,
6367 0b_0000000000_000000,
6368 0b_0000000000_000000,
6370 0b_0000000000_000000,
6371 0b_0110000110_000000,
6372 0b_0111001110_000000,
6373 0b_0111111110_000000,
6374 0b_0110110110_000000,
6375 0b_0110000110_000000,
6376 0b_0110000110_000000,
6377 0b_0110000110_000000,
6378 0b_0000000000_000000,
6379 0b_0000000000_000000,
6381 0b_0000000000_000000,
6382 0b_0011000110_000000,
6383 0b_0011100110_000000,
6384 0b_0011110110_000000,
6385 0b_0011011110_000000,
6386 0b_0011001110_000000,
6387 0b_0011000110_000000,
6388 0b_0011000110_000000,
6389 0b_0000000000_000000,
6390 0b_0000000000_000000,
6392 0b_0000000000_000000,
6393 0b_0001111100_000000,
6394 0b_0011000110_000000,
6395 0b_0011000110_000000,
6396 0b_0011000110_000000,
6397 0b_0011000110_000000,
6398 0b_0011000110_000000,
6399 0b_0001111100_000000,
6400 0b_0000000000_000000,
6401 0b_0000000000_000000,
6403 0b_0000000000_000000,
6404 0b_0011111100_000000,
6405 0b_0011000110_000000,
6406 0b_0011000110_000000,
6407 0b_0011111100_000000,
6408 0b_0011000000_000000,
6409 0b_0011000000_000000,
6410 0b_0011000000_000000,
6411 0b_0000000000_000000,
6412 0b_0000000000_000000,
6414 0b_0000000000_000000,
6415 0b_0001111100_000000,
6416 0b_0011000110_000000,
6417 0b_0011000110_000000,
6418 0b_0011000110_000000,
6419 0b_0011000110_000000,
6420 0b_0011001110_000000,
6421 0b_0001111100_000000,
6422 0b_0000001110_000000,
6423 0b_0000000000_000000,
6425 0b_0000000000_000000,
6426 0b_0011111100_000000,
6427 0b_0011000110_000000,
6428 0b_0011000110_000000,
6429 0b_0011111100_000000,
6430 0b_0011001100_000000,
6431 0b_0011000110_000000,
6432 0b_0011000110_000000,
6433 0b_0000000000_000000,
6434 0b_0000000000_000000,
6436 0b_0000000000_000000,
6437 0b_0001111100_000000,
6438 0b_0011000110_000000,
6439 0b_0011000000_000000,
6440 0b_0001111100_000000,
6441 0b_0000000110_000000,
6442 0b_0011000110_000000,
6443 0b_0001111100_000000,
6444 0b_0000000000_000000,
6445 0b_0000000000_000000,
6447 0b_0000000000_000000,
6448 0b_0111111110_000000,
6449 0b_0000110000_000000,
6450 0b_0000110000_000000,
6451 0b_0000110000_000000,
6452 0b_0000110000_000000,
6453 0b_0000110000_000000,
6454 0b_0000110000_000000,
6455 0b_0000000000_000000,
6456 0b_0000000000_000000,
6458 0b_0000000000_000000,
6459 0b_0011000110_000000,
6460 0b_0011000110_000000,
6461 0b_0011000110_000000,
6462 0b_0011000110_000000,
6463 0b_0011000110_000000,
6464 0b_0011000110_000000,
6465 0b_0001111100_000000,
6466 0b_0000000000_000000,
6467 0b_0000000000_000000,
6469 0b_0000000000_000000,
6470 0b_0011000110_000000,
6471 0b_0011000110_000000,
6472 0b_0011000110_000000,
6473 0b_0011000110_000000,
6474 0b_0001101100_000000,
6475 0b_0000111000_000000,
6476 0b_0000010000_000000,
6477 0b_0000000000_000000,
6478 0b_0000000000_000000,
6480 0b_0000000000_000000,
6481 0b_0110000110_000000,
6482 0b_0110000110_000000,
6483 0b_0110000110_000000,
6484 0b_0110110110_000000,
6485 0b_0111111110_000000,
6486 0b_0111001110_000000,
6487 0b_0110000110_000000,
6488 0b_0000000000_000000,
6489 0b_0000000000_000000,
6491 0b_0000000000_000000,
6492 0b_0110000110_000000,
6493 0b_0011001100_000000,
6494 0b_0001111000_000000,
6495 0b_0000110000_000000,
6496 0b_0001111000_000000,
6497 0b_0011001100_000000,
6498 0b_0110000110_000000,
6499 0b_0000000000_000000,
6500 0b_0000000000_000000,
6502 0b_0000000000_000000,
6503 0b_0110000110_000000,
6504 0b_0110000110_000000,
6505 0b_0011001100_000000,
6506 0b_0001111000_000000,
6507 0b_0000110000_000000,
6508 0b_0000110000_000000,
6509 0b_0000110000_000000,
6510 0b_0000000000_000000,
6511 0b_0000000000_000000,
6513 0b_0000000000_000000,
6514 0b_0011111110_000000,
6515 0b_0000001100_000000,
6516 0b_0000011000_000000,
6517 0b_0000110000_000000,
6518 0b_0001100000_000000,
6519 0b_0011000000_000000,
6520 0b_0011111110_000000,
6521 0b_0000000000_000000,
6522 0b_0000000000_000000,
6524 0b_0000000000_000000,
6525 0b_0001111000_000000,
6526 0b_0001100000_000000,
6527 0b_0001100000_000000,
6528 0b_0001100000_000000,
6529 0b_0001100000_000000,
6530 0b_0001100000_000000,
6531 0b_0001111000_000000,
6532 0b_0000000000_000000,
6533 0b_0000000000_000000,
6535 0b_0000000000_000000,
6536 0b_0110000000_000000,
6537 0b_0011000000_000000,
6538 0b_0001100000_000000,
6539 0b_0000110000_000000,
6540 0b_0000011000_000000,
6541 0b_0000001100_000000,
6542 0b_0000000000_000000,
6543 0b_0000000000_000000,
6544 0b_0000000000_000000,
6546 0b_0000000000_000000,
6547 0b_0001111000_000000,
6548 0b_0000011000_000000,
6549 0b_0000011000_000000,
6550 0b_0000011000_000000,
6551 0b_0000011000_000000,
6552 0b_0000011000_000000,
6553 0b_0001111000_000000,
6554 0b_0000000000_000000,
6555 0b_0000000000_000000,
6557 0b_0000000000_000000,
6558 0b_0000010000_000000,
6559 0b_0000111000_000000,
6560 0b_0001101100_000000,
6561 0b_0011000110_000000,
6562 0b_0000000000_000000,
6563 0b_0000000000_000000,
6564 0b_0000000000_000000,
6565 0b_0000000000_000000,
6566 0b_0000000000_000000,
6568 0b_0000000000_000000,
6569 0b_0000000000_000000,
6570 0b_0000000000_000000,
6571 0b_0000000000_000000,
6572 0b_0000000000_000000,
6573 0b_0000000000_000000,
6574 0b_0000000000_000000,
6575 0b_0000000000_000000,
6576 0b_1111111111_000000,
6577 0b_0000000000_000000,
6579 0b_0000000000_000000,
6580 0b_0001110000_000000,
6581 0b_0000110000_000000,
6582 0b_0000011000_000000,
6583 0b_0000000000_000000,
6584 0b_0000000000_000000,
6585 0b_0000000000_000000,
6586 0b_0000000000_000000,
6587 0b_0000000000_000000,
6588 0b_0000000000_000000,
6590 0b_0000000000_000000,
6591 0b_0000000000_000000,
6592 0b_0000000000_000000,
6593 0b_0001111100_000000,
6594 0b_0000000110_000000,
6595 0b_0001111110_000000,
6596 0b_0011000110_000000,
6597 0b_0001111110_000000,
6598 0b_0000000000_000000,
6599 0b_0000000000_000000,
6601 0b_0000000000_000000,
6602 0b_0011000000_000000,
6603 0b_0011000000_000000,
6604 0b_0011111100_000000,
6605 0b_0011000110_000000,
6606 0b_0011000110_000000,
6607 0b_0011000110_000000,
6608 0b_0011111100_000000,
6609 0b_0000000000_000000,
6610 0b_0000000000_000000,
6612 0b_0000000000_000000,
6613 0b_0000000000_000000,
6614 0b_0000000000_000000,
6615 0b_0001111100_000000,
6616 0b_0011000110_000000,
6617 0b_0011000000_000000,
6618 0b_0011000110_000000,
6619 0b_0001111100_000000,
6620 0b_0000000000_000000,
6621 0b_0000000000_000000,
6623 0b_0000000000_000000,
6624 0b_0000000110_000000,
6625 0b_0000000110_000000,
6626 0b_0001111110_000000,
6627 0b_0011000110_000000,
6628 0b_0011000110_000000,
6629 0b_0011000110_000000,
6630 0b_0001111110_000000,
6631 0b_0000000000_000000,
6632 0b_0000000000_000000,
6634 0b_0000000000_000000,
6635 0b_0000000000_000000,
6636 0b_0000000000_000000,
6637 0b_0001111100_000000,
6638 0b_0011000110_000000,
6639 0b_0011111110_000000,
6640 0b_0011000000_000000,
6641 0b_0001111100_000000,
6642 0b_0000000000_000000,
6643 0b_0000000000_000000,
6645 0b_0000000000_000000,
6646 0b_0000111100_000000,
6647 0b_0001100000_000000,
6648 0b_0001100000_000000,
6649 0b_0011111000_000000,
6650 0b_0001100000_000000,
6651 0b_0001100000_000000,
6652 0b_0001100000_000000,
6653 0b_0000000000_000000,
6654 0b_0000000000_000000,
6656 0b_0000000000_000000,
6657 0b_0000000000_000000,
6658 0b_0000000000_000000,
6659 0b_0001111110_000000,
6660 0b_0011000110_000000,
6661 0b_0011000110_000000,
6662 0b_0011000110_000000,
6663 0b_0001111110_000000,
6664 0b_0000000110_000000,
6665 0b_0001111100_000000,
6667 0b_0000000000_000000,
6668 0b_0011000000_000000,
6669 0b_0011000000_000000,
6670 0b_0011111100_000000,
6671 0b_0011000110_000000,
6672 0b_0011000110_000000,
6673 0b_0011000110_000000,
6674 0b_0011000110_000000,
6675 0b_0000000000_000000,
6676 0b_0000000000_000000,
6678 0b_0000000000_000000,
6679 0b_0000110000_000000,
6680 0b_0000000000_000000,
6681 0b_0001110000_000000,
6682 0b_0000110000_000000,
6683 0b_0000110000_000000,
6684 0b_0000110000_000000,
6685 0b_0001111000_000000,
6686 0b_0000000000_000000,
6687 0b_0000000000_000000,
6689 0b_0000000000_000000,
6690 0b_0000011000_000000,
6691 0b_0000000000_000000,
6692 0b_0000111000_000000,
6693 0b_0000011000_000000,
6694 0b_0000011000_000000,
6695 0b_0000011000_000000,
6696 0b_0000011000_000000,
6697 0b_0000011000_000000,
6698 0b_0001110000_000000,
6700 0b_0000000000_000000,
6701 0b_0011000000_000000,
6702 0b_0011000000_000000,
6703 0b_0011000110_000000,
6704 0b_0011001100_000000,
6705 0b_0011111000_000000,
6706 0b_0011001100_000000,
6707 0b_0011000110_000000,
6708 0b_0000000000_000000,
6709 0b_0000000000_000000,
6711 0b_0000000000_000000,
6712 0b_0001110000_000000,
6713 0b_0000110000_000000,
6714 0b_0000110000_000000,
6715 0b_0000110000_000000,
6716 0b_0000110000_000000,
6717 0b_0000110000_000000,
6718 0b_0000011100_000000,
6719 0b_0000000000_000000,
6720 0b_0000000000_000000,
6722 0b_0000000000_000000,
6723 0b_0000000000_000000,
6724 0b_0000000000_000000,
6725 0b_0011001100_000000,
6726 0b_0111111110_000000,
6727 0b_0110110110_000000,
6728 0b_0110110110_000000,
6729 0b_0110000110_000000,
6730 0b_0000000000_000000,
6731 0b_0000000000_000000,
6733 0b_0000000000_000000,
6734 0b_0000000000_000000,
6735 0b_0000000000_000000,
6736 0b_0011111100_000000,
6737 0b_0011000110_000000,
6738 0b_0011000110_000000,
6739 0b_0011000110_000000,
6740 0b_0011000110_000000,
6741 0b_0000000000_000000,
6742 0b_0000000000_000000,
6744 0b_0000000000_000000,
6745 0b_0000000000_000000,
6746 0b_0000000000_000000,
6747 0b_0001111100_000000,
6748 0b_0011000110_000000,
6749 0b_0011000110_000000,
6750 0b_0011000110_000000,
6751 0b_0001111100_000000,
6752 0b_0000000000_000000,
6753 0b_0000000000_000000,
6755 0b_0000000000_000000,
6756 0b_0000000000_000000,
6757 0b_0000000000_000000,
6758 0b_0011111100_000000,
6759 0b_0011000110_000000,
6760 0b_0011000110_000000,
6761 0b_0011111100_000000,
6762 0b_0011000000_000000,
6763 0b_0011000000_000000,
6764 0b_0000000000_000000,
6766 0b_0000000000_000000,
6767 0b_0000000000_000000,
6768 0b_0000000000_000000,
6769 0b_0001111110_000000,
6770 0b_0011000110_000000,
6771 0b_0011000110_000000,
6772 0b_0001111110_000000,
6773 0b_0000000110_000000,
6774 0b_0000000111_000000,
6775 0b_0000000000_000000,
6777 0b_0000000000_000000,
6778 0b_0000000000_000000,
6779 0b_0000000000_000000,
6780 0b_0011111100_000000,
6781 0b_0011000110_000000,
6782 0b_0011000000_000000,
6783 0b_0011000000_000000,
6784 0b_0011000000_000000,
6785 0b_0000000000_000000,
6786 0b_0000000000_000000,
6788 0b_0000000000_000000,
6789 0b_0000000000_000000,
6790 0b_0000000000_000000,
6791 0b_0001111110_000000,
6792 0b_0011000000_000000,
6793 0b_0001111100_000000,
6794 0b_0000000110_000000,
6795 0b_0011111100_000000,
6796 0b_0000000000_000000,
6797 0b_0000000000_000000,
6799 0b_0000000000_000000,
6800 0b_0001100000_000000,
6801 0b_0001100000_000000,
6802 0b_0011111000_000000,
6803 0b_0001100000_000000,
6804 0b_0001100000_000000,
6805 0b_0001100000_000000,
6806 0b_0000111100_000000,
6807 0b_0000000000_000000,
6808 0b_0000000000_000000,
6810 0b_0000000000_000000,
6811 0b_0000000000_000000,
6812 0b_0000000000_000000,
6813 0b_0011000110_000000,
6814 0b_0011000110_000000,
6815 0b_0011000110_000000,
6816 0b_0011000110_000000,
6817 0b_0001111110_000000,
6818 0b_0000000000_000000,
6819 0b_0000000000_000000,
6821 0b_0000000000_000000,
6822 0b_0000000000_000000,
6823 0b_0000000000_000000,
6824 0b_0011000110_000000,
6825 0b_0011000110_000000,
6826 0b_0001101100_000000,
6827 0b_0000111000_000000,
6828 0b_0000010000_000000,
6829 0b_0000000000_000000,
6830 0b_0000000000_000000,
6832 0b_0000000000_000000,
6833 0b_0000000000_000000,
6834 0b_0000000000_000000,
6835 0b_0110000110_000000,
6836 0b_0110110110_000000,
6837 0b_0110110110_000000,
6838 0b_0111111110_000000,
6839 0b_0011001100_000000,
6840 0b_0000000000_000000,
6841 0b_0000000000_000000,
6843 0b_0000000000_000000,
6844 0b_0000000000_000000,
6845 0b_0000000000_000000,
6846 0b_0011000110_000000,
6847 0b_0001101100_000000,
6848 0b_0000111000_000000,
6849 0b_0001101100_000000,
6850 0b_0011000110_000000,
6851 0b_0000000000_000000,
6852 0b_0000000000_000000,
6854 0b_0000000000_000000,
6855 0b_0000000000_000000,
6856 0b_0000000000_000000,
6857 0b_0011000110_000000,
6858 0b_0011000110_000000,
6859 0b_0011000110_000000,
6860 0b_0001111110_000000,
6861 0b_0000000110_000000,
6862 0b_0001111100_000000,
6863 0b_0000000000_000000,
6865 0b_0000000000_000000,
6866 0b_0000000000_000000,
6867 0b_0000000000_000000,
6868 0b_0011111100_000000,
6869 0b_0000011000_000000,
6870 0b_0000110000_000000,
6871 0b_0001100000_000000,
6872 0b_0011111100_000000,
6873 0b_0000000000_000000,
6874 0b_0000000000_000000,
6876 0b_0000000000_000000,
6877 0b_0000111000_000000,
6878 0b_0001100000_000000,
6879 0b_0001100000_000000,
6880 0b_0011000000_000000,
6881 0b_0001100000_000000,
6882 0b_0001100000_000000,
6883 0b_0000111000_000000,
6884 0b_0000000000_000000,
6885 0b_0000000000_000000,
6887 0b_0000110000_000000,
6888 0b_0000110000_000000,
6889 0b_0000110000_000000,
6890 0b_0000110000_000000,
6891 0b_0000000000_000000,
6892 0b_0000110000_000000,
6893 0b_0000110000_000000,
6894 0b_0000110000_000000,
6895 0b_0000110000_000000,
6896 0b_0000000000_000000,
6898 0b_0000000000_000000,
6899 0b_0001110000_000000,
6900 0b_0000011000_000000,
6901 0b_0000011000_000000,
6902 0b_0000001100_000000,
6903 0b_0000011000_000000,
6904 0b_0000011000_000000,
6905 0b_0001110000_000000,
6906 0b_0000000000_000000,
6907 0b_0000000000_000000,
6909 0b_0000000000_000000,
6910 0b_0000000000_000000,
6911 0b_0000000000_000000,
6912 0b_0011100000_000000,
6913 0b_0110110110_000000,
6914 0b_0000011100_000000,
6915 0b_0000000000_000000,
6916 0b_0000000000_000000,
6917 0b_0000000000_000000,
6918 0b_0000000000_000000,
6920 0b_0000000000_000000,
6921 0b_0000010000_000000,
6922 0b_0000111000_000000,
6923 0b_0001101100_000000,
6924 0b_0011000110_000000,
6925 0b_0011000110_000000,
6926 0b_0011000110_000000,
6927 0b_0011111110_000000,
6928 0b_0000000000_000000,
6929 0b_0000000000_000000,
6931 0b_0000000000_000000,
6932 0b_0001111100_000000,
6933 0b_0011000110_000000,
6934 0b_0011000000_000000,
6935 0b_0011000000_000000,
6936 0b_0011000000_000000,
6937 0b_0011000110_000000,
6938 0b_0001111100_000000,
6939 0b_0000110000_000000,
6940 0b_0001100000_000000,
6942 0b_0000000000_000000,
6943 0b_0001101100_000000,
6944 0b_0000000000_000000,
6945 0b_0011000110_000000,
6946 0b_0011000110_000000,
6947 0b_0011000110_000000,
6948 0b_0011000110_000000,
6949 0b_0001111110_000000,
6950 0b_0000000000_000000,
6951 0b_0000000000_000000,
6953 0b_0000011000_000000,
6954 0b_0000110000_000000,
6955 0b_0000000000_000000,
6956 0b_0001111100_000000,
6957 0b_0011000110_000000,
6958 0b_0011111110_000000,
6959 0b_0011000000_000000,
6960 0b_0001111100_000000,
6961 0b_0000000000_000000,
6962 0b_0000000000_000000,
6964 0b_0000111000_000000,
6965 0b_0001101100_000000,
6966 0b_0000000000_000000,
6967 0b_0001111100_000000,
6968 0b_0000000110_000000,
6969 0b_0001111110_000000,
6970 0b_0011000110_000000,
6971 0b_0001111110_000000,
6972 0b_0000000000_000000,
6973 0b_0000000000_000000,
6975 0b_0000000000_000000,
6976 0b_0001101100_000000,
6977 0b_0000000000_000000,
6978 0b_0001111100_000000,
6979 0b_0000000110_000000,
6980 0b_0001111110_000000,
6981 0b_0011000110_000000,
6982 0b_0001111110_000000,
6983 0b_0000000000_000000,
6984 0b_0000000000_000000,
6986 0b_0000110000_000000,
6987 0b_0000011000_000000,
6988 0b_0000000000_000000,
6989 0b_0001111100_000000,
6990 0b_0000000110_000000,
6991 0b_0001111110_000000,
6992 0b_0011000110_000000,
6993 0b_0001111110_000000,
6994 0b_0000000000_000000,
6995 0b_0000000000_000000,
6997 0b_0000111000_000000,
6998 0b_0001101100_000000,
6999 0b_0000111000_000000,
7000 0b_0001111100_000000,
7001 0b_0000000110_000000,
7002 0b_0001111110_000000,
7003 0b_0011000110_000000,
7004 0b_0001111110_000000,
7005 0b_0000000000_000000,
7006 0b_0000000000_000000,
7008 0b_0000000000_000000,
7009 0b_0000000000_000000,
7010 0b_0000000000_000000,
7011 0b_0001111100_000000,
7012 0b_0011000110_000000,
7013 0b_0011000000_000000,
7014 0b_0011000110_000000,
7015 0b_0001111100_000000,
7016 0b_0000110000_000000,
7017 0b_0001100000_000000,
7019 0b_0000111000_000000,
7020 0b_0001101100_000000,
7021 0b_0000000000_000000,
7022 0b_0001111100_000000,
7023 0b_0011000110_000000,
7024 0b_0011111110_000000,
7025 0b_0011000000_000000,
7026 0b_0001111100_000000,
7027 0b_0000000000_000000,
7028 0b_0000000000_000000,
7030 0b_0000000000_000000,
7031 0b_0001101100_000000,
7032 0b_0000000000_000000,
7033 0b_0001111100_000000,
7034 0b_0011000110_000000,
7035 0b_0011111110_000000,
7036 0b_0011000000_000000,
7037 0b_0001111100_000000,
7038 0b_0000000000_000000,
7039 0b_0000000000_000000,
7041 0b_0000110000_000000,
7042 0b_0000011000_000000,
7043 0b_0000000000_000000,
7044 0b_0001111100_000000,
7045 0b_0011000110_000000,
7046 0b_0011111110_000000,
7047 0b_0011000000_000000,
7048 0b_0001111100_000000,
7049 0b_0000000000_000000,
7050 0b_0000000000_000000,
7052 0b_0000000000_000000,
7053 0b_0011011000_000000,
7054 0b_0000000000_000000,
7055 0b_0001110000_000000,
7056 0b_0000110000_000000,
7057 0b_0000110000_000000,
7058 0b_0000110000_000000,
7059 0b_0001111000_000000,
7060 0b_0000000000_000000,
7061 0b_0000000000_000000,
7063 0b_0001110000_000000,
7064 0b_0011011000_000000,
7065 0b_0000000000_000000,
7066 0b_0001110000_000000,
7067 0b_0000110000_000000,
7068 0b_0000110000_000000,
7069 0b_0000110000_000000,
7070 0b_0001111000_000000,
7071 0b_0000000000_000000,
7072 0b_0000000000_000000,
7074 0b_0001100000_000000,
7075 0b_0000110000_000000,
7076 0b_0000000000_000000,
7077 0b_0001110000_000000,
7078 0b_0000110000_000000,
7079 0b_0000110000_000000,
7080 0b_0000110000_000000,
7081 0b_0001111000_000000,
7082 0b_0000000000_000000,
7083 0b_0000000000_000000,
7085 0b_0000000000_000000,
7086 0b_0001101100_000000,
7087 0b_0000000000_000000,
7088 0b_0001111100_000000,
7089 0b_0011000110_000000,
7090 0b_0011111110_000000,
7091 0b_0011000110_000000,
7092 0b_0011000110_000000,
7093 0b_0000000000_000000,
7094 0b_0000000000_000000,
7096 0b_0000111000_000000,
7097 0b_0001101100_000000,
7098 0b_0000111000_000000,
7099 0b_0001111100_000000,
7100 0b_0011000110_000000,
7101 0b_0011111110_000000,
7102 0b_0011000110_000000,
7103 0b_0011000110_000000,
7104 0b_0000000000_000000,
7105 0b_0000000000_000000,
7107 0b_0000011000_000000,
7108 0b_0000110000_000000,
7109 0b_0000000000_000000,
7110 0b_0011111110_000000,
7111 0b_0011000000_000000,
7112 0b_0011111100_000000,
7113 0b_0011000000_000000,
7114 0b_0011111110_000000,
7115 0b_0000000000_000000,
7116 0b_0000000000_000000,
7118 0b_0000000000_000000,
7119 0b_0000000000_000000,
7120 0b_0000000000_000000,
7121 0b_0011101110_000000,
7122 0b_0000111011_000000,
7123 0b_0011111111_000000,
7124 0b_0110111000_000000,
7125 0b_0011101110_000000,
7126 0b_0000000000_000000,
7127 0b_0000000000_000000,
7129 0b_0000000000_000000,
7130 0b_0001111110_000000,
7131 0b_0011011000_000000,
7132 0b_0110011000_000000,
7133 0b_0111111110_000000,
7134 0b_0110011000_000000,
7135 0b_0110011000_000000,
7136 0b_0110011110_000000,
7137 0b_0000000000_000000,
7138 0b_0000000000_000000,
7140 0b_0000111000_000000,
7141 0b_0001101100_000000,
7142 0b_0000000000_000000,
7143 0b_0001111100_000000,
7144 0b_0011000110_000000,
7145 0b_0011000110_000000,
7146 0b_0011000110_000000,
7147 0b_0001111100_000000,
7148 0b_0000000000_000000,
7149 0b_0000000000_000000,
7151 0b_0000000000_000000,
7152 0b_0001101100_000000,
7153 0b_0000000000_000000,
7154 0b_0001111100_000000,
7155 0b_0011000110_000000,
7156 0b_0011000110_000000,
7157 0b_0011000110_000000,
7158 0b_0001111100_000000,
7159 0b_0000000000_000000,
7160 0b_0000000000_000000,
7162 0b_0000110000_000000,
7163 0b_0000011000_000000,
7164 0b_0000000000_000000,
7165 0b_0001111100_000000,
7166 0b_0011000110_000000,
7167 0b_0011000110_000000,
7168 0b_0011000110_000000,
7169 0b_0001111100_000000,
7170 0b_0000000000_000000,
7171 0b_0000000000_000000,
7173 0b_0000111000_000000,
7174 0b_0001101100_000000,
7175 0b_0000000000_000000,
7176 0b_0011000110_000000,
7177 0b_0011000110_000000,
7178 0b_0011000110_000000,
7179 0b_0011000110_000000,
7180 0b_0001111110_000000,
7181 0b_0000000000_000000,
7182 0b_0000000000_000000,
7184 0b_0000110000_000000,
7185 0b_0000011000_000000,
7186 0b_0000000000_000000,
7187 0b_0011000110_000000,
7188 0b_0011000110_000000,
7189 0b_0011000110_000000,
7190 0b_0011000110_000000,
7191 0b_0001111110_000000,
7192 0b_0000000000_000000,
7193 0b_0000000000_000000,
7195 0b_0000000000_000000,
7196 0b_0001101100_000000,
7197 0b_0000000000_000000,
7198 0b_0011000110_000000,
7199 0b_0011000110_000000,
7200 0b_0011000110_000000,
7201 0b_0001111110_000000,
7202 0b_0000000110_000000,
7203 0b_0001111100_000000,
7204 0b_0000000000_000000,
7206 0b_0000000000_000000,
7207 0b_0001101100_000000,
7208 0b_0000000000_000000,
7209 0b_0001111100_000000,
7210 0b_0011000110_000000,
7211 0b_0011000110_000000,
7212 0b_0011000110_000000,
7213 0b_0001111100_000000,
7214 0b_0000000000_000000,
7215 0b_0000000000_000000,
7217 0b_0000000000_000000,
7218 0b_0001101100_000000,
7219 0b_0000000000_000000,
7220 0b_0011000110_000000,
7221 0b_0011000110_000000,
7222 0b_0011000110_000000,
7223 0b_0011000110_000000,
7224 0b_0001111110_000000,
7225 0b_0000000000_000000,
7226 0b_0000000000_000000,
7228 0b_0000000000_000000,
7229 0b_0000000000_000000,
7230 0b_0000010000_000000,
7231 0b_0001111100_000000,
7232 0b_0011010110_000000,
7233 0b_0011010000_000000,
7234 0b_0011010110_000000,
7235 0b_0001111100_000000,
7236 0b_0000010000_000000,
7237 0b_0000000000_000000,
7239 0b_0000000000_000000,
7240 0b_0000111100_000000,
7241 0b_0001100110_000000,
7242 0b_0001100000_000000,
7243 0b_0011111000_000000,
7244 0b_0001100000_000000,
7245 0b_0001100000_000000,
7246 0b_0011000000_000000,
7247 0b_0011111110_000000,
7248 0b_0000000000_000000,
7250 0b_0000000000_000000,
7251 0b_0110000110_000000,
7252 0b_0110000110_000000,
7253 0b_0011001100_000000,
7254 0b_0001111000_000000,
7255 0b_0011111100_000000,
7256 0b_0000110000_000000,
7257 0b_0011111100_000000,
7258 0b_0000110000_000000,
7259 0b_0000000000_000000,
7261 0b_0000000000_000000,
7262 0b_0111111100_000000,
7263 0b_0110000110_000000,
7264 0b_0110110110_000000,
7265 0b_0110110110_000000,
7266 0b_0111111100_000000,
7267 0b_0110110000_000000,
7268 0b_0110110000_000000,
7269 0b_0110011100_000000,
7270 0b_0000000000_000000,
7272 0b_0000000000_000000,
7273 0b_0000011100_000000,
7274 0b_0000110000_000000,
7275 0b_0000110000_000000,
7276 0b_0001111000_000000,
7277 0b_0000110000_000000,
7278 0b_0000110000_000000,
7279 0b_0000110000_000000,
7280 0b_0011100000_000000,
7281 0b_0000000000_000000,
7283 0b_0000011000_000000,
7284 0b_0000110000_000000,
7285 0b_0000000000_000000,
7286 0b_0001111100_000000,
7287 0b_0000000110_000000,
7288 0b_0001111110_000000,
7289 0b_0011000110_000000,
7290 0b_0001111110_000000,
7291 0b_0000000000_000000,
7292 0b_0000000000_000000,
7294 0b_0000110000_000000,
7295 0b_0001100000_000000,
7296 0b_0000000000_000000,
7297 0b_0001110000_000000,
7298 0b_0000110000_000000,
7299 0b_0000110000_000000,
7300 0b_0000110000_000000,
7301 0b_0001111000_000000,
7302 0b_0000000000_000000,
7303 0b_0000000000_000000,
7305 0b_0000011000_000000,
7306 0b_0000110000_000000,
7307 0b_0000000000_000000,
7308 0b_0001111100_000000,
7309 0b_0011000110_000000,
7310 0b_0011000110_000000,
7311 0b_0011000110_000000,
7312 0b_0001111100_000000,
7313 0b_0000000000_000000,
7314 0b_0000000000_000000,
7316 0b_0000011000_000000,
7317 0b_0000110000_000000,
7318 0b_0000000000_000000,
7319 0b_0011000110_000000,
7320 0b_0011000110_000000,
7321 0b_0011000110_000000,
7322 0b_0011000110_000000,
7323 0b_0001111110_000000,
7324 0b_0000000000_000000,
7325 0b_0000000000_000000,
7327 0b_0001110110_000000,
7328 0b_0011011100_000000,
7329 0b_0000000000_000000,
7330 0b_0011111100_000000,
7331 0b_0011000110_000000,
7332 0b_0011000110_000000,
7333 0b_0011000110_000000,
7334 0b_0011000110_000000,
7335 0b_0000000000_000000,
7336 0b_0000000000_000000,
7338 0b_0001110110_000000,
7339 0b_0011011100_000000,
7340 0b_0000000000_000000,
7341 0b_0011100110_000000,
7342 0b_0011110110_000000,
7343 0b_0011011110_000000,
7344 0b_0011001110_000000,
7345 0b_0011000110_000000,
7346 0b_0000000000_000000,
7347 0b_0000000000_000000,
7349 0b_0000000000_000000,
7350 0b_0001111000_000000,
7351 0b_0000001100_000000,
7352 0b_0001111100_000000,
7353 0b_0011001100_000000,
7354 0b_0001111100_000000,
7355 0b_0000000000_000000,
7356 0b_0000000000_000000,
7357 0b_0000000000_000000,
7358 0b_0000000000_000000,
7360 0b_0000000000_000000,
7361 0b_0001111000_000000,
7362 0b_0011001100_000000,
7363 0b_0011001100_000000,
7364 0b_0011001100_000000,
7365 0b_0001111000_000000,
7366 0b_0000000000_000000,
7367 0b_0000000000_000000,
7368 0b_0000000000_000000,
7369 0b_0000000000_000000,
7371 0b_0000000000_000000,
7372 0b_0000110000_000000,
7373 0b_0000000000_000000,
7374 0b_0000110000_000000,
7375 0b_0001100000_000000,
7376 0b_0011000000_000000,
7377 0b_0011000000_000000,
7378 0b_0011001100_000000,
7379 0b_0001111000_000000,
7380 0b_0000000000_000000,
7382 0b_0000000000_000000,
7383 0b_0000000000_000000,
7384 0b_0000000000_000000,
7385 0b_0000000000_000000,
7386 0b_0011111110_000000,
7387 0b_0011000000_000000,
7388 0b_0011000000_000000,
7389 0b_0011000000_000000,
7390 0b_0000000000_000000,
7391 0b_0000000000_000000,
7393 0b_0000000000_000000,
7394 0b_0000000000_000000,
7395 0b_0000000000_000000,
7396 0b_0000000000_000000,
7397 0b_0011111110_000000,
7398 0b_0000000110_000000,
7399 0b_0000000110_000000,
7400 0b_0000000110_000000,
7401 0b_0000000000_000000,
7402 0b_0000000000_000000,
7404 0b_0000000000_000000,
7405 0b_0010000010_000000,
7406 0b_0010000100_000000,
7407 0b_0010001000_000000,
7408 0b_0010010000_000000,
7409 0b_0000101100_000000,
7410 0b_0001000110_000000,
7411 0b_0010001100_000000,
7412 0b_0100001110_000000,
7413 0b_0000000000_000000,
7415 0b_0000000000_000000,
7416 0b_0010000010_000000,
7417 0b_0010000100_000000,
7418 0b_0010001000_000000,
7419 0b_0010010000_000000,
7420 0b_0000101010_000000,
7421 0b_0001001010_000000,
7422 0b_0010001110_000000,
7423 0b_0100000010_000000,
7424 0b_0000000000_000000,
7426 0b_0000000000_000000,
7427 0b_0000110000_000000,
7428 0b_0000000000_000000,
7429 0b_0000110000_000000,
7430 0b_0000110000_000000,
7431 0b_0001111000_000000,
7432 0b_0001111000_000000,
7433 0b_0000110000_000000,
7434 0b_0000000000_000000,
7435 0b_0000000000_000000,
7437 0b_0000000000_000000,
7438 0b_0000000000_000000,
7439 0b_0001100110_000000,
7440 0b_0011001100_000000,
7441 0b_0110011000_000000,
7442 0b_0011001100_000000,
7443 0b_0001100110_000000,
7444 0b_0000000000_000000,
7445 0b_0000000000_000000,
7446 0b_0000000000_000000,
7448 0b_0000000000_000000,
7449 0b_0000000000_000000,
7450 0b_0110011000_000000,
7451 0b_0011001100_000000,
7452 0b_0001100110_000000,
7453 0b_0011001100_000000,
7454 0b_0110011000_000000,
7455 0b_0000000000_000000,
7456 0b_0000000000_000000,
7457 0b_0000000000_000000,
7459 0b_0010001000_000000,
7460 0b_1000100010_000000,
7461 0b_0010001000_000000,
7462 0b_1000100010_000000,
7463 0b_0010001000_000000,
7464 0b_1000100010_000000,
7465 0b_0010001000_000000,
7466 0b_1000100010_000000,
7467 0b_0010001000_000000,
7468 0b_1000100010_000000,
7470 0b_0101010101_000000,
7471 0b_1010101010_000000,
7472 0b_0101010101_000000,
7473 0b_1010101010_000000,
7474 0b_0101010101_000000,
7475 0b_1010101010_000000,
7476 0b_0101010101_000000,
7477 0b_1010101010_000000,
7478 0b_0101010101_000000,
7479 0b_1010101010_000000,
7481 0b_1011101110_000000,
7482 0b_1110111011_000000,
7483 0b_1011101110_000000,
7484 0b_1110111011_000000,
7485 0b_1011101110_000000,
7486 0b_1110111011_000000,
7487 0b_1011101110_000000,
7488 0b_1110111011_000000,
7489 0b_1011101110_000000,
7490 0b_1110111011_000000,
7492 0b_0000110000_000000,
7493 0b_0000110000_000000,
7494 0b_0000110000_000000,
7495 0b_0000110000_000000,
7496 0b_0000110000_000000,
7497 0b_0000110000_000000,
7498 0b_0000110000_000000,
7499 0b_0000110000_000000,
7500 0b_0000110000_000000,
7501 0b_0000110000_000000,
7503 0b_0000110000_000000,
7504 0b_0000110000_000000,
7505 0b_0000110000_000000,
7506 0b_0000110000_000000,
7507 0b_1111110000_000000,
7508 0b_1111110000_000000,
7509 0b_0000110000_000000,
7510 0b_0000110000_000000,
7511 0b_0000110000_000000,
7512 0b_0000110000_000000,
7514 0b_0000110000_000000,
7515 0b_0000110000_000000,
7516 0b_1111110000_000000,
7517 0b_1111110000_000000,
7518 0b_0000110000_000000,
7519 0b_0000110000_000000,
7520 0b_1111110000_000000,
7521 0b_1111110000_000000,
7522 0b_0000110000_000000,
7523 0b_0000110000_000000,
7525 0b_0011001100_000000,
7526 0b_0011001100_000000,
7527 0b_0011001100_000000,
7528 0b_0011001100_000000,
7529 0b_1111001100_000000,
7530 0b_1111001100_000000,
7531 0b_0011001100_000000,
7532 0b_0011001100_000000,
7533 0b_0011001100_000000,
7534 0b_0011001100_000000,
7536 0b_0000000000_000000,
7537 0b_0000000000_000000,
7538 0b_0000000000_000000,
7539 0b_0000000000_000000,
7540 0b_1111111100_000000,
7541 0b_1111111100_000000,
7542 0b_0011001100_000000,
7543 0b_0011001100_000000,
7544 0b_0011001100_000000,
7545 0b_0011001100_000000,
7547 0b_0000000000_000000,
7548 0b_0000000000_000000,
7549 0b_1111110000_000000,
7550 0b_1111110000_000000,
7551 0b_0000110000_000000,
7552 0b_0000110000_000000,
7553 0b_1111110000_000000,
7554 0b_1111110000_000000,
7555 0b_0000110000_000000,
7556 0b_0000110000_000000,
7558 0b_0011001100_000000,
7559 0b_0011001100_000000,
7560 0b_1111001100_000000,
7561 0b_1111001100_000000,
7562 0b_0000001100_000000,
7563 0b_0000001100_000000,
7564 0b_1111001100_000000,
7565 0b_1111001100_000000,
7566 0b_0011001100_000000,
7567 0b_0011001100_000000,
7569 0b_0011001100_000000,
7570 0b_0011001100_000000,
7571 0b_0011001100_000000,
7572 0b_0011001100_000000,
7573 0b_0011001100_000000,
7574 0b_0011001100_000000,
7575 0b_0011001100_000000,
7576 0b_0011001100_000000,
7577 0b_0011001100_000000,
7578 0b_0011001100_000000,
7580 0b_0000000000_000000,
7581 0b_0000000000_000000,
7582 0b_1111111100_000000,
7583 0b_1111111100_000000,
7584 0b_0000001100_000000,
7585 0b_0000001100_000000,
7586 0b_1111001100_000000,
7587 0b_1111001100_000000,
7588 0b_0011001100_000000,
7589 0b_0011001100_000000,
7591 0b_0011001100_000000,
7592 0b_0011001100_000000,
7593 0b_1111001100_000000,
7594 0b_1111001100_000000,
7595 0b_0000001100_000000,
7596 0b_0000001100_000000,
7597 0b_1111111100_000000,
7598 0b_1111111100_000000,
7599 0b_0000000000_000000,
7600 0b_0000000000_000000,
7602 0b_0011001100_000000,
7603 0b_0011001100_000000,
7604 0b_0011001100_000000,
7605 0b_0011001100_000000,
7606 0b_1111111100_000000,
7607 0b_1111111100_000000,
7608 0b_0000000000_000000,
7609 0b_0000000000_000000,
7610 0b_0000000000_000000,
7611 0b_0000000000_000000,
7613 0b_0001100000_000000,
7614 0b_0001100000_000000,
7615 0b_1111100000_000000,
7616 0b_1111100000_000000,
7617 0b_0001100000_000000,
7618 0b_0001100000_000000,
7619 0b_1111100000_000000,
7620 0b_1111100000_000000,
7621 0b_0000000000_000000,
7622 0b_0000000000_000000,
7624 0b_0000000000_000000,
7625 0b_0000000000_000000,
7626 0b_0000000000_000000,
7627 0b_0000000000_000000,
7628 0b_1111110000_000000,
7629 0b_1111110000_000000,
7630 0b_0000110000_000000,
7631 0b_0000110000_000000,
7632 0b_0000110000_000000,
7633 0b_0000110000_000000,
7635 0b_0000110000_000000,
7636 0b_0000110000_000000,
7637 0b_0000110000_000000,
7638 0b_0000110000_000000,
7639 0b_0000111111_000000,
7640 0b_0000111111_000000,
7641 0b_0000000000_000000,
7642 0b_0000000000_000000,
7643 0b_0000000000_000000,
7644 0b_0000000000_000000,
7646 0b_0000110000_000000,
7647 0b_0000110000_000000,
7648 0b_0000110000_000000,
7649 0b_0000110000_000000,
7650 0b_1111111111_000000,
7651 0b_1111111111_000000,
7652 0b_0000000000_000000,
7653 0b_0000000000_000000,
7654 0b_0000000000_000000,
7655 0b_0000000000_000000,
7657 0b_0000000000_000000,
7658 0b_0000000000_000000,
7659 0b_0000000000_000000,
7660 0b_0000000000_000000,
7661 0b_1111111111_000000,
7662 0b_1111111111_000000,
7663 0b_0000110000_000000,
7664 0b_0000110000_000000,
7665 0b_0000110000_000000,
7666 0b_0000110000_000000,
7668 0b_0000110000_000000,
7669 0b_0000110000_000000,
7670 0b_0000110000_000000,
7671 0b_0000110000_000000,
7672 0b_0000111111_000000,
7673 0b_0000111111_000000,
7674 0b_0000110000_000000,
7675 0b_0000110000_000000,
7676 0b_0000110000_000000,
7677 0b_0000110000_000000,
7679 0b_0000000000_000000,
7680 0b_0000000000_000000,
7681 0b_0000000000_000000,
7682 0b_0000000000_000000,
7683 0b_1111111111_000000,
7684 0b_1111111111_000000,
7685 0b_0000000000_000000,
7686 0b_0000000000_000000,
7687 0b_0000000000_000000,
7688 0b_0000000000_000000,
7690 0b_0000110000_000000,
7691 0b_0000110000_000000,
7692 0b_0000110000_000000,
7693 0b_0000110000_000000,
7694 0b_1111111111_000000,
7695 0b_1111111111_000000,
7696 0b_0000110000_000000,
7697 0b_0000110000_000000,
7698 0b_0000110000_000000,
7699 0b_0000110000_000000,
7701 0b_0000110000_000000,
7702 0b_0000110000_000000,
7703 0b_0000111111_000000,
7704 0b_0000111111_000000,
7705 0b_0000110000_000000,
7706 0b_0000110000_000000,
7707 0b_0000111111_000000,
7708 0b_0000111111_000000,
7709 0b_0000110000_000000,
7710 0b_0000110000_000000,
7712 0b_0011001100_000000,
7713 0b_0011001100_000000,
7714 0b_0011001100_000000,
7715 0b_0011001100_000000,
7716 0b_0011001111_000000,
7717 0b_0011001111_000000,
7718 0b_0011001100_000000,
7719 0b_0011001100_000000,
7720 0b_0011001100_000000,
7721 0b_0011001100_000000,
7723 0b_0011001100_000000,
7724 0b_0011001100_000000,
7725 0b_0011001111_000000,
7726 0b_0011001111_000000,
7727 0b_0011000000_000000,
7728 0b_0011000000_000000,
7729 0b_0011111111_000000,
7730 0b_0011111111_000000,
7731 0b_0000000000_000000,
7732 0b_0000000000_000000,
7734 0b_0000000000_000000,
7735 0b_0000000000_000000,
7736 0b_0011111111_000000,
7737 0b_0011111111_000000,
7738 0b_0011000000_000000,
7739 0b_0011000000_000000,
7740 0b_0011001111_000000,
7741 0b_0011001111_000000,
7742 0b_0011001100_000000,
7743 0b_0011001100_000000,
7745 0b_0011001100_000000,
7746 0b_0011001100_000000,
7747 0b_1111001111_000000,
7748 0b_1111001111_000000,
7749 0b_0000000000_000000,
7750 0b_0000000000_000000,
7751 0b_1111111111_000000,
7752 0b_1111111111_000000,
7753 0b_0000000000_000000,
7754 0b_0000000000_000000,
7756 0b_0000000000_000000,
7757 0b_0000000000_000000,
7758 0b_1111111111_000000,
7759 0b_1111111111_000000,
7760 0b_0000000000_000000,
7761 0b_0000000000_000000,
7762 0b_1111001111_000000,
7763 0b_1111001111_000000,
7764 0b_0011001100_000000,
7765 0b_0011001100_000000,
7767 0b_0011001100_000000,
7768 0b_0011001100_000000,
7769 0b_0011001111_000000,
7770 0b_0011001111_000000,
7771 0b_0011000000_000000,
7772 0b_0011000000_000000,
7773 0b_0011001111_000000,
7774 0b_0011001111_000000,
7775 0b_0011001100_000000,
7776 0b_0011001100_000000,
7778 0b_0000000000_000000,
7779 0b_0000000000_000000,
7780 0b_1111111111_000000,
7781 0b_1111111111_000000,
7782 0b_0000000000_000000,
7783 0b_0000000000_000000,
7784 0b_1111111111_000000,
7785 0b_1111111111_000000,
7786 0b_0000000000_000000,
7787 0b_0000000000_000000,
7789 0b_0011001100_000000,
7790 0b_0011001100_000000,
7791 0b_1111001111_000000,
7792 0b_1111001111_000000,
7793 0b_0000000000_000000,
7794 0b_0000000000_000000,
7795 0b_1111001111_000000,
7796 0b_1111001111_000000,
7797 0b_0011001100_000000,
7798 0b_0011001100_000000,
7800 0b_0000110000_000000,
7801 0b_0000110000_000000,
7802 0b_1111111111_000000,
7803 0b_1111111111_000000,
7804 0b_0000000000_000000,
7805 0b_0000000000_000000,
7806 0b_1111111111_000000,
7807 0b_1111111111_000000,
7808 0b_0000000000_000000,
7809 0b_0000000000_000000,
7811 0b_0011001100_000000,
7812 0b_0011001100_000000,
7813 0b_0011001100_000000,
7814 0b_0011001100_000000,
7815 0b_1111111111_000000,
7816 0b_1111111111_000000,
7817 0b_0000000000_000000,
7818 0b_0000000000_000000,
7819 0b_0000000000_000000,
7820 0b_0000000000_000000,
7822 0b_0000000000_000000,
7823 0b_0000000000_000000,
7824 0b_1111111111_000000,
7825 0b_1111111111_000000,
7826 0b_0000000000_000000,
7827 0b_0000000000_000000,
7828 0b_1111111111_000000,
7829 0b_1111111111_000000,
7830 0b_0000110000_000000,
7831 0b_0000110000_000000,
7833 0b_0000000000_000000,
7834 0b_0000000000_000000,
7835 0b_0000000000_000000,
7836 0b_0000000000_000000,
7837 0b_1111111111_000000,
7838 0b_1111111111_000000,
7839 0b_0011001100_000000,
7840 0b_0011001100_000000,
7841 0b_0011001100_000000,
7842 0b_0011001100_000000,
7844 0b_0011001100_000000,
7845 0b_0011001100_000000,
7846 0b_0011001100_000000,
7847 0b_0011001100_000000,
7848 0b_0011111111_000000,
7849 0b_0011111111_000000,
7850 0b_0000000000_000000,
7851 0b_0000000000_000000,
7852 0b_0000000000_000000,
7853 0b_0000000000_000000,
7855 0b_0000110000_000000,
7856 0b_0000110000_000000,
7857 0b_0000111111_000000,
7858 0b_0000111111_000000,
7859 0b_0000110000_000000,
7860 0b_0000110000_000000,
7861 0b_0000111111_000000,
7862 0b_0000111111_000000,
7863 0b_0000000000_000000,
7864 0b_0000000000_000000,
7866 0b_0000000000_000000,
7867 0b_0000000000_000000,
7868 0b_0000111111_000000,
7869 0b_0000111111_000000,
7870 0b_0000110000_000000,
7871 0b_0000110000_000000,
7872 0b_0000111111_000000,
7873 0b_0000111111_000000,
7874 0b_0000110000_000000,
7875 0b_0000110000_000000,
7877 0b_0000000000_000000,
7878 0b_0000000000_000000,
7879 0b_0000000000_000000,
7880 0b_0000000000_000000,
7881 0b_0011111111_000000,
7882 0b_0011111111_000000,
7883 0b_0011001100_000000,
7884 0b_0011001100_000000,
7885 0b_0011001100_000000,
7886 0b_0011001100_000000,
7888 0b_0011001100_000000,
7889 0b_0011001100_000000,
7890 0b_0011001100_000000,
7891 0b_0011001100_000000,
7892 0b_1111001111_000000,
7893 0b_1111001111_000000,
7894 0b_0011001100_000000,
7895 0b_0011001100_000000,
7896 0b_0011001100_000000,
7897 0b_0011001100_000000,
7899 0b_0000110000_000000,
7900 0b_0000110000_000000,
7901 0b_1111111111_000000,
7902 0b_1111111111_000000,
7903 0b_0000000000_000000,
7904 0b_0000000000_000000,
7905 0b_1111111111_000000,
7906 0b_1111111111_000000,
7907 0b_0000110000_000000,
7908 0b_0000110000_000000,
7910 0b_0000110000_000000,
7911 0b_0000110000_000000,
7912 0b_0000110000_000000,
7913 0b_0000110000_000000,
7914 0b_1111110000_000000,
7915 0b_1111110000_000000,
7916 0b_0000000000_000000,
7917 0b_0000000000_000000,
7918 0b_0000000000_000000,
7919 0b_0000000000_000000,
7921 0b_0000000000_000000,
7922 0b_0000000000_000000,
7923 0b_0000000000_000000,
7924 0b_0000000000_000000,
7925 0b_0000111111_000000,
7926 0b_0000111111_000000,
7927 0b_0000110000_000000,
7928 0b_0000110000_000000,
7929 0b_0000110000_000000,
7930 0b_0000110000_000000,
7932 0b_1111111111_000000,
7933 0b_1111111111_000000,
7934 0b_1111111111_000000,
7935 0b_1111111111_000000,
7936 0b_1111111111_000000,
7937 0b_1111111111_000000,
7938 0b_1111111111_000000,
7939 0b_1111111111_000000,
7940 0b_1111111111_000000,
7941 0b_1111111111_000000,
7943 0b_0000000000_000000,
7944 0b_0000000000_000000,
7945 0b_0000000000_000000,
7946 0b_0000000000_000000,
7947 0b_0000000000_000000,
7948 0b_1111111111_000000,
7949 0b_1111111111_000000,
7950 0b_1111111111_000000,
7951 0b_1111111111_000000,
7952 0b_1111111111_000000,
7954 0b_1111100000_000000,
7955 0b_1111100000_000000,
7956 0b_1111100000_000000,
7957 0b_1111100000_000000,
7958 0b_1111100000_000000,
7959 0b_1111100000_000000,
7960 0b_1111100000_000000,
7961 0b_1111100000_000000,
7962 0b_1111100000_000000,
7963 0b_1111100000_000000,
7965 0b_0000011111_000000,
7966 0b_0000011111_000000,
7967 0b_0000011111_000000,
7968 0b_0000011111_000000,
7969 0b_0000011111_000000,
7970 0b_0000011111_000000,
7971 0b_0000011111_000000,
7972 0b_0000011111_000000,
7973 0b_0000011111_000000,
7974 0b_0000011111_000000,
7976 0b_1111111111_000000,
7977 0b_1111111111_000000,
7978 0b_1111111111_000000,
7979 0b_1111111111_000000,
7980 0b_1111111111_000000,
7981 0b_0000000000_000000,
7982 0b_0000000000_000000,
7983 0b_0000000000_000000,
7984 0b_0000000000_000000,
7985 0b_0000000000_000000,
7987 0b_0000000000_000000,
7988 0b_0000000000_000000,
7989 0b_0000000000_000000,
7990 0b_0001110110_000000,
7991 0b_0011011100_000000,
7992 0b_0011001000_000000,
7993 0b_0011011100_000000,
7994 0b_0001110110_000000,
7995 0b_0000000000_000000,
7996 0b_0000000000_000000,
7998 0b_0000000000_000000,
7999 0b_0001111000_000000,
8000 0b_0011001100_000000,
8001 0b_0011001100_000000,
8002 0b_0011011000_000000,
8003 0b_0011001100_000000,
8004 0b_0011000110_000000,
8005 0b_0011011100_000000,
8006 0b_0011000000_000000,
8007 0b_0000000000_000000,
8009 0b_0000000000_000000,
8010 0b_0011111110_000000,
8011 0b_0011000110_000000,
8012 0b_0011000000_000000,
8013 0b_0011000000_000000,
8014 0b_0011000000_000000,
8015 0b_0011000000_000000,
8016 0b_0011000000_000000,
8017 0b_0000000000_000000,
8018 0b_0000000000_000000,
8020 0b_0000000000_000000,
8021 0b_0000000000_000000,
8022 0b_0111111110_000000,
8023 0b_0011001100_000000,
8024 0b_0011001100_000000,
8025 0b_0011001100_000000,
8026 0b_0011001100_000000,
8027 0b_0011001100_000000,
8028 0b_0000000000_000000,
8029 0b_0000000000_000000,
8031 0b_0000000000_000000,
8032 0b_0011111110_000000,
8033 0b_0001100000_000000,
8034 0b_0000110000_000000,
8035 0b_0000011000_000000,
8036 0b_0000110000_000000,
8037 0b_0001100000_000000,
8038 0b_0011111110_000000,
8039 0b_0000000000_000000,
8040 0b_0000000000_000000,
8042 0b_0000000000_000000,
8043 0b_0000000000_000000,
8044 0b_0000000000_000000,
8045 0b_0001111110_000000,
8046 0b_0011011000_000000,
8047 0b_0011001100_000000,
8048 0b_0011001100_000000,
8049 0b_0001111000_000000,
8050 0b_0000000000_000000,
8051 0b_0000000000_000000,
8053 0b_0000000000_000000,
8054 0b_0000000000_000000,
8055 0b_0000000000_000000,
8056 0b_0110001100_000000,
8057 0b_0110001100_000000,
8058 0b_0110011100_000000,
8059 0b_0111110110_000000,
8060 0b_0110000000_000000,
8061 0b_0110000000_000000,
8062 0b_0000000000_000000,
8064 0b_0000000000_000000,
8065 0b_0000000000_000000,
8066 0b_0000000000_000000,
8067 0b_0011111100_000000,
8068 0b_0000110000_000000,
8069 0b_0000110000_000000,
8070 0b_0000110000_000000,
8071 0b_0000011000_000000,
8072 0b_0000000000_000000,
8073 0b_0000000000_000000,
8075 0b_0000000000_000000,
8076 0b_0001111000_000000,
8077 0b_0000110000_000000,
8078 0b_0011111100_000000,
8079 0b_0110110110_000000,
8080 0b_0110110110_000000,
8081 0b_0011111100_000000,
8082 0b_0000110000_000000,
8083 0b_0001111000_000000,
8084 0b_0000000000_000000,
8086 0b_0000000000_000000,
8087 0b_0001111000_000000,
8088 0b_0011001100_000000,
8089 0b_0011001100_000000,
8090 0b_0011111100_000000,
8091 0b_0011001100_000000,
8092 0b_0011001100_000000,
8093 0b_0001111000_000000,
8094 0b_0000000000_000000,
8095 0b_0000000000_000000,
8097 0b_0000000000_000000,
8098 0b_0001111100_000000,
8099 0b_0011000110_000000,
8100 0b_0011000110_000000,
8101 0b_0011000110_000000,
8102 0b_0011000110_000000,
8103 0b_0001101100_000000,
8104 0b_0011101110_000000,
8105 0b_0000000000_000000,
8106 0b_0000000000_000000,
8108 0b_0000000000_000000,
8109 0b_0001111100_000000,
8110 0b_0000110000_000000,
8111 0b_0000011000_000000,
8112 0b_0001111100_000000,
8113 0b_0011000110_000000,
8114 0b_0011000110_000000,
8115 0b_0001111100_000000,
8116 0b_0000000000_000000,
8117 0b_0000000000_000000,
8119 0b_0000000000_000000,
8120 0b_0000000000_000000,
8121 0b_0000000000_000000,
8122 0b_0011101110_000000,
8123 0b_0110011011_000000,
8124 0b_0110010011_000000,
8125 0b_0110110011_000000,
8126 0b_0011101110_000000,
8127 0b_0000000000_000000,
8128 0b_0000000000_000000,
8130 0b_0000000000_000000,
8131 0b_0000000000_000000,
8132 0b_0000000110_000000,
8133 0b_0011111100_000000,
8134 0b_0110011110_000000,
8135 0b_0110110110_000000,
8136 0b_0111100110_000000,
8137 0b_0011111100_000000,
8138 0b_0110000000_000000,
8139 0b_0000000000_000000,
8141 0b_0000000000_000000,
8142 0b_0000000000_000000,
8143 0b_0000000000_000000,
8144 0b_0001111100_000000,
8145 0b_0011000000_000000,
8146 0b_0001111000_000000,
8147 0b_0011000000_000000,
8148 0b_0001111100_000000,
8149 0b_0000000000_000000,
8150 0b_0000000000_000000,
8152 0b_0000000000_000000,
8153 0b_0001111100_000000,
8154 0b_0011000110_000000,
8155 0b_0011000110_000000,
8156 0b_0011000110_000000,
8157 0b_0011000110_000000,
8158 0b_0011000110_000000,
8159 0b_0011000110_000000,
8160 0b_0000000000_000000,
8161 0b_0000000000_000000,
8163 0b_0000000000_000000,
8164 0b_0000000000_000000,
8165 0b_0011111100_000000,
8166 0b_0000000000_000000,
8167 0b_0011111100_000000,
8168 0b_0000000000_000000,
8169 0b_0011111100_000000,
8170 0b_0000000000_000000,
8171 0b_0000000000_000000,
8172 0b_0000000000_000000,
8174 0b_0000000000_000000,
8175 0b_0000110000_000000,
8176 0b_0000110000_000000,
8177 0b_0011111100_000000,
8178 0b_0000110000_000000,
8179 0b_0000110000_000000,
8180 0b_0000000000_000000,
8181 0b_0011111100_000000,
8182 0b_0000000000_000000,
8183 0b_0000000000_000000,
8185 0b_0000000000_000000,
8186 0b_0000011000_000000,
8187 0b_0000110000_000000,
8188 0b_0001100000_000000,
8189 0b_0000110000_000000,
8190 0b_0000011000_000000,
8191 0b_0000000000_000000,
8192 0b_0011111100_000000,
8193 0b_0000000000_000000,
8194 0b_0000000000_000000,
8196 0b_0000000000_000000,
8197 0b_0001100000_000000,
8198 0b_0000110000_000000,
8199 0b_0000011000_000000,
8200 0b_0000110000_000000,
8201 0b_0001100000_000000,
8202 0b_0000000000_000000,
8203 0b_0011111100_000000,
8204 0b_0000000000_000000,
8205 0b_0000000000_000000,
8207 0b_0000000000_000000,
8208 0b_0000011100_000000,
8209 0b_0000110110_000000,
8210 0b_0000110110_000000,
8211 0b_0000110000_000000,
8212 0b_0000110000_000000,
8213 0b_0000110000_000000,
8214 0b_0000110000_000000,
8215 0b_0000110000_000000,
8216 0b_0000110000_000000,
8218 0b_0000110000_000000,
8219 0b_0000110000_000000,
8220 0b_0000110000_000000,
8221 0b_0000110000_000000,
8222 0b_0000110000_000000,
8223 0b_0000110000_000000,
8224 0b_0110110000_000000,
8225 0b_0110110000_000000,
8226 0b_0011100000_000000,
8227 0b_0000000000_000000,
8229 0b_0000000000_000000,
8230 0b_0000000000_000000,
8231 0b_0000110000_000000,
8232 0b_0000000000_000000,
8233 0b_0011111100_000000,
8234 0b_0000000000_000000,
8235 0b_0000110000_000000,
8236 0b_0000000000_000000,
8237 0b_0000000000_000000,
8238 0b_0000000000_000000,
8240 0b_0000000000_000000,
8241 0b_0011100000_000000,
8242 0b_0110110110_000000,
8243 0b_0000011100_000000,
8244 0b_0000000000_000000,
8245 0b_0011100000_000000,
8246 0b_0110110110_000000,
8247 0b_0000011100_000000,
8248 0b_0000000000_000000,
8249 0b_0000000000_000000,
8251 0b_0000000000_000000,
8252 0b_0000111000_000000,
8253 0b_0001101100_000000,
8254 0b_0001101100_000000,
8255 0b_0000111000_000000,
8256 0b_0000000000_000000,
8257 0b_0000000000_000000,
8258 0b_0000000000_000000,
8259 0b_0000000000_000000,
8260 0b_0000000000_000000,
8262 0b_0000000000_000000,
8263 0b_0000000000_000000,
8264 0b_0000000000_000000,
8265 0b_0000110000_000000,
8266 0b_0000110000_000000,
8267 0b_0000000000_000000,
8268 0b_0000000000_000000,
8269 0b_0000000000_000000,
8270 0b_0000000000_000000,
8271 0b_0000000000_000000,
8273 0b_0000000000_000000,
8274 0b_0000000000_000000,
8275 0b_0000000000_000000,
8276 0b_0000000000_000000,
8277 0b_0000110000_000000,
8278 0b_0000000000_000000,
8279 0b_0000000000_000000,
8280 0b_0000000000_000000,
8281 0b_0000000000_000000,
8282 0b_0000000000_000000,
8284 0b_0000000000_000000,
8285 0b_0000011111_000000,
8286 0b_0000011000_000000,
8287 0b_0000011000_000000,
8288 0b_0110011000_000000,
8289 0b_0011011000_000000,
8290 0b_0001111000_000000,
8291 0b_0000111000_000000,
8292 0b_0000011000_000000,
8293 0b_0000001000_000000,
8295 0b_0000000000_000000,
8296 0b_0011111000_000000,
8297 0b_0011001100_000000,
8298 0b_0011001100_000000,
8299 0b_0011001100_000000,
8300 0b_0011001100_000000,
8301 0b_0000000000_000000,
8302 0b_0000000000_000000,
8303 0b_0000000000_000000,
8304 0b_0000000000_000000,
8306 0b_0000000000_000000,
8307 0b_0001111000_000000,
8308 0b_0000001100_000000,
8309 0b_0000111000_000000,
8310 0b_0001100000_000000,
8311 0b_0001111100_000000,
8312 0b_0000000000_000000,
8313 0b_0000000000_000000,
8314 0b_0000000000_000000,
8315 0b_0000000000_000000,
8317 0b_0000000000_000000,
8318 0b_0000000000_000000,
8319 0b_0000000000_000000,
8320 0b_0001111000_000000,
8321 0b_0001111000_000000,
8322 0b_0001111000_000000,
8323 0b_0001111000_000000,
8324 0b_0000000000_000000,
8325 0b_0000000000_000000,
8326 0b_0000000000_000000,
8328 0b_0000000000_000000,
8329 0b_0000000000_000000,
8330 0b_0000000000_000000,
8331 0b_0000000000_000000,
8332 0b_0000000000_000000,
8333 0b_0000000000_000000,
8334 0b_0000000000_000000,
8335 0b_0000000000_000000,
8336 0b_0000000000_000000,
8337 0b_0000000000_000000,