[core] Switch back to a more compact line attributes layout (#14851)

* [core] switch back to a more compact line attributes layout

* update mapbox-gl-js to point to master
This commit is contained in:
Vladimir Agafonkin
2019-06-10 22:26:16 +03:00
committed by GitHub
parent 6583204e69
commit 6262b83cc6
13 changed files with 217 additions and 210 deletions

View File

@@ -10,7 +10,7 @@ namespace attributes {
MBGL_DEFINE_ATTRIBUTE(int16_t, 2, pos);
MBGL_DEFINE_ATTRIBUTE(int16_t, 2, extrude);
MBGL_DEFINE_ATTRIBUTE(int16_t, 4, pos_offset);
MBGL_DEFINE_ATTRIBUTE(int16_t, 4, pos_normal);
MBGL_DEFINE_ATTRIBUTE(int16_t, 2, pos_normal);
MBGL_DEFINE_ATTRIBUTE(float, 3, projected_pos);
MBGL_DEFINE_ATTRIBUTE(int16_t, 2, label_pos);
MBGL_DEFINE_ATTRIBUTE(int16_t, 2, anchor_pos);

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<LineProgram> {
static constexpr const char* name = "line";
static constexpr const uint8_t hash[8] = { 0x02, 0xe9, 0x14, 0x54, 0x14, 0xe4, 0xbc, 0x11 };
static constexpr const uint8_t hash[8] = { 0x7f, 0x8e, 0xaa, 0x53, 0x75, 0x78, 0xac, 0x2c };
static constexpr const auto vertexOffset = 30358;
static constexpr const auto fragmentOffset = 33316;
static constexpr const auto fragmentOffset = 33355;
};
constexpr const char* ShaderSource<LineProgram>::name;
@@ -47,7 +47,7 @@ Backend::Create<gfx::Backend::Type::OpenGL>(const ProgramParameters& programPara
// #define scale 63.0
#define scale 0.015873016
attribute vec4 a_pos_normal;
attribute vec2 a_pos_normal;
attribute vec4 a_data;
uniform mat4 u_matrix;
@@ -165,11 +165,13 @@ void main() {
v_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * 2.0;
vec2 pos = a_pos_normal.xy;
vec2 pos = floor(a_pos_normal * 0.5);
// x is 1 if it's a round cap, 0 otherwise
// y is 1 if the normal points up, and -1 if it points down
mediump vec2 normal = a_pos_normal.zw;
// We store these in the least significant bit of a_pos_normal
mediump vec2 normal = a_pos_normal - 2.0 * pos;
normal.y = normal.y * 2.0 - 1.0;
v_normal = normal;
// these transformations used to be applied in the JS and native code bases.

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<LineGradientProgram> {
static constexpr const char* name = "line_gradient";
static constexpr const uint8_t hash[8] = { 0x0f, 0xa3, 0xae, 0x1c, 0x38, 0xf2, 0x60, 0x54 };
static constexpr const auto vertexOffset = 34185;
static constexpr const auto fragmentOffset = 36938;
static constexpr const uint8_t hash[8] = { 0x3f, 0xba, 0xc6, 0x33, 0xcd, 0x86, 0xa2, 0xe8 };
static constexpr const auto vertexOffset = 34224;
static constexpr const auto fragmentOffset = 37016;
};
constexpr const char* ShaderSource<LineGradientProgram>::name;
@@ -51,7 +51,7 @@ Backend::Create<gfx::Backend::Type::OpenGL>(const ProgramParameters& programPara
// #define scale 63.0
#define scale 0.015873016
attribute vec4 a_pos_normal;
attribute vec2 a_pos_normal;
attribute vec4 a_data;
uniform mat4 u_matrix;
@@ -153,11 +153,13 @@ void main() {
v_lineprogress = (floor(a_data.z / 4.0) + a_data.w * 64.0) * 2.0 / MAX_LINE_DISTANCE;
vec2 pos = a_pos_normal.xy;
vec2 pos = floor(a_pos_normal * 0.5);
// x is 1 if it's a round cap, 0 otherwise
// y is 1 if the normal points up, and -1 if it points down
mediump vec2 normal = a_pos_normal.zw;
// We store these in the least significant bit of a_pos_normal
mediump vec2 normal = a_pos_normal - 2.0 * pos;
normal.y = normal.y * 2.0 - 1.0;
v_normal = normal;
// these transformations used to be applied in the JS and native code bases.

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<LinePatternProgram> {
static constexpr const char* name = "line_pattern";
static constexpr const uint8_t hash[8] = { 0x14, 0x72, 0xee, 0xac, 0x1f, 0xc7, 0xf6, 0x82 };
static constexpr const auto vertexOffset = 37768;
static constexpr const auto fragmentOffset = 41123;
static constexpr const uint8_t hash[8] = { 0x38, 0x9c, 0x3d, 0xde, 0xb4, 0xe0, 0xd1, 0x61 };
static constexpr const auto vertexOffset = 37846;
static constexpr const auto fragmentOffset = 41240;
};
constexpr const char* ShaderSource<LinePatternProgram>::name;
@@ -51,7 +51,7 @@ Backend::Create<gfx::Backend::Type::OpenGL>(const ProgramParameters& programPara
// long distances for long segments. Use this value to unscale the distance.
#define LINE_DISTANCE_SCALE 2.0
attribute vec4 a_pos_normal;
attribute vec2 a_pos_normal;
attribute vec4 a_data;
uniform mat4 u_matrix;
@@ -184,11 +184,13 @@ void main() {
float a_direction = mod(a_data.z, 4.0) - 1.0;
float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;
// float tileRatio = u_scale.y;
vec2 pos = a_pos_normal.xy;
vec2 pos = floor(a_pos_normal * 0.5);
// x is 1 if it's a round cap, 0 otherwise
// y is 1 if the normal points up, and -1 if it points down
mediump vec2 normal = a_pos_normal.zw;
// We store these in the least significant bit of a_pos_normal
mediump vec2 normal = a_pos_normal - 2.0 * pos;
normal.y = normal.y * 2.0 - 1.0;
v_normal = normal;
// these transformations used to be applied in the JS and native code bases.

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<LineSDFProgram> {
static constexpr const char* name = "line_sdf";
static constexpr const uint8_t hash[8] = { 0x21, 0x0f, 0x62, 0x9d, 0x31, 0x97, 0xad, 0x16 };
static constexpr const auto vertexOffset = 43478;
static constexpr const auto fragmentOffset = 47126;
static constexpr const uint8_t hash[8] = { 0x25, 0x94, 0x7f, 0xad, 0x84, 0xfe, 0x96, 0xad };
static constexpr const auto vertexOffset = 43595;
static constexpr const auto fragmentOffset = 47282;
};
constexpr const char* ShaderSource<LineSDFProgram>::name;
@@ -51,7 +51,7 @@ Backend::Create<gfx::Backend::Type::OpenGL>(const ProgramParameters& programPara
// long distances for long segments. Use this value to unscale the distance.
#define LINE_DISTANCE_SCALE 2.0
attribute vec4 a_pos_normal;
attribute vec2 a_pos_normal;
attribute vec4 a_data;
uniform mat4 u_matrix;
@@ -190,11 +190,13 @@ void main() {
float a_direction = mod(a_data.z, 4.0) - 1.0;
float a_linesofar = (floor(a_data.z / 4.0) + a_data.w * 64.0) * LINE_DISTANCE_SCALE;
vec2 pos = a_pos_normal.xy;
vec2 pos = floor(a_pos_normal * 0.5);
// x is 1 if it's a round cap, 0 otherwise
// y is 1 if the normal points up, and -1 if it points down
mediump vec2 normal = a_pos_normal.zw;
// We store these in the least significant bit of a_pos_normal
mediump vec2 normal = a_pos_normal - 2.0 * pos;
normal.y = normal.y * 2.0 - 1.0;
v_normal = normal;
// these transformations used to be applied in the JS and native code bases.

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<RasterProgram> {
static constexpr const char* name = "raster";
static constexpr const uint8_t hash[8] = { 0x40, 0x3d, 0x6c, 0xf4, 0xd0, 0x41, 0x51, 0x0e };
static constexpr const auto vertexOffset = 48671;
static constexpr const auto fragmentOffset = 49020;
static constexpr const auto vertexOffset = 48827;
static constexpr const auto fragmentOffset = 49176;
};
constexpr const char* ShaderSource<RasterProgram>::name;

View File

@@ -286,178 +286,179 @@ constexpr const uint8_t compressedShaderSource[] = {
0x25, 0x05, 0x37, 0xd1, 0xa0, 0xcc, 0x50, 0x88, 0xd5, 0x4c, 0x9f, 0xcd, 0xa2, 0x33, 0xc1, 0x95,
0x98, 0xdf, 0x45, 0x20, 0xa2, 0xaa, 0x10, 0x4e, 0x96, 0x89, 0xaf, 0x27, 0x4a, 0x91, 0x43, 0x72,
0x0b, 0x29, 0x2b, 0x4a, 0x15, 0xb7, 0x43, 0xbb, 0x29, 0x7d, 0x3e, 0x4c, 0xb8, 0x89, 0x29, 0x89,
0x94, 0x62, 0xd8, 0xe2, 0xf3, 0x37, 0xaf, 0x4f, 0x3b, 0xdd, 0x57, 0x27, 0xa5, 0x4d, 0x25, 0x50,
0xc9, 0xa9, 0x8f, 0xa4, 0xbc, 0xe1, 0x84, 0x71, 0xed, 0xeb, 0x15, 0xd6, 0x72, 0x24, 0x58, 0xf9,
0x41, 0x2c, 0x26, 0x6d, 0xf4, 0x17, 0xfc, 0x36, 0x7d, 0x57, 0x4b, 0x93, 0x6f, 0x8c, 0x4c, 0x2d,
0x15, 0x23, 0xde, 0xf4, 0x4a, 0xf1, 0x90, 0xc6, 0xe1, 0x74, 0x1a, 0xf2, 0x00, 0x47, 0x86, 0xf0,
0x9e, 0xa0, 0xcf, 0xcf, 0xe2, 0x45, 0x3a, 0x0a, 0xb3, 0x6f, 0x2e, 0x58, 0xcc, 0xf1, 0x01, 0xab,
0x1d, 0xce, 0x92, 0x8e, 0xc3, 0x79, 0xcd, 0x03, 0x50, 0x3c, 0xb7, 0x2e, 0x16, 0x32, 0x87, 0x59,
0x17, 0x0d, 0x59, 0x86, 0xab, 0xeb, 0x32, 0x7c, 0x6f, 0xb5, 0xa2, 0x49, 0x98, 0x57, 0xdd, 0x61,
0x98, 0x5d, 0xdf, 0x29, 0x02, 0xa4, 0x86, 0x84, 0x9a, 0x0e, 0x59, 0xdb, 0x1b, 0x1b, 0x75, 0x85,
0xda, 0x0f, 0xcf, 0x2f, 0xb0, 0xd0, 0x4b, 0x7f, 0x9a, 0x49, 0x30, 0xbd, 0x3a, 0x30, 0x3c, 0xd9,
0x40, 0x08, 0xcf, 0x72, 0xe5, 0x39, 0x51, 0x11, 0xa8, 0xba, 0x40, 0xb3, 0x25, 0xcf, 0xcb, 0x2d,
0xa2, 0x6f, 0x20, 0x1b, 0x7a, 0x04, 0x33, 0xdc, 0x62, 0x2e, 0x18, 0xfb, 0x83, 0x95, 0xde, 0x86,
0xdd, 0xd5, 0x36, 0x54, 0xf5, 0x03, 0xef, 0x84, 0xfa, 0x1e, 0xe0, 0xcd, 0x57, 0xdb, 0x4e, 0xf3,
0xde, 0x7d, 0xfc, 0xfd, 0xe2, 0xdd, 0xaf, 0x17, 0xef, 0x2e, 0x2f, 0x3e, 0xfe, 0x52, 0xfd, 0x24,
0x0d, 0x28, 0xf9, 0x6a, 0xd0, 0xcd, 0x20, 0xe4, 0x0f, 0x29, 0xb4, 0xba, 0xbd, 0x37, 0x24, 0x9b,
0x69, 0x4f, 0x7d, 0xb1, 0x2d, 0x10, 0xd0, 0x70, 0xdf, 0xf4, 0x99, 0x04, 0x0c, 0xe5, 0x08, 0xda,
0x8c, 0x2f, 0x2d, 0x69, 0x81, 0x88, 0xb0, 0x4d, 0x81, 0xc0, 0x5f, 0x60, 0x37, 0xd9, 0xd7, 0xad,
0xf3, 0xea, 0x8c, 0x45, 0x09, 0x2f, 0x7c, 0x82, 0xb2, 0x26, 0x00, 0xde, 0x46, 0x65, 0xb6, 0x8b,
0x8d, 0x4d, 0x09, 0x06, 0x3c, 0x8e, 0xec, 0x37, 0xdb, 0x4e, 0xf3, 0x05, 0x3f, 0xf0, 0x1f, 0xd8,
0x3a, 0x66, 0x11, 0x87, 0x93, 0x11, 0xcd, 0x2c, 0x72, 0xd8, 0xe8, 0x01, 0xf1, 0x0e, 0x1b, 0x40,
0xae, 0xfa, 0x42, 0x3a, 0xc7, 0xd2, 0xb4, 0xf8, 0x2f, 0xa1, 0x2c, 0xcb, 0x7d, 0x8b, 0xa6, 0xac,
0xd0, 0x00, 0xd3, 0xeb, 0x5c, 0x29, 0x2b, 0xea, 0x75, 0xca, 0x58, 0x7a, 0xf8, 0x90, 0x03, 0x68,
0x4f, 0x4d, 0xab, 0xa0, 0x8f, 0x29, 0xf0, 0xf4, 0x95, 0x07, 0xb9, 0x22, 0x5b, 0xed, 0x14, 0xbc,
0x39, 0x49, 0xab, 0x73, 0x8a, 0x88, 0x92, 0x54, 0xe3, 0xd0, 0xe4, 0x20, 0x6a, 0xdb, 0xd2, 0x00,
0x6a, 0xf9, 0x39, 0x8d, 0x31, 0x4d, 0xb4, 0xd6, 0x6b, 0xad, 0x0e, 0xda, 0x2b, 0xbd, 0x80, 0xfe,
0xd5, 0xab, 0x71, 0xf8, 0xe6, 0x16, 0xd1, 0xb8, 0x73, 0x08, 0xef, 0xdc, 0xba, 0x76, 0xaf, 0xe1,
0xdd, 0x73, 0xed, 0xb1, 0x2b, 0xce, 0x58, 0xaa, 0x01, 0x0a, 0xf4, 0x7b, 0x4c, 0x63, 0xe3, 0x7b,
0x79, 0x75, 0x67, 0x2b, 0x8b, 0x37, 0xc2, 0x7b, 0x4a, 0x31, 0xec, 0xbf, 0x52, 0x65, 0xc6, 0x28,
0x8c, 0xf8, 0xda, 0x14, 0xe9, 0x32, 0x39, 0x44, 0x26, 0xbf, 0x7c, 0x4a, 0xaf, 0x90, 0x56, 0x96,
0x32, 0x15, 0x29, 0x55, 0x5a, 0xba, 0x4f, 0xef, 0x94, 0x94, 0x4f, 0xb0, 0xb6, 0x25, 0xdd, 0x30,
0x58, 0x4f, 0xa0, 0xb7, 0x86, 0x1a, 0x9f, 0xeb, 0xa0, 0xd4, 0x85, 0x42, 0x39, 0xc2, 0x45, 0x16,
0x56, 0x2e, 0xec, 0x6c, 0xa9, 0xed, 0x6a, 0x7a, 0xad, 0x59, 0x07, 0x36, 0x69, 0xbb, 0x4f, 0xf3,
0x10, 0xd5, 0x37, 0xf4, 0x40, 0xd4, 0x9e, 0xc3, 0xdf, 0x1d, 0xe6, 0xd9, 0x21, 0xd3, 0xed, 0x6d,
0xca, 0x1c, 0xb6, 0xc3, 0x99, 0xa7, 0xbd, 0xf0, 0x0b, 0x12, 0x7a, 0x01, 0x3e, 0x9a, 0xd3, 0xac,
0x5a, 0x89, 0xa0, 0x98, 0xcc, 0x46, 0xf2, 0xad, 0x6f, 0x6a, 0xe4, 0x4e, 0x49, 0x8f, 0x41, 0x85,
0x2d, 0x4b, 0x54, 0x90, 0xb7, 0x10, 0xb5, 0xed, 0x16, 0x55, 0x62, 0xdc, 0x51, 0xdb, 0xc3, 0xf4,
0x0a, 0x4b, 0x78, 0x0f, 0x71, 0xa6, 0x84, 0xc9, 0xfb, 0xdb, 0xbb, 0x7f, 0xf4, 0x7f, 0xbd, 0xf8,
0xf8, 0xa1, 0xff, 0xfe, 0xe2, 0xf2, 0xf7, 0x77, 0x1f, 0x7f, 0xfa, 0xd0, 0x38, 0xed, 0xbd, 0x7e,
0xf5, 0xba, 0xdd, 0x79, 0x36, 0x46, 0xf1, 0xa6, 0xaf, 0x49, 0x57, 0x18, 0xcf, 0xfb, 0x37, 0x8a,
0x89, 0x58, 0x1d, 0x67, 0xf1, 0xa2, 0x32, 0xea, 0xc7, 0xd1, 0xfc, 0x3c, 0x9a, 0x9f, 0x2f, 0xd5,
0xfc, 0x3c, 0x1a, 0x84, 0x47, 0x83, 0xf0, 0x85, 0x19, 0x84, 0x5c, 0x9c, 0x6f, 0x6a, 0x13, 0x7a,
0xa5, 0x25, 0xf4, 0x68, 0x25, 0x1e, 0xad, 0xc4, 0xa3, 0x95, 0xf8, 0x3c, 0xac, 0xc4, 0x8d, 0x77,
0x83, 0x77, 0xb6, 0x1f, 0x1f, 0xa8, 0x18, 0xbe, 0x18, 0x1b, 0xf0, 0x68, 0xc7, 0x19, 0xec, 0xb8,
0x8a, 0x97, 0xc6, 0xd8, 0x16, 0x3e, 0x70, 0xb6, 0xca, 0x2a, 0xd5, 0x2f, 0x8e, 0xed, 0xc7, 0xfc,
0x2b, 0x1b, 0x77, 0x3c, 0x47, 0x59, 0xd1, 0xfa, 0x97, 0x3f, 0xbd, 0xfb, 0xf5, 0x03, 0x88, 0xf6,
0x47, 0x37, 0xfe, 0xd6, 0xec, 0x79, 0x3e, 0xcc, 0x36, 0x7c, 0x88, 0xf1, 0x57, 0xec, 0x77, 0xee,
0xe0, 0x3d, 0x3a, 0xda, 0x7c, 0x3b, 0xd8, 0x7c, 0xcf, 0xc0, 0xc4, 0x7a, 0x76, 0x66, 0xe7, 0x81,
0x6d, 0xbe, 0xe3, 0xb5, 0xcd, 0x67, 0x74, 0x6d, 0xf3, 0x85, 0xdb, 0xd6, 0x4f, 0x6b, 0xcb, 0x3e,
0x37, 0xcb, 0xfe, 0x50, 0xb6, 0xf5, 0x7f, 0xc2, 0x45, 0xda, 0x27, 0xf2, 0x1f, 0x70, 0xb8, 0xed,
0xb6, 0x95, 0x0d, 0x8a, 0xd6, 0xd1, 0x81, 0x70, 0x74, 0x20, 0x1c, 0x1d, 0x08, 0x0f, 0x76, 0x20,
0x14, 0xf3, 0x30, 0x94, 0xb5, 0xf9, 0xc7, 0x75, 0x2c, 0x6c, 0x73, 0x1b, 0x54, 0x11, 0x62, 0x7a,
0x98, 0x95, 0xb5, 0x1e, 0x8a, 0xc3, 0x59, 0x2f, 0x2f, 0xe5, 0x32, 0xe6, 0x7f, 0x82, 0xdb, 0xe5,
0x19, 0xdd, 0xea, 0x7c, 0x42, 0xb7, 0xd0, 0x31, 0x6c, 0xf1, 0xcb, 0x7a, 0xcc, 0x44, 0xee, 0x6a,
0xb9, 0x7d, 0x6a, 0x9b, 0xdb, 0x4b, 0x47, 0xf4, 0x9a, 0xa7, 0x06, 0x00, 0xd6, 0x00, 0x57, 0x26,
0x9c, 0x91, 0x01, 0x27, 0xa1, 0xda, 0x61, 0xfd, 0x5d, 0x87, 0x11, 0x28, 0xf6, 0xbf, 0x31, 0x5f,
0x24, 0xc5, 0xb6, 0x24, 0x5d, 0x49, 0x6f, 0x17, 0x8b, 0x25, 0xc2, 0x53, 0x7b, 0xba, 0xbd, 0x54,
0xe1, 0xa3, 0x7a, 0xf8, 0x48, 0x85, 0x5f, 0xf5, 0xf1, 0x21, 0xe4, 0xa6, 0xe8, 0x0b, 0xa2, 0x07,
0xb1, 0x7b, 0x6b, 0x82, 0x3e, 0xa4, 0xc9, 0xd2, 0x6a, 0x5d, 0x35, 0x7b, 0xec, 0x31, 0x17, 0x5b,
0x27, 0x68, 0x55, 0x20, 0x8f, 0x76, 0x41, 0x1e, 0x55, 0x23, 0x8f, 0x0a, 0xd6, 0xc0, 0xf0, 0x23,
0xdb, 0xdf, 0xf5, 0x46, 0x1e, 0x22, 0xbd, 0xea, 0x92, 0x96, 0xdb, 0x12, 0xae, 0x68, 0x87, 0x9b,
0xda, 0x0c, 0x57, 0x44, 0x70, 0x45, 0xb6, 0xe2, 0x3d, 0x06, 0x5c, 0xc6, 0xdb, 0xda, 0xa4, 0x52,
0xd7, 0x9c, 0x11, 0xd9, 0xe6, 0x5b, 0xda, 0xd4, 0x9f, 0xfc, 0x88, 0xaf, 0x4a, 0x3c, 0x23, 0x6f,
0xf2, 0xa3, 0x1e, 0x25, 0x62, 0x83, 0x44, 0x5f, 0xa1, 0x0e, 0x4b, 0xaa, 0x1d, 0xe9, 0xf5, 0xfe,
0x4a, 0x4a, 0x37, 0x95, 0x8a, 0x2a, 0x4a, 0x45, 0xfb, 0x38, 0xb6, 0xc4, 0x52, 0xa1, 0x86, 0xd0,
0x94, 0x18, 0xed, 0x7e, 0x0e, 0xf2, 0x78, 0xab, 0xe7, 0x78, 0xac, 0xea, 0x78, 0xac, 0xaa, 0xca,
0xc5, 0xce, 0x87, 0xcc, 0xe0, 0x7f, 0x7b, 0x0c, 0xf7, 0x3b, 0x3a, 0x91, 0x6a, 0xa8, 0x2c, 0xf2,
0x2b, 0xfb, 0xaa, 0x00, 0x31, 0xf1, 0x97, 0x94, 0x5b, 0xd7, 0x9b, 0x2a, 0xd8, 0xf1, 0x8a, 0xd2,
0xf1, 0x44, 0xda, 0x33, 0x39, 0x91, 0x76, 0x38, 0x3f, 0xb9, 0x34, 0x15, 0x8b, 0x9f, 0x86, 0x9a,
0x8b, 0x4c, 0x57, 0x9d, 0x9f, 0xa6, 0x26, 0xcb, 0x98, 0x4c, 0x93, 0xec, 0xe8, 0xce, 0x3e, 0xba,
0xb3, 0x8f, 0xee, 0xec, 0xff, 0x78, 0x77, 0x36, 0xea, 0xf5, 0x01, 0x13, 0x30, 0x62, 0x52, 0x3a,
0xba, 0x9d, 0xd2, 0x5e, 0x7a, 0x92, 0xf4, 0x11, 0x83, 0x57, 0x02, 0x5b, 0x35, 0x85, 0x09, 0x63,
0x33, 0xec, 0xd1, 0x5a, 0xec, 0xd1, 0x66, 0xd8, 0x23, 0x09, 0x3b, 0x84, 0x1c, 0xdb, 0xf7, 0x59,
0x3e, 0xdd, 0xc8, 0x5a, 0x0c, 0x47, 0xd8, 0xfd, 0xe5, 0x98, 0x54, 0xc4, 0x56, 0x7c, 0x66, 0xa6,
0xd5, 0xf1, 0x8a, 0x59, 0xfd, 0xe2, 0x7e, 0x38, 0xe5, 0x7a, 0xbf, 0x9a, 0xf1, 0xb7, 0x78, 0x6b,
0xce, 0x88, 0xa1, 0xe6, 0xa4, 0x42, 0xb9, 0xc7, 0x6b, 0x3b, 0x7c, 0x6b, 0x1d, 0xe8, 0x1b, 0xf3,
0xb5, 0x12, 0x31, 0x04, 0xb9, 0xfd, 0xd0, 0x18, 0xbf, 0x09, 0x85, 0x89, 0xdd, 0x0e, 0x35, 0xe0,
0xa8, 0x12, 0x38, 0x2a, 0x01, 0xa3, 0x5b, 0x50, 0xd4, 0xe2, 0x0a, 0x14, 0x2e, 0x4a, 0x3a, 0xdb,
0xa7, 0x4e, 0xbe, 0x40, 0x79, 0x81, 0xf6, 0xbc, 0x55, 0xc8, 0x47, 0x59, 0x96, 0xd3, 0x28, 0xc1,
0xa6, 0x1c, 0x86, 0x76, 0xff, 0xc7, 0x52, 0x37, 0x3a, 0x29, 0x9a, 0x4f, 0xc8, 0x5a, 0x93, 0xc9,
0xcf, 0x4f, 0x08, 0xa9, 0x8f, 0x6b, 0x4f, 0x45, 0x66, 0x74, 0x3d, 0x1a, 0xc5, 0x59, 0xdd, 0xd3,
0xb4, 0x5b, 0x06, 0x2e, 0xeb, 0x18, 0xd2, 0xba, 0xbb, 0x46, 0x33, 0xeb, 0x04, 0x96, 0x65, 0x8e,
0xf6, 0xd8, 0x82, 0x13, 0xc1, 0x9e, 0x4a, 0x7f, 0xc3, 0x86, 0xb8, 0x4c, 0xb4, 0x64, 0x37, 0xa0,
0xc1, 0xef, 0xe0, 0x09, 0x74, 0xb9, 0x03, 0x20, 0x60, 0x57, 0xd1, 0x55, 0x52, 0xe7, 0xca, 0x3b,
0xd3, 0xfd, 0x72, 0x3f, 0xe9, 0xcf, 0x77, 0x94, 0x16, 0xdb, 0x4e, 0x75, 0x56, 0x77, 0xe3, 0x6e,
0x2a, 0x8d, 0x4e, 0x06, 0x51, 0xa3, 0x88, 0xd2, 0xb1, 0x80, 0x30, 0xdb, 0x75, 0xd9, 0x20, 0x2e,
0xcb, 0x23, 0x1f, 0x92, 0x6e, 0xc3, 0x00, 0x7a, 0xfa, 0x8b, 0x26, 0x85, 0xaf, 0x72, 0x96, 0x67,
0xe1, 0xc2, 0xf4, 0xe2, 0x09, 0x3c, 0x3f, 0xb2, 0x98, 0x27, 0xb3, 0xfe, 0x2d, 0x06, 0xd1, 0xd5,
0x22, 0xd2, 0x15, 0x82, 0xb9, 0x53, 0x9e, 0x98, 0x1d, 0x1a, 0x86, 0xad, 0xb3, 0x26, 0xca, 0x6b,
0x97, 0x82, 0x75, 0x69, 0x88, 0x6d, 0x8a, 0xac, 0x1d, 0x52, 0x0b, 0x81, 0x54, 0xc1, 0x12, 0xb2,
0x71, 0x14, 0x14, 0x3f, 0x3d, 0x0e, 0xe6, 0xdf, 0x8b, 0x42, 0x5d, 0xbd, 0x50, 0xb7, 0x28, 0xd4,
0x2d, 0x0a, 0x75, 0xa1, 0x90, 0xb6, 0x77, 0x40, 0xb1, 0xb9, 0x2c, 0x88, 0x2b, 0x1f, 0x7d, 0xf6,
0xb2, 0x52, 0x3b, 0x94, 0x43, 0x5d, 0x63, 0x97, 0x08, 0xbc, 0x80, 0xd6, 0x87, 0x2f, 0x0c, 0x91,
0x0d, 0xe1, 0xc9, 0xc9, 0x87, 0xab, 0xf6, 0x18, 0x84, 0xed, 0xb7, 0xdd, 0x8a, 0xbc, 0xbb, 0xe5,
0xaa, 0x32, 0x6f, 0x75, 0xb7, 0x14, 0x91, 0xe4, 0xc2, 0x9b, 0x98, 0x48, 0x87, 0x38, 0xe0, 0xcf,
0x10, 0xf1, 0xb7, 0xa5, 0xf8, 0xa3, 0x52, 0xb6, 0x77, 0x0a, 0x81, 0x3f, 0x21, 0xec, 0xb7, 0xc5,
0x60, 0x5b, 0xe4, 0x0b, 0x02, 0x9e, 0x95, 0x87, 0x1f, 0x08, 0x86, 0x0a, 0x71, 0xf6, 0x38, 0xa5,
0xe1, 0xa7, 0xd3, 0x87, 0x0e, 0x3d, 0x30, 0x14, 0x98, 0xed, 0xb4, 0x81, 0x3a, 0x2b, 0xba, 0x6b,
0x13, 0x6c, 0x8e, 0x88, 0xfc, 0xae, 0xc0, 0x03, 0x55, 0xb8, 0x1b, 0xa4, 0x68, 0x12, 0x16, 0x25,
0x05, 0x8d, 0xb0, 0xc6, 0x89, 0x74, 0x45, 0x35, 0x2e, 0xb6, 0x9d, 0x0d, 0x9f, 0xcb, 0x83, 0xa2,
0x3d, 0x4c, 0xfe, 0x92, 0x5e, 0x5a, 0xe4, 0x6c, 0xca, 0x7c, 0xbe, 0x08, 0x4a, 0xe1, 0x09, 0x7d,
0xe3, 0x76, 0x0d, 0x33, 0xaa, 0xcd, 0xdb, 0x35, 0x4a, 0xea, 0x29, 0x94, 0x10, 0xe6, 0x94, 0x2a,
0x73, 0xb9, 0xb7, 0x01, 0x19, 0x53, 0x17, 0x42, 0x51, 0x9a, 0x4e, 0x40, 0xc8, 0x2c, 0xe8, 0xa6,
0x1d, 0x84, 0xc6, 0xec, 0x23, 0xb1, 0xa1, 0x24, 0xe9, 0x35, 0xa0, 0x51, 0x1c, 0xa2, 0x2c, 0x2d,
0xc1, 0xa9, 0xcf, 0xf0, 0x21, 0x6c, 0x5d, 0x66, 0x45, 0xd6, 0x20, 0x9c, 0x12, 0x1e, 0x04, 0x93,
0x0f, 0xc2, 0xd4, 0x11, 0xc9, 0xcc, 0x1f, 0x37, 0xa8, 0x80, 0x9f, 0x27, 0xf9, 0xe0, 0x4a, 0xa7,
0x35, 0x4b, 0xf3, 0x30, 0x8f, 0xfb, 0x8b, 0xd5, 0x34, 0x4a, 0x27, 0x15, 0x05, 0x69, 0x50, 0x3e,
0xcd, 0x04, 0x52, 0x84, 0xf8, 0xe0, 0x4a, 0x89, 0x59, 0x59, 0xb1, 0x33, 0x46, 0x53, 0x27, 0x61,
0x44, 0x34, 0xa0, 0xf9, 0x24, 0x9c, 0xc5, 0x15, 0x10, 0x34, 0x50, 0xb4, 0x96, 0x57, 0xf4, 0x2d,
0x08, 0x37, 0x3d, 0x19, 0xdb, 0x46, 0x4d, 0xd6, 0x69, 0x38, 0xaf, 0x3a, 0x1a, 0x55, 0x36, 0x9b,
0x4a, 0x46, 0x93, 0x32, 0xf8, 0xdf, 0xc0, 0x26, 0xcb, 0x33, 0x79, 0x98, 0xbc, 0x50, 0x62, 0x02,
0x79, 0x4a, 0x8a, 0x43, 0x2b, 0xdc, 0xf5, 0xaa, 0xe6, 0xf2, 0x23, 0x2f, 0xa8, 0x76, 0x14, 0x5e,
0x42, 0x9e, 0x08, 0x63, 0xc6, 0x53, 0x09, 0xa8, 0xcc, 0x94, 0x8b, 0x78, 0x3c, 0x85, 0xd8, 0x8c,
0x84, 0xed, 0x26, 0x71, 0xd0, 0xd2, 0x26, 0xf5, 0x9f, 0xbd, 0xaf, 0x5c, 0x4b, 0x85, 0x61, 0x87,
0xd5, 0xeb, 0xbb, 0x8a, 0xb9, 0x0b, 0x2f, 0x87, 0x7c, 0x57, 0x3d, 0x65, 0x49, 0xa7, 0x22, 0x15,
0x20, 0x03, 0x29, 0x41, 0x7f, 0x76, 0xbe, 0xba, 0xec, 0x57, 0xf7, 0xab, 0xcb, 0x67, 0xaf, 0xed,
0x61, 0x98, 0x67, 0xff, 0xbe, 0x01, 0x7d, 0xd6, 0x80, 0x1a, 0x1f, 0x56, 0xa1, 0xa8, 0xac, 0x8c,
0xb8, 0xae, 0x29, 0xeb, 0x11, 0x33, 0x91, 0xc2, 0xf0, 0xa9, 0x69, 0xaa, 0x3f, 0xed, 0x73, 0x9a,
0xcc, 0xf2, 0x75, 0x11, 0xc7, 0x59, 0xe0, 0x68, 0x21, 0x8a, 0x88, 0xfc, 0xb9, 0x4a, 0x0b, 0x51,
0x14, 0xa8, 0xd8, 0xda, 0xea, 0x28, 0x72, 0x28, 0x2a, 0x5a, 0x02, 0x7d, 0x1a, 0x37, 0x7e, 0x3c,
0xa9, 0x44, 0xec, 0xd5, 0xc8, 0xbf, 0xc6, 0x0f, 0x27, 0x35, 0xb9, 0x5e, 0x25, 0x4e, 0x85, 0x36,
0xc9, 0xf3, 0xc5, 0xc8, 0xa3, 0x36, 0x19, 0x18, 0x29, 0xe0, 0xe6, 0x54, 0x69, 0x47, 0xbb, 0x0b,
0xbc, 0xcf, 0x3e, 0xf4, 0xa4, 0x13, 0x94, 0x4a, 0xf3, 0x23, 0x56, 0x44, 0x0b, 0xe0, 0x47, 0xa9,
0x98, 0x28, 0x6b, 0xfc, 0x88, 0x5c, 0xea, 0xf5, 0xce, 0xd0, 0x13, 0x8b, 0x23, 0xa1, 0xb0, 0x3a,
0x8a, 0x66, 0x2a, 0xa8, 0x41, 0x8d, 0x27, 0x35, 0xf9, 0x94, 0xbf, 0x14, 0xd9, 0xcd, 0x15, 0x45,
0x3a, 0xb5, 0x3e, 0xaf, 0x1d, 0x44, 0x1a, 0xaa, 0xba, 0x8b, 0x11, 0xb4, 0xc5, 0x4b, 0x3b, 0xa1,
0x3e, 0x5e, 0xcb, 0x95, 0x57, 0x1a, 0x41, 0x84, 0x8c, 0x02, 0x53, 0x45, 0x00, 0x6f, 0x4c, 0xbf,
0xf5, 0xf5, 0x66, 0x60, 0xb8, 0x5d, 0x0b, 0x8e, 0x61, 0xe1, 0x59, 0x2f, 0x75, 0x95, 0x71, 0xe1,
0x24, 0x17, 0x1c, 0x17, 0xf3, 0xef, 0xe5, 0xae, 0xc0, 0xd9, 0x4e, 0x78, 0x75, 0x16, 0x60, 0x54,
0x57, 0x59, 0x06, 0x34, 0x35, 0xfc, 0x2a, 0x7f, 0xd2, 0x82, 0x03, 0x22, 0x9d, 0x30, 0x96, 0x6d,
0x7d, 0x41, 0x70, 0x32, 0x37, 0xf8, 0x27, 0xeb, 0xb8, 0x00, 0x3d, 0xcf, 0x02, 0x8d, 0x8b, 0xbe,
0x7c, 0x41, 0x8e, 0xab, 0xff, 0x1a, 0xb0, 0xc0, 0xc8, 0xb2, 0x77, 0x1a, 0x64, 0xa3, 0x69, 0xf5,
0x13, 0x63, 0x22, 0x43, 0x92, 0x8e, 0x54, 0x42, 0xf1, 0x48, 0x46, 0x9c, 0xbc, 0x3a, 0x32, 0x8f,
0xb5, 0x56, 0xd2, 0x53, 0x13, 0x6e, 0x9b, 0x5a, 0x63, 0x1c, 0xb1, 0x13, 0xe6, 0x9d, 0x42, 0x64,
0x63, 0xc1, 0x94, 0x52, 0xac, 0xee, 0x1b, 0x26, 0x92, 0xc9, 0xbf, 0x9e, 0xb4, 0x80, 0xc2, 0xd0,
0xcb, 0x4b, 0x24, 0x5f, 0x4b, 0xd8, 0xa7, 0xa5, 0x6a, 0x4f, 0x22, 0x92, 0x7b, 0xa1, 0x23, 0x04,
0x72, 0x3e, 0x91, 0xa0, 0x68, 0x4d, 0x40, 0xcc, 0x62, 0x45, 0x93, 0x68, 0xfc, 0xd0, 0x52, 0x35,
0x0b, 0x75, 0x61, 0x16, 0xaf, 0x50, 0x81, 0x83, 0x04, 0xe2, 0x8c, 0x2b, 0x48, 0x3b, 0x5f, 0x9b,
0x52, 0x51, 0xdb, 0xae, 0x0a, 0xc9, 0xcd, 0x8c, 0xa4, 0xc7, 0xd6, 0x0a, 0x0e, 0x77, 0xf0, 0x76,
0x2b, 0x47, 0x9a, 0x04, 0x44, 0x5d, 0x4c, 0x0c, 0xc0, 0xd1, 0x5a, 0xa7, 0xe8, 0xe8, 0xb2, 0x1d,
0xc9, 0x7e, 0x53, 0x4f, 0x90, 0x4d, 0x4f, 0x6f, 0x1d, 0x95, 0xfd, 0xfd, 0x29, 0xfb, 0xcf, 0x46,
0x89, 0xde, 0xa7, 0x15, 0xb1, 0xad, 0x45, 0x53, 0x67, 0x75, 0xd4, 0x2b, 0xfb, 0xc0, 0x1e, 0x8a,
0x27, 0xe8, 0x94, 0x25, 0x76, 0xab, 0x26, 0xf4, 0x28, 0x99, 0x4c, 0xea, 0x0e, 0x9f, 0x15, 0xf9,
0xd5, 0x27, 0xd0, 0x0a, 0x18, 0xd3, 0x31, 0x34, 0x29, 0xb7, 0x6e, 0xab, 0x45, 0x05, 0xab, 0x7b,
0x24, 0x2b, 0x9c, 0xa4, 0x75, 0x14, 0x17, 0xf9, 0xd5, 0x14, 0x17, 0x30, 0x26, 0x8a, 0xa5, 0xdc,
0x3a, 0x8a, 0x55, 0xb0, 0x6f, 0xfa, 0xbc, 0x1a, 0x36, 0xa5, 0xe6, 0xe8, 0x53, 0x91, 0x5f, 0xfd,
0xaa, 0xad, 0x00, 0x31, 0xbe, 0x6c, 0x5b, 0xe4, 0xd6, 0xbe, 0x61, 0xa6, 0x80, 0xad, 0x23, 0xb8,
0xfa, 0x68, 0xa2, 0xc8, 0xae, 0x27, 0xb7, 0xea, 0x90, 0x62, 0x91, 0xb9, 0x96, 0x58, 0x65, 0x27,
0x68, 0x13, 0x3b, 0x55, 0x9a, 0x70, 0xc5, 0x4f, 0xd3, 0x81, 0xad, 0x22, 0xd7, 0x55, 0xa7, 0xa1,
0xe9, 0xe8, 0x96, 0x8c, 0x6a, 0xa7, 0xa9, 0x54, 0xfc, 0x34, 0xd1, 0x52, 0xe4, 0xba, 0xea, 0x04,
0x33, 0xd1, 0x22, 0xa3, 0xda, 0x7e, 0x92, 0x1c, 0xfc, 0xa4, 0x97, 0xc4, 0xfb, 0xc5, 0x4f, 0xd3,
0xbb, 0xba, 0x22, 0xd3, 0x55, 0x27, 0x84, 0xf1, 0x7d, 0x5d, 0x09, 0xd3, 0x2e, 0x5c, 0x2d, 0x7e,
0x55, 0x11, 0xc2, 0xce, 0xd8, 0x49, 0x8c, 0x5e, 0x49, 0x06, 0xdb, 0xb3, 0x34, 0xb0, 0xeb, 0xd1,
0x9f, 0x71, 0xf4, 0x67, 0x1c, 0xfd, 0x19, 0x47, 0x7f, 0xc6, 0xd1, 0x9f, 0xf1, 0x32, 0xfc, 0x19,
0xfc, 0x70, 0x71, 0x71, 0x22, 0x4e, 0x39, 0x40, 0x47, 0x99, 0xe0, 0x59, 0xb9, 0x3c, 0x8a, 0x37,
0xa5, 0xb2, 0x79, 0x3a, 0x09, 0xa1, 0xf5, 0x0f, 0xf0, 0x81, 0x30, 0x03, 0x88, 0x9e, 0x7f, 0x23,
0x6d, 0x6b, 0x2f, 0xe1, 0xce, 0x16, 0x5e, 0x3d, 0xa3, 0x56, 0x10, 0xdd, 0x34, 0x94, 0x3a, 0xc8,
0xa5, 0x2f, 0x77, 0x56, 0xd5, 0x8f, 0x6e, 0x15, 0x7e, 0xb9, 0xea, 0xf2, 0xfd, 0xcf, 0xfd, 0xcf,
0xff, 0x68, 0xbc, 0x69, 0x77, 0x4e, 0xca, 0xa6, 0x26, 0xac, 0xae, 0x7e, 0x9d, 0x03, 0xc6, 0x6c,
0x0c, 0xca, 0x47, 0x63, 0xb6, 0x3d, 0x9f, 0xa7, 0xd9, 0xb9, 0x8f, 0x69, 0x0a, 0x1e, 0xd6, 0x8c,
0x3b, 0xa0, 0x09, 0x76, 0x28, 0x2b, 0xea, 0xa0, 0x26, 0xd0, 0x3e, 0x2d, 0x98, 0x5a, 0x36, 0xd9,
0xce, 0x00, 0xa9, 0xb7, 0x3f, 0xb6, 0xb2, 0x1f, 0xf6, 0x71, 0xde, 0x4e, 0x1a, 0xbd, 0xed, 0x14,
0xf9, 0xba, 0xa1, 0xd9, 0x58, 0x17, 0xa7, 0x30, 0x1f, 0xde, 0xff, 0xf2, 0xa1, 0xff, 0xcb, 0xbb,
0xdf, 0x7e, 0x7b, 0x47, 0x34, 0x86, 0x6e, 0xe7, 0xdc, 0x33, 0x87, 0xdb, 0xe3, 0x62, 0x9c, 0xcd,
0x72, 0xd0, 0xbe, 0xcb, 0xa2, 0x9f, 0xcd, 0x76, 0x71, 0x2d, 0x1e, 0x95, 0x46, 0x9e, 0xb8, 0x92,
0x25, 0x38, 0xef, 0x28, 0x96, 0x59, 0x28, 0xe2, 0x1b, 0x2a, 0x3e, 0x45, 0x78, 0x08, 0x3a, 0x6a,
0xd2, 0xf0, 0xcb, 0xd2, 0x0e, 0x89, 0x0b, 0x8a, 0x26, 0x7a, 0x96, 0xc0, 0xef, 0x28, 0x92, 0xd0,
0xf6, 0xe5, 0x13, 0x97, 0xd7, 0xa3, 0x51, 0x60, 0xa1, 0x3e, 0xdd, 0xc2, 0xab, 0x0f, 0x4c, 0xb7,
0x16, 0xda, 0x3a, 0xf4, 0x25, 0x3f, 0xa8, 0x13, 0x48, 0xec, 0x42, 0xab, 0xb3, 0x44, 0x57, 0x3b,
0xdd, 0x76, 0xf7, 0xad, 0x47, 0x85, 0x78, 0xb3, 0xa0, 0xc2, 0xae, 0x21, 0x83, 0xd6, 0x0d, 0x35,
0x17, 0x23, 0xef, 0x15, 0x0b, 0x2f, 0x43, 0xe6, 0xdf, 0x4b, 0xe4, 0xe2, 0x71, 0x41, 0x93, 0x47,
0x19, 0xfc, 0xc9, 0xed, 0xb0, 0xdc, 0x21, 0xb4, 0xae, 0x61, 0x80, 0x1f, 0x8e, 0xbc, 0x1e, 0x28,
0xba, 0x10, 0x7a, 0xb3, 0xa5, 0x03, 0x86, 0x40, 0x5a, 0x4b, 0x46, 0xe0, 0x42, 0x4a, 0x53, 0x49,
0xd9, 0xf0, 0x34, 0xa1, 0xa3, 0xae, 0x78, 0x0f, 0xf2, 0x76, 0xff, 0x3f, 0x5e, 0x36, 0x53, 0x8c
0x94, 0x62, 0xd8, 0xe2, 0xf3, 0x37, 0xaf, 0x4f, 0x3b, 0xdd, 0x57, 0x27, 0x26, 0x09, 0xc7, 0x7c,
0x91, 0xe5, 0x0d, 0x27, 0x8c, 0x6b, 0x5f, 0xaf, 0xb0, 0x96, 0x23, 0xc1, 0xca, 0x0f, 0x62, 0x31,
0x69, 0xa3, 0xbf, 0xe0, 0xb7, 0xe9, 0xbb, 0x5a, 0x9a, 0x7c, 0x63, 0x64, 0x6a, 0xa9, 0x18, 0xf1,
0xa6, 0x57, 0x8a, 0x87, 0x34, 0x0e, 0xa7, 0xd3, 0x90, 0x07, 0x38, 0x32, 0x84, 0xf7, 0x04, 0x7d,
0x7e, 0x16, 0x2f, 0xd2, 0x51, 0x98, 0x7d, 0x73, 0xc1, 0x62, 0x8e, 0x0f, 0x58, 0xed, 0x70, 0x96,
0x74, 0x1c, 0xce, 0x6b, 0x1e, 0x80, 0xe2, 0xb9, 0x75, 0xb1, 0x90, 0x39, 0xcc, 0xba, 0x68, 0xc8,
0x32, 0x5c, 0x5d, 0x97, 0xe1, 0x7b, 0xab, 0x15, 0x4d, 0xc2, 0xbc, 0xea, 0x0e, 0xc3, 0xec, 0xfa,
0x4e, 0x11, 0x20, 0x35, 0x24, 0xd4, 0x74, 0xc8, 0xda, 0xde, 0xd8, 0xa8, 0x2b, 0xd4, 0x7e, 0x78,
0x7e, 0x81, 0x85, 0x5e, 0xfa, 0xd3, 0x4c, 0x82, 0xe9, 0xd5, 0x81, 0xe1, 0xc9, 0x06, 0x42, 0x78,
0x96, 0x2b, 0xcf, 0x89, 0x8a, 0x40, 0xd5, 0x05, 0x9a, 0x2d, 0x79, 0x5e, 0x6e, 0x11, 0x7d, 0x03,
0xd9, 0xd0, 0x23, 0x98, 0xe1, 0x16, 0x73, 0xc1, 0xd8, 0x1f, 0xac, 0xf4, 0x36, 0xec, 0xae, 0xb6,
0xa1, 0xaa, 0x1f, 0x78, 0x27, 0xd4, 0xf7, 0x00, 0x6f, 0xbe, 0xda, 0x76, 0x9a, 0xf7, 0xee, 0xe3,
0xef, 0x17, 0xef, 0x7e, 0xbd, 0x78, 0x77, 0x79, 0xf1, 0xf1, 0x97, 0xea, 0x27, 0x69, 0x40, 0xc9,
0x57, 0x83, 0x6e, 0x06, 0x21, 0x7f, 0x48, 0xa1, 0xd5, 0xed, 0xbd, 0x21, 0xd9, 0x4c, 0x7b, 0xea,
0x8b, 0x6d, 0x81, 0x80, 0x86, 0xfb, 0xa6, 0xcf, 0x24, 0x60, 0x28, 0x47, 0xd0, 0x66, 0x7c, 0x69,
0x49, 0x0b, 0x44, 0x84, 0x6d, 0x0a, 0x04, 0xfe, 0x02, 0xbb, 0xc9, 0xbe, 0x6e, 0x9d, 0x57, 0x67,
0x2c, 0x4a, 0x78, 0xe1, 0x13, 0x94, 0x22, 0x72, 0xb3, 0x85, 0x96, 0xbe, 0xe7, 0xa4, 0xcc, 0x7a,
0xb1, 0xc1, 0x59, 0x40, 0x61, 0x50, 0x71, 0xb0, 0x3c, 0xc4, 0x0e, 0x1a, 0xff, 0xc1, 0xa3, 0x90,
0xfb, 0x7c, 0xe5, 0x66, 0x39, 0xbe, 0x60, 0x1b, 0xfe, 0x03, 0x3b, 0x81, 0x19, 0xce, 0xe1, 0x64,
0x44, 0x33, 0x8b, 0x1c, 0x36, 0xc8, 0x80, 0xcb, 0x61, 0xe3, 0xcc, 0x35, 0x64, 0x48, 0xe7, 0x58,
0x9a, 0x16, 0xff, 0x25, 0x74, 0x6a, 0x79, 0x08, 0xd0, 0xe2, 0x15, 0x8a, 0x62, 0x7a, 0x9d, 0x2b,
0x65, 0x45, 0xbd, 0x4e, 0x19, 0x4b, 0x0f, 0xdf, 0x7b, 0x00, 0x25, 0xab, 0x69, 0x15, 0xf4, 0x31,
0x3d, 0x9f, 0x3e, 0x06, 0x21, 0x57, 0xa4, 0xf5, 0x19, 0x5e, 0xb0, 0xa4, 0xd5, 0x39, 0x45, 0xe0,
0x49, 0xaa, 0x98, 0x68, 0xe2, 0x12, 0x95, 0x72, 0x69, 0x9c, 0xb5, 0xfc, 0x9c, 0x86, 0xa2, 0x26,
0xca, 0xed, 0xb5, 0x56, 0x07, 0xed, 0x95, 0x5e, 0x40, 0xff, 0xea, 0xd5, 0x38, 0x62, 0x44, 0x88,
0xf2, 0x06, 0x51, 0xa0, 0x5b, 0xd7, 0xee, 0x35, 0x3c, 0x8f, 0xae, 0xbd, 0x89, 0xc5, 0xf9, 0x4f,
0xb5, 0x53, 0x81, 0x7e, 0x8f, 0x29, 0x76, 0x7c, 0xcb, 0xaf, 0xee, 0x08, 0x66, 0xf1, 0x94, 0x78,
0x4f, 0x29, 0x86, 0xfd, 0x57, 0xaa, 0xcc, 0x18, 0xac, 0x11, 0x1f, 0xa5, 0x22, 0x5d, 0x26, 0x47,
0xd2, 0xe4, 0x77, 0x54, 0xe9, 0x4d, 0xd3, 0xca, 0x52, 0xa6, 0x22, 0xa5, 0x4a, 0x4b, 0xd7, 0xee,
0x9d, 0x92, 0x8e, 0x0a, 0x46, 0xb9, 0xa4, 0x42, 0x06, 0xeb, 0x09, 0xf4, 0xd6, 0x50, 0xe3, 0x73,
0x55, 0x95, 0x7a, 0x5a, 0x28, 0x47, 0xb8, 0xc8, 0xc2, 0xca, 0xbd, 0x9e, 0x2d, 0x95, 0x62, 0x4d,
0xfd, 0x35, 0xab, 0xca, 0x26, 0xa5, 0xf8, 0x69, 0xde, 0xab, 0xfa, 0x86, 0xde, 0x91, 0xda, 0x73,
0x94, 0xbc, 0xc3, 0xbc, 0x4e, 0x64, 0xba, 0xe4, 0x4d, 0x99, 0xc3, 0x76, 0x38, 0xf3, 0xb4, 0x17,
0x7e, 0x41, 0x42, 0x2f, 0xc0, 0xb7, 0x75, 0x9a, 0x55, 0x0b, 0x16, 0x14, 0x93, 0xd9, 0x48, 0xbe,
0x1c, 0x4e, 0x6d, 0xe1, 0x29, 0xe9, 0x31, 0xa8, 0xb0, 0x65, 0x89, 0x0a, 0xf2, 0x16, 0xa2, 0xb6,
0xdd, 0xa2, 0x4a, 0x0c, 0x4f, 0x6a, 0x7b, 0x98, 0x5e, 0x61, 0x30, 0xef, 0x21, 0x1c, 0x95, 0xb0,
0x8c, 0x7f, 0x7b, 0xf7, 0x8f, 0xfe, 0xaf, 0x17, 0x1f, 0x3f, 0xf4, 0xdf, 0x5f, 0x5c, 0xfe, 0xfe,
0xee, 0xe3, 0x4f, 0x1f, 0x1a, 0xa7, 0xbd, 0xd7, 0xaf, 0x5e, 0xb7, 0x3b, 0xcf, 0xc6, 0x76, 0xde,
0xf4, 0xd1, 0xe9, 0x0a, 0x1b, 0x7b, 0xff, 0xb6, 0x33, 0x11, 0xab, 0xe3, 0x2c, 0x5e, 0x54, 0x06,
0x07, 0x39, 0x5a, 0xa9, 0x47, 0x2b, 0xf5, 0xa5, 0x5a, 0xa9, 0x47, 0xbb, 0xf1, 0x68, 0x37, 0xbe,
0x30, 0xbb, 0x91, 0x8b, 0xf3, 0x4d, 0x4d, 0x47, 0xaf, 0xb4, 0x84, 0x1e, 0x8d, 0xc9, 0xa3, 0x31,
0x79, 0x34, 0x26, 0xbf, 0x29, 0x63, 0x72, 0xe3, 0xbd, 0xe5, 0x9d, 0xcd, 0xcc, 0x07, 0xea, 0x8f,
0x2f, 0xc6, 0x54, 0x3c, 0x9a, 0x7b, 0x06, 0x73, 0xaf, 0xe2, 0xdd, 0x32, 0x76, 0x20, 0x00, 0x38,
0x5b, 0x65, 0x95, 0xea, 0xf7, 0xcb, 0xf6, 0x63, 0x25, 0x96, 0x6d, 0x40, 0x9e, 0xa3, 0x2c, 0x7c,
0xfd, 0xcb, 0x9f, 0xde, 0xfd, 0xfa, 0x01, 0x44, 0xfb, 0xa3, 0xdb, 0x88, 0x6b, 0x76, 0x50, 0x1f,
0x66, 0x42, 0x3e, 0xc4, 0x46, 0x2c, 0x76, 0x4f, 0x77, 0x70, 0x32, 0x1d, 0x4d, 0xc3, 0x1d, 0x4c,
0xc3, 0x67, 0x60, 0x89, 0x3d, 0x3b, 0xeb, 0xf4, 0xc0, 0xa6, 0xe1, 0xf1, 0x12, 0xe8, 0x33, 0xba,
0x04, 0xfa, 0xc2, 0x4d, 0xf0, 0xa7, 0x35, 0x79, 0x9f, 0x9b, 0x03, 0xe0, 0x50, 0x26, 0xf8, 0x7f,
0xc2, 0xb5, 0xdc, 0x27, 0x72, 0x33, 0x70, 0xb8, 0xed, 0x36, 0xa9, 0x0d, 0x8a, 0xd6, 0xd1, 0xcf,
0x70, 0xf4, 0x33, 0x1c, 0xfd, 0x0c, 0x87, 0xf2, 0x33, 0x14, 0xd3, 0x35, 0x94, 0x95, 0xfe, 0xc7,
0xf5, 0x3f, 0x6c, 0x73, 0x05, 0x55, 0x91, 0x75, 0x7a, 0x6c, 0x97, 0xb5, 0x8e, 0x8c, 0xc3, 0x19,
0x39, 0x2f, 0xe5, 0x06, 0xe8, 0x7f, 0x82, 0x77, 0xe6, 0x19, 0x5d, 0x25, 0x7d, 0x42, 0xef, 0xd1,
0x31, 0x56, 0xf2, 0xcb, 0x7a, 0x41, 0x45, 0xee, 0x6a, 0xb9, 0x7d, 0x6a, 0x9b, 0xdb, 0x4b, 0x47,
0xf4, 0x9a, 0xa7, 0x46, 0x1d, 0xd6, 0x00, 0x57, 0x26, 0x9c, 0x91, 0x01, 0x27, 0xa1, 0xda, 0x61,
0xfd, 0x5d, 0x87, 0x11, 0x28, 0xf6, 0xbf, 0x31, 0x97, 0x25, 0xc5, 0xb6, 0x24, 0x5d, 0x49, 0xaf,
0x34, 0x8b, 0x25, 0xc2, 0x53, 0x7b, 0xba, 0xbd, 0x54, 0xe1, 0xa3, 0x7a, 0xf8, 0x48, 0x85, 0x5f,
0xf5, 0xf1, 0xf5, 0xe5, 0xa6, 0xe8, 0x0b, 0xa2, 0x07, 0xb1, 0xcb, 0x72, 0x82, 0x3e, 0xa4, 0xc9,
0xd2, 0x6a, 0x5d, 0x35, 0x7b, 0xec, 0x05, 0x19, 0x5b, 0x27, 0x68, 0x55, 0x20, 0x8f, 0x76, 0x41,
0x1e, 0x55, 0x23, 0x8f, 0x0a, 0xd6, 0xc0, 0x98, 0x27, 0xdb, 0x5f, 0x30, 0x47, 0x1e, 0x22, 0xbd,
0xea, 0x92, 0x96, 0xdb, 0x12, 0xae, 0x68, 0x87, 0xeb, 0xe1, 0x0c, 0x57, 0x44, 0x70, 0x45, 0xb6,
0xe2, 0x64, 0x06, 0x5c, 0xc6, 0x2b, 0xe2, 0xa4, 0x52, 0xd7, 0x9c, 0x11, 0xd9, 0xe6, 0xab, 0xe1,
0xd4, 0xed, 0xfc, 0x88, 0x4f, 0x59, 0x3c, 0x23, 0xa7, 0xf3, 0xa3, 0x1e, 0x4c, 0x62, 0x83, 0x44,
0x9f, 0xbe, 0x0e, 0x4b, 0xaa, 0x1d, 0xe9, 0xf5, 0xfe, 0x4a, 0x4a, 0x37, 0x95, 0x8a, 0x2a, 0x4a,
0x45, 0xfb, 0x38, 0x04, 0xc5, 0x52, 0xa1, 0x86, 0xd0, 0x94, 0x18, 0xed, 0x7e, 0xaa, 0xf2, 0x78,
0x95, 0xe8, 0x78, 0x48, 0xeb, 0x78, 0x48, 0xab, 0xca, 0x13, 0xcf, 0x87, 0xcc, 0xe0, 0xa6, 0x7b,
0x0c, 0x2f, 0x3d, 0xfa, 0x8a, 0x6a, 0xa8, 0x2c, 0xf2, 0x2b, 0xfb, 0xaa, 0x00, 0x31, 0xf1, 0x97,
0x94, 0x5b, 0xd7, 0x9b, 0x2a, 0xd8, 0xf1, 0x5e, 0xd4, 0xf1, 0x7c, 0xdb, 0x33, 0x39, 0xdf, 0x76,
0x38, 0x77, 0xba, 0x34, 0x15, 0x8b, 0x9f, 0x86, 0x9a, 0x8b, 0x4c, 0x57, 0x9d, 0x9f, 0xa6, 0x26,
0xcb, 0x98, 0x4c, 0x93, 0xec, 0xe8, 0xf5, 0x3e, 0x7a, 0xbd, 0x8f, 0x5e, 0xef, 0xa3, 0xd7, 0x7b,
0x33, 0xaf, 0x37, 0xaa, 0xff, 0x01, 0x93, 0x43, 0x62, 0xee, 0x3a, 0xba, 0x39, 0xd3, 0x5e, 0x7a,
0x92, 0x90, 0x12, 0x83, 0x57, 0x02, 0x5b, 0x35, 0x85, 0xa5, 0x63, 0x33, 0xec, 0xd1, 0x5a, 0xec,
0xd1, 0x66, 0xd8, 0x23, 0x09, 0x3b, 0x84, 0x43, 0xdb, 0xf7, 0xc9, 0x40, 0xdd, 0x16, 0x5b, 0x0c,
0x47, 0xd8, 0xfd, 0xe5, 0x78, 0x59, 0xc4, 0xa4, 0x7c, 0x66, 0x16, 0xd8, 0xf1, 0x5e, 0x5b, 0xbd,
0x0e, 0x70, 0x38, 0x1d, 0x7c, 0xbf, 0x0a, 0xf4, 0xb7, 0x78, 0x55, 0xcf, 0x88, 0xa1, 0xe6, 0xdc,
0x43, 0xb9, 0xc7, 0x6b, 0x3b, 0x7c, 0x6b, 0x55, 0xe9, 0x1b, 0x73, 0xc9, 0x12, 0x31, 0x04, 0xb9,
0xfd, 0xd0, 0x18, 0x5b, 0x0a, 0x85, 0x89, 0xdd, 0x0e, 0x35, 0xe0, 0xa8, 0x12, 0x38, 0x2a, 0x01,
0xa3, 0xf7, 0x50, 0xd4, 0xe2, 0x0a, 0x14, 0x2e, 0x4a, 0x3a, 0xdb, 0xa7, 0xbe, 0xc0, 0x40, 0x79,
0x1d, 0xf7, 0xbc, 0x55, 0xc8, 0x47, 0x59, 0x96, 0xd3, 0x08, 0xc6, 0xa6, 0x1c, 0x86, 0x76, 0xff,
0x87, 0x5c, 0x37, 0x3a, 0x77, 0x9a, 0x4f, 0xc8, 0x5a, 0x93, 0xc9, 0x4f, 0x63, 0x08, 0xa9, 0x8f,
0x6b, 0x4f, 0x45, 0x66, 0x74, 0x3d, 0x1a, 0xc5, 0x59, 0xdd, 0xb3, 0xb9, 0x5b, 0x06, 0x55, 0xeb,
0x18, 0xd2, 0xba, 0xbb, 0x46, 0x5a, 0xeb, 0x04, 0x96, 0x65, 0x8e, 0x44, 0xd9, 0x02, 0x3d, 0xda,
0x53, 0xe9, 0x6f, 0xd8, 0x10, 0x33, 0x8a, 0x96, 0xec, 0x06, 0x34, 0x30, 0x1f, 0x3c, 0xcf, 0x2e,
0x77, 0x00, 0x04, 0x13, 0x2b, 0xba, 0x4a, 0xea, 0x5c, 0x79, 0x03, 0xbb, 0x5f, 0xee, 0x27, 0xfd,
0x69, 0x91, 0xd2, 0x62, 0xdb, 0xa9, 0xce, 0xea, 0x6e, 0xdc, 0x4d, 0xa5, 0xd1, 0xc9, 0x20, 0xa2,
0x15, 0x51, 0x3a, 0x16, 0x10, 0x02, 0xbc, 0x2e, 0x1b, 0xc4, 0x65, 0x79, 0xe4, 0x43, 0xd2, 0x6d,
0x18, 0xdc, 0x4f, 0x7f, 0x6d, 0xa5, 0x70, 0x69, 0xce, 0xf2, 0x2c, 0x5c, 0x98, 0x5e, 0x63, 0x81,
0xa7, 0x51, 0x16, 0xf3, 0x64, 0xd6, 0xbf, 0xc5, 0x00, 0xbf, 0x5a, 0xb4, 0xbc, 0x42, 0x30, 0x77,
0xca, 0x13, 0xb3, 0x43, 0x43, 0xc4, 0x75, 0xd6, 0x44, 0xa0, 0xed, 0x52, 0xb0, 0x2e, 0x0d, 0xff,
0x4d, 0x91, 0xb5, 0x43, 0x6a, 0x21, 0x90, 0x2a, 0x58, 0x42, 0x36, 0x8e, 0x82, 0xe2, 0xa7, 0xc7,
0xc1, 0xfc, 0x7b, 0x51, 0xa8, 0xab, 0x17, 0xea, 0x16, 0x85, 0xba, 0x45, 0xa1, 0x2e, 0x14, 0xd2,
0xb6, 0x18, 0x28, 0x36, 0x97, 0x05, 0x98, 0xe5, 0xa3, 0xcf, 0x5e, 0x7d, 0x6a, 0x87, 0x72, 0x18,
0x6e, 0xec, 0x12, 0x81, 0x17, 0xd0, 0xfa, 0xf0, 0x85, 0xe1, 0xbb, 0x21, 0x74, 0x3a, 0xf9, 0x70,
0xd5, 0x1e, 0x83, 0x27, 0x05, 0x6c, 0xb7, 0x22, 0xef, 0x6e, 0xb9, 0xaa, 0xcc, 0x5b, 0xdd, 0x2d,
0x45, 0x94, 0xbb, 0xf0, 0x26, 0x26, 0xd2, 0x21, 0x0e, 0xf8, 0x13, 0x49, 0xfc, 0xdd, 0x2b, 0xfe,
0xe0, 0x95, 0xed, 0x9d, 0x42, 0x50, 0x52, 0x08, 0x49, 0x6e, 0x31, 0xd8, 0x16, 0xf9, 0x82, 0x60,
0x6c, 0xe5, 0xe1, 0x07, 0x82, 0xa1, 0x42, 0x9c, 0x3d, 0x4e, 0x69, 0xf8, 0xe9, 0xf4, 0xa1, 0x43,
0x0f, 0x0c, 0x05, 0xd6, 0x3d, 0x6d, 0xa0, 0xce, 0x8a, 0xee, 0xda, 0x04, 0x9b, 0x23, 0x22, 0xbf,
0x2b, 0xf0, 0x40, 0x15, 0xee, 0x06, 0x29, 0x9a, 0x84, 0x45, 0x49, 0x41, 0xa3, 0xbf, 0x71, 0x22,
0x5d, 0x51, 0x8d, 0x8b, 0x6d, 0x67, 0xc3, 0xe7, 0xf2, 0x80, 0x6d, 0x0f, 0x93, 0xbf, 0xa4, 0x97,
0x16, 0x39, 0x9b, 0x32, 0x9f, 0x2f, 0x82, 0x52, 0xe8, 0xc4, 0xf2, 0xce, 0x0d, 0x58, 0xf2, 0xcc,
0xa8, 0x36, 0xef, 0xea, 0x28, 0xa9, 0xa7, 0x50, 0x42, 0x98, 0x53, 0xaa, 0xcc, 0xe5, 0x4e, 0x09,
0x64, 0x4c, 0x5d, 0x08, 0x45, 0x69, 0x3a, 0x01, 0x21, 0xb3, 0xa0, 0x7b, 0x7b, 0x10, 0xb6, 0xb3,
0x8f, 0xc4, 0x86, 0x92, 0xa4, 0xd7, 0x80, 0x46, 0x71, 0x88, 0xb2, 0xb4, 0x04, 0xa7, 0x3e, 0x11,
0x88, 0xb0, 0x75, 0x99, 0x15, 0x59, 0x83, 0x70, 0x4a, 0x78, 0x10, 0x4c, 0x3e, 0x08, 0xa1, 0x47,
0x24, 0x33, 0x7f, 0x78, 0xa1, 0x02, 0x7e, 0x9e, 0xe4, 0x83, 0x2b, 0x9d, 0xd6, 0x2c, 0xcd, 0xc3,
0x3c, 0xee, 0x2f, 0x56, 0xd3, 0x28, 0x9d, 0x54, 0x14, 0xa4, 0x01, 0x03, 0x35, 0x13, 0x48, 0x11,
0xe2, 0x83, 0x2b, 0x25, 0x9e, 0x66, 0xc5, 0x06, 0x1a, 0x4d, 0x9d, 0x84, 0x11, 0xd1, 0x80, 0xe6,
0x93, 0x70, 0x16, 0x57, 0x40, 0xd0, 0x20, 0xd6, 0x5a, 0x5e, 0xd1, 0xb7, 0x20, 0xdc, 0xf4, 0x64,
0x6c, 0x1b, 0x35, 0x59, 0xa7, 0xe1, 0xbc, 0xea, 0x04, 0x55, 0xd9, 0x6c, 0x2a, 0x19, 0x4d, 0xca,
0xe0, 0x7f, 0x03, 0x7b, 0x31, 0xcf, 0xe4, 0xd1, 0xf4, 0x42, 0x89, 0x09, 0xe4, 0x29, 0x29, 0xce,
0xb6, 0x70, 0x0f, 0xad, 0x9a, 0xcb, 0x4f, 0xc6, 0xa0, 0xda, 0x51, 0x38, 0x13, 0x79, 0x22, 0x8c,
0x19, 0x4f, 0x25, 0xa0, 0x32, 0x53, 0x2e, 0xe2, 0xf1, 0x14, 0xe2, 0x46, 0x12, 0xb6, 0x9b, 0xc4,
0x41, 0x4b, 0x9b, 0xd4, 0x7f, 0xf6, 0xbe, 0x72, 0x2d, 0x15, 0x86, 0x1d, 0x56, 0xaf, 0xef, 0x2a,
0xe6, 0x2e, 0xbc, 0x6a, 0xf2, 0x5d, 0xf5, 0x94, 0x25, 0x9d, 0x8a, 0x54, 0x80, 0x0c, 0xa4, 0x04,
0xfd, 0xd9, 0xf9, 0xea, 0xb2, 0x5f, 0xdd, 0xaf, 0x2e, 0x9f, 0xbd, 0xb6, 0x87, 0x21, 0xa8, 0xfd,
0xfb, 0x06, 0xf4, 0x59, 0x03, 0x6a, 0x7c, 0x58, 0x85, 0xa2, 0xb2, 0x32, 0xe2, 0xba, 0xa6, 0xac,
0x47, 0xcc, 0x44, 0x0a, 0xc3, 0xa7, 0xa6, 0xa9, 0xfe, 0xb4, 0xcf, 0x69, 0x32, 0xcb, 0xd7, 0x45,
0x43, 0x67, 0x41, 0xad, 0x85, 0x28, 0x22, 0xf2, 0xe7, 0x2a, 0x2d, 0x44, 0x51, 0xa0, 0x62, 0x6b,
0xab, 0xa3, 0xc8, 0xa1, 0xa8, 0x68, 0x09, 0xf4, 0x69, 0xdc, 0xf8, 0xf1, 0xa4, 0x12, 0xb1, 0x57,
0x23, 0xff, 0x1a, 0x3f, 0x9c, 0xd4, 0xe4, 0x7a, 0x95, 0x38, 0x15, 0xda, 0x24, 0xcf, 0x17, 0x23,
0x8f, 0xda, 0x64, 0x60, 0xa4, 0x80, 0x9b, 0x53, 0xa5, 0x1d, 0xed, 0x2e, 0x70, 0x52, 0xfb, 0xd0,
0x93, 0x4e, 0x50, 0x2a, 0xcd, 0x4f, 0x62, 0x11, 0x2d, 0x80, 0x9f, 0xb8, 0x62, 0xa2, 0xac, 0xf1,
0x23, 0x72, 0xa9, 0xd7, 0x3b, 0x43, 0x4f, 0x2c, 0x8e, 0x84, 0xc2, 0xea, 0x28, 0x9a, 0xa9, 0xa0,
0x06, 0x35, 0x9e, 0xd4, 0xe4, 0x53, 0xfe, 0x52, 0x64, 0x37, 0x57, 0x14, 0xe9, 0xd4, 0xfa, 0xbc,
0x76, 0x10, 0x69, 0x18, 0xed, 0x2e, 0x46, 0xf7, 0x16, 0xaf, 0x00, 0x85, 0xfa, 0x78, 0x2d, 0x57,
0x5e, 0x69, 0x04, 0x11, 0x32, 0x0a, 0x4c, 0x15, 0x01, 0xbc, 0x31, 0xfd, 0xd6, 0xd7, 0x9b, 0x81,
0xa1, 0x80, 0x2d, 0x38, 0xad, 0x85, 0x47, 0xc2, 0xd4, 0x55, 0xc6, 0x85, 0x03, 0x5f, 0x70, 0xaa,
0xcc, 0xbf, 0x97, 0xbb, 0x02, 0x67, 0x3b, 0xe1, 0xd5, 0x59, 0x80, 0x11, 0x67, 0x65, 0x19, 0xd0,
0xd4, 0xf0, 0xab, 0xfc, 0x49, 0x0b, 0x0e, 0x88, 0x74, 0xc2, 0x38, 0xbb, 0xf5, 0x05, 0xc1, 0xc9,
0xdc, 0xe0, 0x9f, 0xac, 0xe3, 0x02, 0xf4, 0x3c, 0x0b, 0x34, 0x2e, 0xfa, 0xf2, 0x05, 0x39, 0xae,
0xfe, 0x6b, 0xc0, 0x82, 0x36, 0xcb, 0xde, 0x69, 0x90, 0x8d, 0xa6, 0xd5, 0x4f, 0x8c, 0x89, 0x0c,
0x49, 0x3a, 0x52, 0x89, 0xff, 0x23, 0x19, 0x71, 0xf2, 0xea, 0xc8, 0x3c, 0xd6, 0x5a, 0x49, 0x4f,
0x4d, 0xb8, 0x6d, 0x6a, 0x8d, 0x71, 0xc4, 0x86, 0x99, 0x77, 0x0a, 0xbb, 0x1f, 0x82, 0x29, 0xa5,
0x38, 0xe2, 0x37, 0x4c, 0x24, 0x93, 0x7f, 0x3d, 0x69, 0x01, 0x85, 0xa1, 0x97, 0x97, 0x48, 0xbe,
0x96, 0xb0, 0x4f, 0x4b, 0xd5, 0x9e, 0x44, 0x94, 0xf9, 0x42, 0x47, 0x08, 0xe4, 0x7c, 0x22, 0x41,
0xd1, 0x9a, 0x80, 0x78, 0xca, 0x8a, 0x26, 0xd1, 0xf8, 0xa1, 0xa5, 0x6a, 0x16, 0xea, 0xc2, 0x2c,
0x5e, 0xc8, 0x02, 0x07, 0x09, 0xc4, 0x40, 0x57, 0x90, 0x76, 0xbe, 0x36, 0xa5, 0xa2, 0xb6, 0x5d,
0x15, 0x2e, 0x9c, 0x19, 0x49, 0x8f, 0xad, 0x15, 0x1c, 0xee, 0x7c, 0xee, 0x56, 0x8e, 0x34, 0x09,
0x88, 0xba, 0x98, 0x18, 0x80, 0xa3, 0xb5, 0x4e, 0xd1, 0xd1, 0x65, 0x3b, 0x92, 0xfd, 0xa6, 0x9e,
0x20, 0x9b, 0x1e, 0xf2, 0x3a, 0x2a, 0xfb, 0xfb, 0x53, 0xf6, 0x9f, 0x8d, 0x12, 0xbd, 0x4f, 0x2b,
0x62, 0x5b, 0x8b, 0xa6, 0xce, 0xea, 0xa8, 0x57, 0xf6, 0x81, 0x3d, 0x14, 0x4f, 0xd0, 0x29, 0x4b,
0xec, 0x56, 0x4d, 0xe8, 0x51, 0x32, 0x99, 0xd4, 0x9d, 0x51, 0x2b, 0xf2, 0xab, 0x0f, 0xaa, 0x15,
0x30, 0xa6, 0xd3, 0x6a, 0x52, 0x6e, 0xdd, 0x56, 0x8b, 0x0a, 0x56, 0xf7, 0x80, 0x57, 0x38, 0x49,
0xeb, 0x28, 0x2e, 0xf2, 0xab, 0x29, 0x2e, 0x60, 0x4c, 0x14, 0x4b, 0xb9, 0x75, 0x14, 0xab, 0x60,
0xdf, 0xf4, 0xb1, 0x36, 0x6c, 0x4a, 0xcd, 0x09, 0xa9, 0x22, 0xbf, 0xfa, 0xc5, 0x5d, 0x01, 0x62,
0x7c, 0x75, 0xb7, 0xc8, 0xad, 0x7d, 0x5f, 0x4d, 0x01, 0x5b, 0x47, 0x70, 0xf5, 0x09, 0x46, 0x91,
0x5d, 0x4f, 0x6e, 0xd5, 0x59, 0xc6, 0x22, 0x73, 0x2d, 0xb1, 0xca, 0x4e, 0xd0, 0x26, 0x76, 0xaa,
0x34, 0xe1, 0x8a, 0x9f, 0xa6, 0x73, 0x5d, 0x45, 0xae, 0xab, 0x4e, 0x43, 0xd3, 0x09, 0x2f, 0x19,
0xd5, 0x4e, 0x53, 0xa9, 0xf8, 0x69, 0xa2, 0xa5, 0xc8, 0x75, 0xd5, 0x09, 0x66, 0xa2, 0x45, 0x46,
0xb5, 0xfd, 0x24, 0x39, 0xf8, 0x81, 0x30, 0x89, 0xf7, 0x8b, 0x9f, 0xa6, 0x37, 0x7f, 0x45, 0xa6,
0xab, 0x4e, 0x08, 0xe3, 0xdb, 0xbf, 0x12, 0xa6, 0x5d, 0xb8, 0x5a, 0xfc, 0xaa, 0x22, 0x84, 0x1d,
0xc5, 0x93, 0x18, 0xbd, 0x92, 0x0c, 0xb6, 0x67, 0x69, 0x60, 0xd7, 0xa3, 0x3f, 0xe3, 0xe8, 0xcf,
0x38, 0xfa, 0x33, 0x8e, 0xfe, 0x8c, 0xa3, 0x3f, 0xe3, 0x65, 0xf8, 0x33, 0xf8, 0x19, 0xe4, 0xe2,
0x44, 0x9c, 0x72, 0x80, 0x8e, 0x32, 0xc1, 0xb3, 0x72, 0x79, 0x14, 0xef, 0x5d, 0x65, 0xf3, 0x74,
0x12, 0x42, 0xeb, 0x1f, 0xe0, 0x03, 0x61, 0x06, 0x10, 0x3d, 0xff, 0x46, 0xda, 0xd6, 0x5e, 0xc2,
0xd5, 0x2e, 0xbc, 0xa1, 0x46, 0xad, 0x20, 0xba, 0x69, 0x28, 0x75, 0x90, 0x4b, 0x5f, 0x15, 0xad,
0xaa, 0x1f, 0xdd, 0x2a, 0xfc, 0x0e, 0xd6, 0xe5, 0xfb, 0x9f, 0xfb, 0x9f, 0xff, 0xd1, 0x78, 0xd3,
0xee, 0x9c, 0x94, 0x4d, 0x4d, 0x58, 0x5d, 0xfd, 0x3a, 0x07, 0x8c, 0xd9, 0x18, 0x94, 0x8f, 0xc6,
0x6c, 0x7b, 0x3e, 0x4f, 0xb3, 0x73, 0x1f, 0xd3, 0x14, 0x3c, 0xac, 0x19, 0x77, 0x40, 0x13, 0xec,
0x50, 0x56, 0xd4, 0x41, 0x4d, 0xa0, 0x7d, 0x5a, 0x30, 0xb5, 0x6c, 0xb2, 0x9d, 0x01, 0x52, 0x6f,
0x7f, 0x6c, 0x65, 0x3f, 0xec, 0xe3, 0xbc, 0x9d, 0x34, 0x7a, 0xdb, 0x29, 0xf2, 0x75, 0x43, 0xb3,
0xb1, 0x2e, 0x4e, 0x61, 0x3e, 0xbc, 0xff, 0xe5, 0x43, 0xff, 0x97, 0x77, 0xbf, 0xfd, 0xf6, 0x8e,
0x68, 0x0c, 0xdd, 0xce, 0xb9, 0x67, 0x0e, 0xde, 0xc7, 0xc5, 0x38, 0x9b, 0xe5, 0xa0, 0x7d, 0x97,
0x45, 0x3f, 0x9b, 0xed, 0xe2, 0xf6, 0x3c, 0x2a, 0x8d, 0x3c, 0x71, 0x25, 0x4b, 0x70, 0xde, 0x51,
0x2c, 0xb3, 0x50, 0xc4, 0x37, 0x54, 0x7c, 0x8a, 0x28, 0x12, 0x74, 0xd4, 0xa4, 0xe1, 0x97, 0xa5,
0x1d, 0x12, 0x17, 0x14, 0x4d, 0xf4, 0x2c, 0x81, 0xdf, 0x51, 0x24, 0xa1, 0xed, 0xcb, 0x27, 0x2e,
0xaf, 0x47, 0xa3, 0xc0, 0x42, 0x7d, 0xba, 0x85, 0x37, 0x24, 0x98, 0x6e, 0x2d, 0xb4, 0x75, 0xe8,
0x4b, 0x7e, 0x50, 0x27, 0x90, 0xd8, 0x85, 0x56, 0x67, 0x89, 0xae, 0x76, 0xba, 0xed, 0xee, 0x5b,
0x8f, 0x0a, 0xf1, 0x66, 0x41, 0x85, 0x5d, 0x43, 0x06, 0xad, 0x1b, 0x6a, 0x2e, 0x46, 0xde, 0x2b,
0x16, 0x5e, 0x86, 0xcc, 0xbf, 0x97, 0xc8, 0xc5, 0xe3, 0x82, 0x26, 0x8f, 0x32, 0xf8, 0x93, 0xdb,
0x61, 0xb9, 0x43, 0x68, 0x5d, 0xc3, 0x00, 0x3f, 0x1c, 0x79, 0x3d, 0x50, 0x74, 0x21, 0xf4, 0x66,
0x4b, 0x07, 0x0c, 0x81, 0xb4, 0x96, 0x8c, 0xc0, 0x85, 0x94, 0xa6, 0x92, 0xb2, 0xe1, 0x69, 0x42,
0x47, 0x5d, 0xf1, 0x1e, 0xe4, 0xed, 0xfe, 0x7f, 0xa7, 0x8d, 0x81, 0x68
};
const char* shaderSource() {

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<SymbolIconProgram> {
static constexpr const char* name = "symbol_icon";
static constexpr const uint8_t hash[8] = { 0xf3, 0x81, 0x62, 0xe8, 0x24, 0x49, 0xc6, 0x8f };
static constexpr const auto vertexOffset = 50079;
static constexpr const auto fragmentOffset = 52727;
static constexpr const auto vertexOffset = 50235;
static constexpr const auto fragmentOffset = 52883;
};
constexpr const char* ShaderSource<SymbolIconProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<SymbolSDFIconProgram> {
static constexpr const char* name = "symbol_sdf_icon";
static constexpr const uint8_t hash[8] = { 0x4b, 0x0b, 0x5f, 0x6b, 0xa9, 0xec, 0x84, 0x19 };
static constexpr const auto vertexOffset = 53132;
static constexpr const auto fragmentOffset = 57166;
static constexpr const auto vertexOffset = 53288;
static constexpr const auto fragmentOffset = 57322;
};
constexpr const char* ShaderSource<SymbolSDFIconProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<SymbolSDFTextProgram> {
static constexpr const char* name = "symbol_sdf_text";
static constexpr const uint8_t hash[8] = { 0x4b, 0x0b, 0x5f, 0x6b, 0xa9, 0xec, 0x84, 0x19 };
static constexpr const auto vertexOffset = 53132;
static constexpr const auto fragmentOffset = 57166;
static constexpr const auto vertexOffset = 53288;
static constexpr const auto fragmentOffset = 57322;
};
constexpr const char* ShaderSource<SymbolSDFTextProgram>::name;

View File

@@ -10,7 +10,7 @@ namespace mbgl {
using namespace style;
static_assert(sizeof(LineLayoutVertex) == 12, "expected LineLayoutVertex size");
static_assert(sizeof(LineLayoutVertex) == 8, "expected LineLayoutVertex size");
template <class Values, class...Args>
Values makeValues(const style::LinePaintProperties::PossiblyEvaluated& properties,

View File

@@ -55,10 +55,8 @@ public:
static LayoutVertex layoutVertex(Point<int16_t> p, Point<double> e, bool round, bool up, int8_t dir, int32_t linesofar = 0) {
return LayoutVertex {
{{
p.x,
p.y,
static_cast<int16_t>(round ? 1 : 0),
static_cast<int16_t>(up ? 1 : -1)
static_cast<int16_t>((p.x * 2) | (round ? 1 : 0)),
static_cast<int16_t>((p.y * 2) | (up ? 1 : 0))
}},
{{
// add 128 to store a byte in an unsigned byte