MarchingCubesTable.hpp
Go to the documentation of this file.
1 // This code is based on Jet framework.
2 // Copyright (c) 2018 Doyub Kim
3 // CubbyFlow is voxel-based fluid simulation engine for computer games.
4 // Copyright (c) 2020 CubbyFlow Team
5 // Core Part: Chris Ohk, Junwoo Hwang, Jihong Sin, Seungwoo Yoo
6 // AI Part: Dongheon Cho, Minseo Kim
7 // We are making my contributions/submissions to this project solely in our
8 // personal capacity and are not conveying any rights to any intellectual
9 // property of any third parties.
10 
11 // Marching Cubes Example Program
12 // by Cory Bloyd (corysama@yahoo.com)
13 //
14 // A simple, portable and complete implementation of the Marching Cubes
15 // and Marching Tetrahedrons algorithms in a single source file.
16 // There are many ways that this code could be made faster, but the
17 // intent is for the code to be easy to understand.
18 //
19 // For a description of the algorithm go to
20 // http://astronomy.swin.edu.au/pbourke/modelling/polygonise/
21 //
22 // This code is public domain.
23 
24 #ifndef CUBBYFLOW_MARCHING_CUBES_TABLE_HPP
25 #define CUBBYFLOW_MARCHING_CUBES_TABLE_HPP
26 
27 namespace CubbyFlow
28 {
29 // vertexOffset lists the positions, relative to vertex0, of each of the 8
30 // vertices of a cube
31 static const float vertexOffset[8][3] = {
32  { 0.0f, 0.0f, 0.0f }, { 1.0f, 0.0f, 0.0f }, { 1.0f, 0.0f, 1.0f },
33  { 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f, 0.0f }, { 1.0f, 1.0f, 0.0f },
34  { 1.0f, 1.0f, 1.0f }, { 0.0f, 1.0f, 1.0f }
35 };
36 
37 // edgeConnection lists the index of the endpoint vertices for each of the 12
38 // edges of the cube
39 static const int edgeConnection[12][2] = { { 0, 1 }, { 1, 2 }, { 3, 2 },
40  { 0, 3 }, { 4, 5 }, { 5, 6 },
41  { 7, 6 }, { 4, 7 }, { 0, 4 },
42  { 1, 5 }, { 2, 6 }, { 3, 7 } };
43 
44 // edgeDirection lists the direction vector (vertex[i+1]-vertex[i])/2 for each
45 // edge in the cube
46 static const float edgeDirection[12][3] = {
47  { 1.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 1.0f }, { 1.0f, 0.0f, 0.0f },
48  { 0.0f, 0.0f, 1.0f }, { 1.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 1.0f },
49  { 1.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f, 0.0f },
50  { 0.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }
51 };
52 
53 // edgeCenter lists for calculating counterclockwise order
54 static const float edgeCenter[12][3] = {
55  { 0.5f, 0.0f, 0.0f }, { 1.0f, 0.0f, 0.5f }, { 0.5f, 0.0f, 1.0f },
56  { 0.0f, 0.0f, 0.5f }, { 0.5f, 1.0f, 0.0f }, { 1.0f, 1.0f, 0.5f },
57  { 0.5f, 1.0f, 1.0f }, { 0.0f, 1.0f, 0.5f }, { 0.0f, 0.5f, 0.0f },
58  { 1.0f, 0.5f, 0.0f }, { 1.0f, 0.5f, 1.0f }, { 0.0f, 0.5f, 1.0f }
59 };
60 
61 static const int threeNeighborNodes[8][3] = { { 1, 3, 4 }, { 0, 2, 5 },
62  { 1, 3, 6 }, { 0, 2, 7 },
63  { 0, 5, 7 }, { 1, 4, 6 },
64  { 2, 5, 7 }, { 3, 4, 6 } };
65 
66 static const int threeNeighborEdges[8][3] = { { 0, 3, 8 }, { 0, 1, 9 },
67  { 1, 2, 10 }, { 2, 3, 11 },
68  { 4, 7, 8 }, { 4, 5, 9 },
69  { 5, 6, 10 }, { 6, 7, 11 } };
70 
71 // For any edge, if one vertex is inside of the surface and the other is outside
72 // of the surface then the edge intersects the surface
73 // For each of the 8 vertices of the cube can be two possible states : either
74 // inside or outside of the surface
75 // For any cube there are 2^8=256 possible sets of vertex states
76 // This table lists the edges intersected by the surface for all 256 possible
77 // vertex states
78 // There are 12 edges. For each entry in the table, if edge #n is intersected,
79 // then bit #n is set to 1
80 static const int cubeEdgeFlags[256] = {
81  0x000, 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c, 0x80c, 0x905, 0xa0f,
82  0xb06, 0xc0a, 0xd03, 0xe09, 0xf00, 0x190, 0x099, 0x393, 0x29a, 0x596, 0x49f,
83  0x795, 0x69c, 0x99c, 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90, 0x230,
84  0x339, 0x033, 0x13a, 0x636, 0x73f, 0x435, 0x53c, 0xa3c, 0xb35, 0x83f, 0x936,
85  0xe3a, 0xf33, 0xc39, 0xd30, 0x3a0, 0x2a9, 0x1a3, 0x0aa, 0x7a6, 0x6af, 0x5a5,
86  0x4ac, 0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa, 0xea3, 0xda9, 0xca0, 0x460, 0x569,
87  0x663, 0x76a, 0x066, 0x16f, 0x265, 0x36c, 0xc6c, 0xd65, 0xe6f, 0xf66, 0x86a,
88  0x963, 0xa69, 0xb60, 0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6, 0x0ff, 0x3f5, 0x2fc,
89  0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0, 0x650, 0x759, 0x453,
90  0x55a, 0x256, 0x35f, 0x055, 0x15c, 0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a, 0xb53,
91  0x859, 0x950, 0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0x0cc, 0xfcc,
92  0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0, 0x8c0, 0x9c9, 0xac3, 0xbca,
93  0xcc6, 0xdcf, 0xec5, 0xfcc, 0x0cc, 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9,
94  0x7c0, 0x950, 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c, 0x15c, 0x055,
95  0x35f, 0x256, 0x55a, 0x453, 0x759, 0x650, 0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6,
96  0xfff, 0xcf5, 0xdfc, 0x2fc, 0x3f5, 0x0ff, 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0,
97  0xb60, 0xa69, 0x963, 0x86a, 0xf66, 0xe6f, 0xd65, 0xc6c, 0x36c, 0x265, 0x16f,
98  0x066, 0x76a, 0x663, 0x569, 0x460, 0xca0, 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af,
99  0xaa5, 0xbac, 0x4ac, 0x5a5, 0x6af, 0x7a6, 0x0aa, 0x1a3, 0x2a9, 0x3a0, 0xd30,
100  0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c, 0x53c, 0x435, 0x73f, 0x636,
101  0x13a, 0x033, 0x339, 0x230, 0xe90, 0xf99, 0xc93, 0xd9a, 0xa96, 0xb9f, 0x895,
102  0x99c, 0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x099, 0x190, 0xf00, 0xe09,
103  0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c, 0x70c, 0x605, 0x50f, 0x406, 0x30a,
104  0x203, 0x109, 0x000
105 };
106 
107 // For each of the possible vertex states listed in CubeEdgeFlags
108 // there is a specific triangulation of the edge intersection points.
109 // TriangleConnectionTable lists all of them in the form of 0-5 edge triples
110 // with the list terminated by the invalid value -1.
111 // For example: TriangleConnectionTable[3] list the 2 triangles formed
112 // when corner[0] and corner[1] are inside of the surface, but the rest of the
113 // cube is not.
114 // three vertices of a triangle = counter-clock-wise order
115 static const int triangleConnectionTable3D[256][16] = {
116  // EdgeFlag, NodeFlag special case for MDC
117  {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x000, 0000 0000 X
118  { 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x109, 0000 0001 O { 0, 8, 8, 3, 3, 0
119  { 0, 1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x203, 0000 0010 O { 0, 1, 1, 9, 9, 0
120  { 1, 8, 3, 9, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x30a, 0000 0011 O { 1, 9, 9, 8, 8, 3, 3, 1
121  { 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x406, 0000 0100 O { 1, 2, 2, 10, 10, 1
122  { 0, 8, 3, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x50f, 0000 0101 X
123  { 9, 2, 10, 0, 2, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x605, 0000 0110 O { 0, 2, 2, 10, 10, 9, 9, 0
124  { 2, 8, 3, 2, 10, 8, 10, 9, 8, -1, -1, -1, -1, -1, -1, -1 }, // 0x70c, 0000 0111 O { 3, 2, 2, 10, 10, 9, 9, 8, 8, 3
125  { 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x80c, 0000 1000 O { 3, 11, 11, 2, 2, 3
126  { 0, 11, 2, 8, 11, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x905, 0000 1001 O { 2, 0, 0, 8, 8, 11, 11, 2
127  { 1, 9, 0, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xa0f, 0000 1010 X
128  { 1, 11, 2, 1, 9, 11, 9, 8, 11, -1, -1, -1, -1, -1, -1, -1 }, // 0xb06, 0000 1011 O { 2, 1, 1, 9, 9, 8, 8, 11, 11, 2
129  { 3, 10, 1, 11, 10, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xc0a, 0000 1100 O { 1, 3, 3, 11, 11, 10, 10, 1
130  { 0, 10, 1, 0, 8, 10, 8, 11, 10, -1, -1, -1, -1, -1, -1, -1 }, // 0xd03, 0000 1101 O { 1, 0, 0, 8, 8, 11, 11, 10, 10, 1
131  { 3, 9, 0, 3, 11, 9, 11, 10, 9, -1, -1, -1, -1, -1, -1, -1 }, // 0xe09, 0000 1110 O { 0, 3, 3, 11, 11, 10, 10, 9, 9, 0
132  { 9, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xf00, 0000 1111 O { 9, 8, 8, 11, 11, 10, 10, 9
133 
134  { 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x190, 0001 0000 O { 4, 7, 7, 8, 8, 4
135  { 4, 3, 0, 7, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x099, 0001 0001 O { 3, 0, 0, 4, 4, 7, 7, 3
136  { 0, 1, 9, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x393, 0001 0010 X
137  { 4, 1, 9, 4, 7, 1, 7, 3, 1, -1, -1, -1, -1, -1, -1, -1 }, // 0x29a, 0001 0011 O { 3, 1, 1, 9, 9, 4, 4, 7, 7, 3
138  { 1, 2, 10, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x596, 0001 0100 X
139  { 3, 4, 7, 3, 0, 4, 1, 2, 10, -1, -1, -1, -1, -1, -1, -1 }, // 0x49f, 0001 0101 X
140  { 9, 2, 10, 9, 0, 2, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 }, // 0x795, 0001 0110 X
141  { 2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4, -1, -1, -1, -1 }, // 0x69c, 0001 0111 O { 3, 2, 2, 10, 10, 9, 9, 4, 4, 7, 7, 3
142  { 8, 4, 7, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x99c, 0001 1000 X
143  { 11, 4, 7, 11, 2, 4, 2, 0, 4, -1, -1, -1, -1, -1, -1, -1 }, // 0x895, 0001 1001 O { 2, 0, 0, 4, 4, 7, 7, 11, 11, 2
144  { 9, 0, 1, 8, 4, 7, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 }, // 0xb9f, 0001 1010 X
145  { 4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1, -1, -1, -1, -1 }, // 0xa96, 0001 1011 O { 2, 1, 1, 9, 9, 4, 4, 7, 7, 11, 11, 2
146  { 3, 10, 1, 3, 11, 10, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1 }, // 0xd9a, 0001 1100 X
147  { 1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4, -1, -1, -1, -1 }, // 0xc93, 0001 1101 O { 1, 0, 0, 4, 4, 7, 7, 11, 11, 10, 10, 1
148  { 4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3, -1, -1, -1, -1 }, // 0xf99, 0001 1110 X
149  { 4, 7, 11, 4, 11, 9, 9, 11, 10, -1, -1, -1, -1, -1, -1, -1 }, // 0xe90, 0001 1111 O { 4, 7, 7, 11, 11, 10, 10, 9, 9, 4,
150 
151  { 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x230, 0010 0000 O { 9, 5, 5, 4, 4, 9
152  { 9, 5, 4, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x339, 0010 0001 X
153  { 0, 5, 4, 1, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x033, 0010 0010 O { 0, 1, 1, 5, 5, 4, 4, 0
154  { 8, 5, 4, 8, 3, 5, 3, 1, 5, -1, -1, -1, -1, -1, -1, -1 }, // 0x13a, 0010 0011 O { 3, 1, 1, 5, 5, 4, 4, 8, 8, 3
155  { 1, 2, 10, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x636, 0010 0100 X
156  { 3, 0, 8, 1, 2, 10, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 }, // 0x73f, 0010 0101 X
157  { 5, 2, 10, 5, 4, 2, 4, 0, 2, -1, -1, -1, -1, -1, -1, -1 }, // 0x435, 0010 0110 O { 0, 2, 2, 10, 10, 5, 5, 4, 4, 0
158  { 2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8, -1, -1, -1, -1 }, // 0x53c, 0010 0111 O { 3, 2, 2, 10, 10, 5, 5, 4, 4, 8, 8, 3
159  { 9, 5, 4, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xa3c, 0010 1000 X
160  { 0, 11, 2, 0, 8, 11, 4, 9, 5, -1, -1, -1, -1, -1, -1, -1 }, // 0xb35, 0010 1001 X
161  { 0, 5, 4, 0, 1, 5, 2, 3, 11, -1, -1, -1, -1, -1, -1, -1 }, // 0x83f, 0010 1010 X
162  { 2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5, -1, -1, -1, -1 }, // 0x936, 0010 1011 O { 2, 1, 1, 5, 5, 4, 4, 8, 8, 11, 11, 2
163  { 10, 3, 11, 10, 1, 3, 9, 5, 4, -1, -1, -1, -1, -1, -1, -1 }, // 0xe3a, 0010 1100 X
164  { 4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10, -1, -1, -1, -1 }, // 0xf33, 0010 1101 X
165  { 5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3, -1, -1, -1, -1 }, // 0xc39, 0010 1110 O { 0, 3, 3, 11, 11, 10, 10, 5, 5, 4, 4, 0
166  { 5, 4, 8, 5, 8, 10, 10, 8, 11, -1, -1, -1, -1, -1, -1, -1 }, // 0xd30, 0010 1111 O { 5, 4, 4, 8, 8, 11, 11, 10, 10, 5
167 
168  { 9, 7, 8, 5, 7, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x3a0, 0011 0000 O { 5, 7, 7, 8, 8, 9, 9, 5
169  { 9, 3, 0, 9, 5, 3, 5, 7, 3, -1, -1, -1, -1, -1, -1, -1 }, // 0x2a9, 0011 0001 O { 3, 0, 0, 9, 9, 5, 5, 7, 7, 3
170  { 0, 7, 8, 0, 1, 7, 1, 5, 7, -1, -1, -1, -1, -1, -1, -1 }, // 0x1a3, 0011 0010 O { 0, 1, 1, 5, 5, 7, 7, 8, 8, 0
171  { 1, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x0aa, 0011 0011 O { 3, 1, 1, 5, 5, 7, 7, 3
172  { 9, 7, 8, 9, 5, 7, 10, 1, 2, -1, -1, -1, -1, -1, -1, -1 }, // 0x7a6, 0011 0100 X
173  { 10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3, -1, -1, -1, -1 }, // 0x6af, 0011 0101 X
174  { 8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2, -1, -1, -1, -1 }, // 0x5a5, 0011 0110 O { 0, 2, 2, 10, 10, 5, 5, 7, 7, 8, 8, 0
175  { 2, 10, 5, 2, 5, 3, 3, 5, 7, -1, -1, -1, -1, -1, -1, -1 }, // 0x4ac, 0011 0111 O { 3, 2, 2, 10, 10, 5, 5, 7, 7, 3
176  { 7, 9, 5, 7, 8, 9, 3, 11, 2, -1, -1, -1, -1, -1, -1, -1 }, // 0xbac, 0011 1000 X
177  { 9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11, -1, -1, -1, -1 }, // 0xaa5, 0011 1001 O { 2, 0, 0, 9, 9, 5, 5, 7, 7, 11, 11, 2
178  { 2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7, -1, -1, -1, -1 }, // 0x9af, 0011 1010 X
179  { 11, 2, 1, 11, 1, 7, 7, 1, 5, -1, -1, -1, -1, -1, -1, -1 }, // 0x8a6, 0011 1011 O { 2, 1, 1, 5, 5, 7, 7, 11, 11, 2
180  { 9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11, -1, -1, -1, -1 }, // 0xfaa, 0011 1100 X
181  { 5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0, -1 }, // 0xea3, 0011 1101 X
182  { 11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0, -1 }, // 0xda9, 0011 1110 X
183  { 11, 10, 5, 7, 11, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xca0, 0011 1111 O { 5, 7, 7, 11, 11, 10, 10, 5
184 
185  { 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x460, 0100 0000 O { 10, 6, 6, 5, 5, 10
186  { 0, 8, 3, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x569, 0100 0001 X
187  { 9, 0, 1, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x663, 0100 0010 X
188  { 1, 8, 3, 1, 9, 8, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 }, // 0x76a, 0100 0011 X
189  { 1, 6, 5, 2, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x066, 0100 0100 O { 1, 2, 2, 6, 6, 5, 5, 1
190  { 1, 6, 5, 1, 2, 6, 3, 0, 8, -1, -1, -1, -1, -1, -1, -1 }, // 0x16f, 0100 0101 X
191  { 9, 6, 5, 9, 0, 6, 0, 2, 6, -1, -1, -1, -1, -1, -1, -1 }, // 0x265, 0100 0110 O { 0, 2, 2, 6, 6, 5, 5, 9, 9, 0
192  { 5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8, -1, -1, -1, -1 }, // 0x36c, 0100 0111 O { 3, 2, 2, 6, 6, 5, 5, 9, 9, 8, 8, 3
193  { 2, 3, 11, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xc6c, 0100 1000 X
194  { 11, 0, 8, 11, 2, 0, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 }, // 0xd65, 0100 1001 X
195  { 0, 1, 9, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1, -1, -1, -1 }, // 0xe6f, 0100 1010 X
196  { 5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11, -1, -1, -1, -1 }, // 0xf66, 0100 1011 X
197  { 6, 3, 11, 6, 5, 3, 5, 1, 3, -1, -1, -1, -1, -1, -1, -1 }, // 0x86a, 0100 1100 O { 5, 1, 1, 3, 3, 11, 11, 6, 6, 5
198  { 0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6, -1, -1, -1, -1 }, // 0x963, 0100 1101 O { 1, 0, 0, 8, 8, 11, 11, 6, 6, 5, 5, 1
199  { 3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9, -1, -1, -1, -1 }, // 0xa69, 0100 1110 O { 0, 3, 3, 11, 11, 6, 6, 5, 5, 9, 9, 0
200  { 6, 5, 9, 6, 9, 11, 11, 9, 8, -1, -1, -1, -1, -1, -1, -1 }, // 0xb60, 0100 1111 O { 6, 5, 5, 9, 9, 8, 8, 11, 11, 6
201 
202  { 5, 10, 6, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x5f0, 0101 0000 X
203  { 4, 3, 0, 4, 7, 3, 6, 5, 10, -1, -1, -1, -1, -1, -1, -1 }, // 0x4f9, 0101 0001 X
204  { 1, 9, 0, 5, 10, 6, 8, 4, 7, -1, -1, -1, -1, -1, -1, -1 }, // 0x7f3, 0101 0010 X
205  { 10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4, -1, -1, -1, -1 }, // 0x6fa, 0101 0011 X
206  { 6, 1, 2, 6, 5, 1, 4, 7, 8, -1, -1, -1, -1, -1, -1, -1 }, // 0x1f6, 0101 0100 X
207  { 1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7, -1, -1, -1, -1 }, // 0x0ff, 0101 0101 X
208  { 8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6, -1, -1, -1, -1 }, // 0x3f5, 0101 0110 X
209  { 7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9, -1 }, // 0xxfc, 0101 0111 X
210  { 3, 11, 2, 7, 8, 4, 10, 6, 5, -1, -1, -1, -1, -1, -1, -1 }, // 0xdfc, 0101 1000 X
211  { 5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11, -1, -1, -1, -1 }, // 0xcf5, 0101 1001 X
212  { 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6, -1, -1, -1, -1 }, // 0xfff, 0101 1010 X
213  { 9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6, -1 }, // 0xef6, 0101 1011 X
214  { 8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6, -1, -1, -1, -1 }, // 0x9fa, 0101 1100 X
215  { 5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11, -1 }, // 0x8f3, 0101 1101 X
216  { 0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7, -1 }, // 0xbf9, 0101 1110 X
217  { 6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9, -1, -1, -1, -1 }, // 0xaf0, 0101 1111 O { 4, 7, 7, 11, 11, 6, 6, 5, 5, 9, 9, 4
218 
219  { 10, 4, 9, 6, 4, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x650, 0110 0000 O { 6, 4, 4, 9, 9, 10, 10, 6
220  { 4, 10, 6, 4, 9, 10, 0, 8, 3, -1, -1, -1, -1, -1, -1, -1 }, // 0x759, 0110 0001 X
221  { 10, 0, 1, 10, 6, 0, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1 }, // 0x453, 0110 0010 O { 0, 1, 1, 10, 10, 6, 6, 4, 4, 0
222  { 8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10, -1, -1, -1, -1 }, // 0x55a, 0110 0011 O { 3, 1, 1, 10, 10, 6, 6, 4, 4, 8, 8, 3
223  { 1, 4, 9, 1, 2, 4, 2, 6, 4, -1, -1, -1, -1, -1, -1, -1 }, // 0x256, 0110 0100 O { 1, 2, 2, 6, 6, 4, 4, 9, 9, 1
224  { 3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4, -1, -1, -1, -1 }, // 0x35f, 0110 0101 X
225  { 0, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x055, 0110 0110 O { 0, 2, 2, 6, 6, 4, 4, 0
226  { 8, 3, 2, 8, 2, 4, 4, 2, 6, -1, -1, -1, -1, -1, -1, -1 }, // 0x15c, 0110 0111 O { 3, 2, 2, 6, 6, 4, 4, 8, 8, 3
227  { 10, 4, 9, 10, 6, 4, 11, 2, 3, -1, -1, -1, -1, -1, -1, -1 }, // 0xe5c, 0110 1000 X
228  { 0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6, -1, -1, -1, -1 }, // 0xf55, 0110 1001 X
229  { 3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10, -1, -1, -1, -1 }, // 0xc5f, 0110 1010 X
230  { 6 , 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1, -1 }, // 0xd56, 0110 1011 O { 2, 1, 1, 10, 10, 6, 6, 4, 4, 8, 8, 11, 11, 2
231  { 9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3, -1, -1, -1, -1 }, // 0xa5a, 0110 1100 O { 1, 3, 3, 11, 11, 6, 6, 4, 4, 9, 9, 1
232  { 8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1, -1 }, // 0xb53, 0110 1101 X
233  { 3, 11, 6, 3, 6, 0, 0, 6, 4, -1, -1, -1, -1, -1, -1, -1 }, // 0x859, 0110 1110 O { 0, 3, 3, 11, 11, 6, 6, 4, 4, 0
234  { 6, 4, 8, 11, 6, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x950, 0110 1111 O { 6, 4, 4, 8, 8, 11, 11, 6
235 
236  { 7, 10, 6, 7, 8, 10, 8, 9, 10, -1, -1, -1, -1, -1, -1, -1 }, // 0x7c0, 0111 0000 O { 6, 7, 7, 8, 8, 9, 9, 10, 10, 6
237  { 0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10, -1, -1, -1, -1 }, // 0x6c9, 0111 0001 O { 0, 10, 10, 6, 6, 7, 7, 3, 3, 0
238  { 10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0, -1, -1, -1, -1 }, // 0x5c3, 0111 0010 O { 0, 1, 1, 10, 10, 6, 6, 7, 7, 8, 8, 0
239  { 10, 6, 7, 10, 7, 1, 1, 7, 3, -1, -1, -1, -1, -1, -1, -1 }, // 0x4ca, 0111 0011 O { 3, 1, 1, 10, 10, 6, 6, 7, 7, 3
240  { 1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7, -1, -1, -1, -1 }, // 0x3c6, 0111 0100 O { 1, 2, 2, 6, 6, 7, 7, 8, 8, 9, 9, 1
241  { 2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9, -1 }, // 0x2cf, 0111 0101 X
242  { 7, 8, 0, 7, 0, 6, 6, 0, 2, -1, -1, -1, -1, -1, -1, -1 }, // 0x1c5, 0111 0110 O { 0, 2, 2, 6, 6, 7, 7, 8, 8, 0
243  { 7, 3, 2, 6, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x0cc, 0111 0111 O { 3, 2, 2, 6, 6, 7, 7, 3
244  { 2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7, -1, -1, -1, -1 }, // 0xfcc, 0111 1000 X
245  { 2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7, -1 }, // 0xec5, 0111 1001 X
246  { 1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11, -1 }, // 0xdcf, 0111 1010 X
247  { 11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1, -1, -1, -1, -1 }, // 0xcc6, 0111 1011 O { 2, 1, 1, 10, 10, 6, 6, 7, 7, 11, 11, 2
248  { 8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3 , 6, -1 }, // 0xbca, 0111 1100 X
249  { 0, 9, 1, 11, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xac3, 0111 1101 X
250  { 7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0, -1, -1, -1, -1 }, // 0x9c9, 0111 1110 O { 0, 3, 3, 11, 11, 6, 6, 7, 7, 8, 8, 0
251  { 7, 11, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x8c0, 0111 1111 O { 6, 7, 7, 11, 11, 6
252 
253  { 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x8c0, 1000 0000 O { 7, 6, 6, 11, 11, 7
254  { 3, 0, 8, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x9c9, 1000 0001 X
255  { 0, 1, 9, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xac3, 1000 0010 X
256  { 8, 1, 9, 8, 3, 1, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 }, // 0xbca, 1000 0011 X
257  { 10, 1, 2, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xcc6, 1000 0100 X
258  { 1, 2, 10, 3, 0, 8, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 }, // 0xdcf, 1000 0101 X
259  { 2, 9, 0, 2, 10, 9, 6, 11, 7, -1, -1, -1, -1, -1, -1, -1 }, // 0xec5, 1000 0110 X
260  { 6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8, -1, -1, -1, -1 }, // 0xfcc, 1000 0111 X
261  { 7, 2, 3, 6, 2, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x0cc, 1000 1000 O { 2, 3, 3, 7, 7, 6, 6, 2
262  { 7, 0, 8, 7, 6, 0, 6, 2, 0, -1, -1, -1, -1, -1, -1, -1 }, // 0x1c5, 1000 1001 O { 2, 0, 0, 8, 8, 7, 7, 6, 6, 2
263  { 2, 7, 6, 2, 3, 7, 0, 1, 9, -1, -1, -1, -1, -1, -1, -1 }, // 0x2cf, 1000 1010 X
264  { 1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6, -1, -1, -1, -1 }, // 0x3c6, 1000 1011 O { 2, 1, 1, 9, 9, 8, 8, 7, 7, 6, 6, 2
265  { 10, 7, 6, 10, 1, 7, 1, 3, 7, -1, -1, -1, -1, -1, -1, -1 }, // 0x4ca, 1000 1100 O { 1, 3, 3, 7, 7, 6, 6, 10, 10, 1
266  { 10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8, -1, -1, -1, -1 }, // 0x5c3, 1000 1101 O { 1, 0, 0, 8, 8, 7, 7, 6, 6, 10, 10, 1
267  { 0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7, -1, -1, -1, -1 }, // 0x6c9, 1000 1110 O { 0, 3, 3, 7, 7, 6, 6, 10, 10, 9, 9, 0
268  { 7, 6, 10, 7, 10, 8, 8, 10, 9, -1, -1, -1, -1, -1, -1, -1 }, // 0x7c0, 1000 1111 O { 7, 6, 6, 10, 10, 9, 9, 8, 8, 7
269 
270  { 6, 8, 4, 11, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x950, 1001 0000 O { 4, 6, 6, 11, 11, 8, 8, 4
271  { 3, 6, 11, 3, 0, 6, 0, 4, 6, -1, -1, -1, -1, -1, -1, -1 }, // 0x859, 1001 0001 O { 3, 0, 0, 4, 4, 6, 6, 11, 11, 3
272  { 8, 6, 11, 8, 4, 6, 9, 0, 1, -1, -1, -1, -1, -1, -1, -1 }, // 0xb53, 1001 0010 X
273  { 9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6, -1, -1, -1, -1 }, // 0xa5a, 1001 0011 O { 1, 9, 9, 4, 4, 6, 6, 11, 11, 3, 3, 1
274  { 6, 8, 4, 6, 11, 8, 2, 10, 1, -1, -1, -1, -1, -1, -1, -1 }, // 0xd56, 1001 0100 X
275  { 1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6, -1, -1, -1, -1 }, // 0xc5f, 1001 0101 X
276  { 4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9, -1, -1, -1, -1 }, // 0xf55, 1001 0110 X
277  { 10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3, -1 }, // 0xe5c, 1001 0111 X
278  { 8, 2, 3, 8, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1 }, // 0x15c, 1001 1000 O { 2, 3, 3, 8, 8, 4, 4, 6, 6, 2
279  { 0, 4, 2, 4, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x055, 1001 1001 O { 2, 0, 0, 4, 4, 6, 6, 2
280  { 1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8, -1, -1, -1, -1 }, // 0x35f, 1001 1010 X
281  { 1, 9, 4, 1, 4, 2, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1 }, // 0x256, 1001 1011 O { 2, 1, 1, 9, 9, 4, 4, 6, 6, 2
282  { 8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1, -1, -1, -1, -1 }, // 0x55a, 1001 1100 O { 1, 3, 3, 8, 8, 4, 4, 6, 6, 10, 10, 1
283  { 10, 1, 0, 10, 0, 6, 6, 0, 4, -1, -1, -1, -1, -1, -1, -1 }, // 0x453, 1001 1101 O { 1, 0, 0, 4, 4, 6, 6, 10, 10, 1
284  { 4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3, -1 }, // 0x759, 1001 1110 X
285  { 10, 9, 4, 6, 10, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x650, 1001 1111 O { 4, 6, 6, 10, 10, 9, 9, 4
286 
287  { 4, 9, 5, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xaf0, 1010 0000 X
288  { 0, 8, 3, 4, 9, 5, 11, 7, 6, -1, -1, -1, -1, -1, -1, -1 }, // 0xbf9, 1010 0001 X
289  { 5, 0, 1, 5, 4, 0, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 }, // 0x8f3, 1010 0010 X
290  { 11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5, -1, -1, -1, -1 }, // 0x9fa, 1010 0011 X
291  { 9, 5, 4, 10, 1, 2, 7, 6, 11, -1, -1, -1, -1, -1, -1, -1 }, // 0xef6, 1010 0100 X
292  { 6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5, -1, -1, -1, -1 }, // 0xfff, 1010 0101 X
293  { 7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2, -1, -1, -1, -1 }, // 0xcf5, 1010 0110 X
294  { 3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6, -1 }, // 0xdfc, 1010 0111 X
295  { 7, 2, 3, 7, 6, 2, 5, 4, 9, -1, -1, -1, -1, -1, -1, -1 }, // 0x2fc, 1010 1000 X
296  { 9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7, -1, -1, -1, -1 }, // 0x3f5, 1010 1001 X
297  { 3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0, -1, -1, -1, -1 }, // 0x0ff, 1010 1010 X
298  { 6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8, -1 }, // 0x1f6, 1010 1011 X
299  { 9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7, -1, -1, -1, -1 }, // 0x6fa, 1010 1100 X
300  { 1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4, -1 }, // 0x7f3, 1010 1101 X
301  { 4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10, -1 }, // 0x4f9, 1010 1110 X
302  { 7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10, -1, -1, -1, -1 }, // 0x5f0, 1010 1111 O { 5, 4, 4, 8, 8, 7, 7, 6, 6, 10, 10, 5
303 
304  { 6, 9, 5, 6, 11, 9, 11, 8, 9, -1, -1, -1, -1, -1, -1, -1 }, // 0xb60, 1011 0000 O { 5, 6, 6, 11, 11, 8, 8, 9, 9, 5
305  { 3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5, -1, -1, -1, -1 }, // 0xa69, 1011 0001 O { 5, 6, 6, 11, 11, 3, 3, 0, 0, 9, 9, 5
306  { 0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11, -1, -1, -1, -1 }, // 0x963, 1011 0010 O { 0, 1, 1, 5, 5, 6, 6, 11, 11, 8, 8, 0
307  { 6, 11, 3, 6, 3, 5, 5, 3 , 1, -1, -1, -1, -1, -1, -1, -1 }, // 0x86a, 1011 0011 O { 3, 1, 1, 5, 5, 6, 6, 11, 11, 3
308  { 1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6, -1, -1, -1, -1 }, // 0xf66, 1011 0100 X
309  { 0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10, -1 }, // 0xe6f, 1011 0101 X
310  { 11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5, -1 }, // 0xd65, 1011 0110 X
311  { 3, 6, 11, 6, 3, 5, 2, 10, 3, 10, 5, 3, -1, -1, -1, -1 }, //{ 2, 11, 3, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xc6c, 1011 0111 X
312  { 5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2, -1, -1, -1, -1 }, // 0x36c, 1011 1000 O { 2, 3, 3, 8, 8, 9, 9, 5, 5, 6, 6, 2
313  { 9, 5, 6, 9, 6, 0, 0, 6, 2, -1, -1, -1, -1, -1, -1, -1 }, // 0x265, 1011 1001 O { 2, 0, 0, 9, 9, 5, 5, 6, 6, 2
314  { 1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8, -1 }, // 0x16f, 1011 1010 X
315  { 1, 5, 6, 2, 1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x066, 1011 1011 O { 2, 1, 1, 5, 5, 6, 6, 2
316  { 1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6, -1 }, // 0x76a, 1011 1100 X
317  { 10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0 , -1, -1, -1, -1 }, // 0x663, 1011 1101 O { 1, 0, 0, 9, 9, 5, 5, 6, 6, 10, 10, 1
318  { 0, 3, 8, 5, 6, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x569, 1011 1110 X
319  { 10, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x460, 1011 1111 O { 10, 5, 5, 6, 6, 10
320 
321  { 11, 5, 10, 7, 5, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xca0, 1100 0000 O { 7, 5, 5, 10, 10, 11, 11, 7
322  { 11, 5, 10, 11, 7, 5, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1 }, // 0xda9, 1100 0001 X
323  { 5, 11, 7, 5, 10, 11, 1, 9, 0, -1, -1, -1, -1, -1, -1, -1 }, // 0xea3, 1100 0010 X
324  { 10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1, -1, -1, -1, -1 }, // 0xfaa, 1100 0011 X
325  { 11, 1, 2, 11, 7, 1, 7, 5, 1, -1, -1, -1, -1, -1, -1, -1 }, // 0x8a6, 1100 0100 O { 1, 2, 2, 11, 11, 7, 7, 5, 5, 1
326  { 0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11, -1, -1, -1, -1 }, // 0x9af, 1100 0101 X
327  { 9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7, -1, -1, -1, -1 }, // 0xaa5, 1100 0110 O { 0, 2, 2, 11, 11, 7, 7, 5, 5, 9, 9, 0
328  { 7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2, -1 }, // 0xbac, 1100 0111 X
329  { 2, 5, 10, 2, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1 }, // 0x4ac, 1100 1000 O { 2, 3, 3, 7, 7, 5, 5, 10, 10, 2
330  { 8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5, -1, -1, -1, -1 }, // 0x5a5, 1100 1001 O { 2, 0, 0, 8, 8, 7, 7, 5, 5, 10, 10, 2
331  { 9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2, -1, -1, -1, -1 }, // 0x6af, 1100 1010 X
332  { 9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2, -1 }, // 0x7a6, 1100 1011 X
333  { 1, 3, 5, 3, 7, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x0aa, 1100 1100 O { 1, 3, 3, 7, 7, 5, 5, 1
334  { 0, 8, 7, 0, 7, 1, 1, 7, 5, -1, -1, -1, -1, -1, -1, -1 }, // 0x1a3, 1100 1101 O { 1, 0, 0, 8, 8, 7, 7, 5, 5, 1
335  { 9, 0, 3, 9, 3, 5, 5, 3, 7, -1, -1, -1, -1, -1, -1, -1 }, // 0x2a9, 1100 1110 O { 0, 3, 3, 7, 7, 5, 5, 9, 9, 0
336  { 9, 8, 7, 5, 9, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x3a0, 1100 1111 O { 7, 5, 5, 9, 9, 8, 8, 7
337 
338  { 5, 8, 4, 5, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1 }, // 0xd30, 1101 0000 O { 4, 5, 5, 10, 10, 11, 11, 8, 8, 4
339  { 5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0, -1, -1, -1, -1 }, // 0xc39, 1101 0001 O { 3, 0, 0, 4, 4, 5, 5, 10, 10, 11, 11, 3,
340  { 0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5, -1, -1, -1, -1 }, // 0xf33, 1101 0010 X
341  { 10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4, -1 }, // 0xe3a, 1101 0011 X
342  { 2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8, -1, -1, -1, -1 }, // 0x936, 1101 0100 O { 1, 2, 2, 11, 11, 8, 8, 4, 4, 5, 5, 1
343  { 0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11, -1 }, // 0x83f, 1101 0101 X
344  { 0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5, -1 }, // 0xb35, 1101 0110 X
345  { 9, 4, 5, 2, 11, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xa3c, 1101 0111 X
346  { 2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4, -1, -1, -1, -1 }, // 0x53c, 1101 1000 O { 2, 3, 3, 8, 8, 4, 4, 5, 5, 10, 10, 2
347  { 5, 10, 2, 5, 2, 4, 4, 2, 0, -1, -1, -1, -1, -1, -1, -1 }, // 0x435, 1101 1001 O { 2, 0, 0, 4, 4, 5, 5, 10, 10, 2
348  { 3, 10, 2, 3, 5, 10, 3, 8, 5 , 4, 5, 8, 0, 1, 9, -1 }, // 0x73f, 1101 1010 X
349  { 5, 10, 2, 5, 2 , 4, 1, 9, 2, 9, 4, 2, -1, -1, -1, -1 }, // 0x636, 1101 1011 O { 1, 9, 9, 4, 4, 5, 5, 10, 10, 2, 2, 1
350  { 8, 4, 5, 8, 5, 3, 3, 5, 1, -1, -1, -1, -1, -1, -1, -1 }, // 0x13a, 1101 1100 O { 1, 3, 3, 8, 8, 4, 4, 5, 5, 1
351  { 0, 4, 5, 1, 0, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x033, 1101 1101 O { 1, 0, 0, 4, 4, 5, 5, 1
352  { 8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3 , 5, -1, -1, -1, -1 }, // 0x339, 1101 1110 O { 0, 3, 3, 8, 8, 4, 4, 5, 5, 9, 9, 0
353  { 9, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x230, 1101 1111 O { 9, 4, 4, 5, 5, 9
354 
355  { 4, 11, 7, 4, 9, 11, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1 }, // 0xe90, 1110 0000 O { 7, 4, 4, 9, 9, 10, 10, 11, 11, 7
356  { 0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11, -1, -1, -1, -1 }, // 0xf99, 1110 0001 X
357  { 1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11, -1, -1, -1, -1 }, // 0xc93, 1110 0010 O { 0, 1, 1, 10, 10, 11, 11, 7, 7, 4, 4, 0
358  { 3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4, -1 }, // 0xd9a, 1110 0011 X
359  { 4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2, -1, -1, -1, -1 }, // 0xa96, 1110 0100 O { 1, 2, 2, 11, 11, 7, 7, 4, 4, 9, 9, 1
360  { 9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3, -1 }, // 0xb9f, 1110 0101 X
361  { 11, 7, 4, 11, 4, 2, 2, 4, 0, -1, -1, -1, -1, -1, -1, -1 }, // 0x895, 1110 0110 O { 0, 2, 2, 11, 11, 7, 7, 4, 4, 0
362  { 11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4, -1, -1, -1, -1 }, // 0x99c, 1110 0111 O { 3, 2, 2, 11, 11, 7, 7, 4, 4, 8, 8, 3
363  { 2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9, -1, -1, -1, -1 }, // 0x69c, 1110 1000 O { 2, 3, 3, 7, 7, 4, 4, 9, 9, 10, 10, 2
364  { 9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7, -1 }, // 0x795, 1110 1001 X
365  { 3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10, -1 }, // 0x49f, 1110 1010 X
366  { 1, 10, 2, 8, 7, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x596, 1110 1011 X
367  { 4, 9, 1 , 4, 1, 7, 7, 1, 3, -1, -1, -1, -1, -1, -1, -1 }, // 0x29a, 1110 1100 O { 1, 3, 3, 7, 7, 4, 4, 9, 9, 1
368  { 4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1, -1, -1, -1, -1 }, // 0x393, 1110 1101 O { 1, 0, 0, 8, 8, 7, 7, 4, 4, 9, 9, 1
369  { 4, 0, 3, 7, 4, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x099, 1110 1110 O { 0, 3, 3, 7, 7, 4, 4, 0
370  { 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x190, 1110 1111 O { 4, 8, 8, 7, 7, 4
371 
372  { 9, 10, 8, 10, 11, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xf00, 1111 0000 O { 8, 9, 9, 10, 10, 11, 11, 8
373  { 3, 0, 9, 3, 9, 11, 11, 9, 10, -1, -1, -1, -1, -1, -1, -1 }, // 0xe09, 1111 0001 O { 3, 0, 0, 9, 9, 10, 10, 11, 11, 3
374  { 0, 1, 10, 0, 10, 8, 8, 10, 11, -1, -1, -1, -1, -1, -1, -1 }, // 0xd03, 1111 0010 O { 0, 1, 1, 10, 10, 11, 11, 8, 8, 0
375  { 3, 1, 10, 11, 3, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0xc0a, 1111 0011 O { 3, 1, 1, 10, 10, 11, 11, 3
376  { 1, 2, 11, 1, 11, 9, 9, 11, 8, -1, -1, -1, -1, -1, -1, -1 }, // 0xb06, 1111 0100 O { 1, 2, 2, 11, 11, 8, 8, 9, 9, 1
377  { 3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9, -1, -1, -1, -1 }, // 0xa0f, 1111 0101 O { 0, 9, 9, 1, 1, 2, 2, 11, 11, 3, 3, 0
378  { 0, 2, 11, 8, 0, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x905, 1111 0110 O { 0, 2, 2, 11, 11, 8, 8, 0
379  { 3, 2, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x80c, 1111 0111 O { 3, 2, 2, 11, 11, 3
380  { 2, 3, 8, 2, 8, 10, 10, 8, 9, -1, -1, -1, -1, -1, -1, -1 }, // 0x70c, 1111 1000 O { 2, 3, 3, 8, 8, 9, 9, 10, 10, 2
381  { 9, 10, 2, 0, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x605, 1111 1001 O { 2, 0, 0, 9, 9, 10, 10, 2
382  { 2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8, -1, -1, -1, -1 }, // 0x50f, 1111 1010 O { 0, 1, 1, 10, 10, 2, 2, 3, 3, 8, 8, 0
383  { 1, 10, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x406, 1111 1011 O { 1, 10, 10, 2, 2, 1
384  { 1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x30a, 1111 1100 O { 1, 3, 3, 8, 8, 9, 9, 1
385  { 0, 9, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x203, 1111 1101 O { 0, 9, 9, 1, 1, 0
386  { 0, 3, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }, // 0x109, 1111 1110 O { 0, 3, 3, 8, 8, 0
387  {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 } // 0x000, 1111 1111 X
388 };
389 } // namespace CubbyFlow
390 
391 #endif
Definition: pybind11Utils.hpp:20