diff --git a/README.rst b/README.rst index 0baff742..4a45cfe5 100644 --- a/README.rst +++ b/README.rst @@ -6,7 +6,7 @@ Source ------ This repository lives at https://gitlab.freedesktop.org/mesa/mesa. -Other repositories are likely forks, and code found there is not supported. This particular repository has moved to https://github.com/Pipetto-crypto/mesa +Other repositories are likely forks, and code found there is not supported. This is a fork of https://github.com/xMeM/mesa Build & install diff --git a/src/vulkan/wrapper/spirv_patcher.cpp b/src/vulkan/wrapper/spirv_patcher.cpp index 4ff881bf..8e205a12 100644 --- a/src/vulkan/wrapper/spirv_patcher.cpp +++ b/src/vulkan/wrapper/spirv_patcher.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "spirv_patcher.hpp" #include "wrapper_log.h" @@ -20,10 +21,17 @@ namespace OpCode { static const uint32_t OpCapability = 17; static const uint32_t OpConstantComposite = 44; static const uint32_t OpSpecConstantTrue = 48; + static const uint32_t OpSpecConstantFalse = 49; + static const uint32_t OpSpecConstant = 50; static const uint32_t OpSpecConstantComposite = 51; static const uint32_t OpDecorate = 71; } +namespace OpType { + static const uint32_t OpTypeBool = 20; + static const uint32_t OpTypeVector = 23; +} + void remove_ClipDistance(uint32_t *pCode, size_t *codeSize) { @@ -70,7 +78,9 @@ remove_ClipDistance(uint32_t *pCode, size_t *codeSize) void patch_OpConstantComposite_to_OpSpecConstantComposite(uint32_t *pCode, uint32_t codeSize) { - std::vector true_bool_constants; + std::unordered_set bool_constants; + std::unordered_map vector_bool_constants; + std::unordered_set spec_constants; uint32_t offset = 5; while (offset < codeSize) { @@ -81,13 +91,34 @@ patch_OpConstantComposite_to_OpSpecConstantComposite(uint32_t *pCode, uint32_t c if (length == 0 || offset + length > codeSize) break; - if (opcode == OpCode::OpSpecConstantTrue) - true_bool_constants.push_back(pCode[offset + 2]); + if (opcode == OpType::OpTypeBool) + bool_constants.insert(pCode[offset + 1]); + + if (opcode == OpType::OpTypeVector) { + uint32_t variable_id = pCode[offset + 1]; + uint32_t component_type = pCode[offset + 2]; + uint32_t component_number = pCode[offset + 3]; + if (bool_constants.count(component_type)) + vector_bool_constants[variable_id] = component_number; + } + + if (opcode == OpCode::OpSpecConstantTrue || opcode == OpCode::OpSpecConstantFalse || opcode == OpCode::OpSpecConstant) + spec_constants.insert(pCode[offset + 2]); if (opcode == OpCode::OpConstantComposite) { - uint32_t component = pCode[offset + 3]; - if (std::find(true_bool_constants.begin(), true_bool_constants.end(), component) != true_bool_constants.end()) - pCode[offset] = (pCode[offset] & ~0xffffu) | (OpCode::OpSpecConstantComposite & 0xffffu); + uint32_t component_type = pCode[offset + 1]; + auto it = vector_bool_constants.find(component_type); + if (it != vector_bool_constants.end()) { + uint32_t component_number = it->second; + uint32_t matches = 0; + for (uint32_t index = 0; index < component_number; index ++) { + uint32_t component = pCode[offset + 3 + index]; + if (spec_constants.count(component)) + matches++; + } + if (matches == component_number) + pCode[offset] = (pCode[offset] & ~0xffffu) | (OpCode::OpSpecConstantComposite & 0xffffu); + } } offset += length; diff --git a/src/vulkan/wrapper/wrapper_astc.h b/src/vulkan/wrapper/wrapper_astc.h new file mode 100644 index 00000000..52e512db --- /dev/null +++ b/src/vulkan/wrapper/wrapper_astc.h @@ -0,0 +1,437 @@ +/* + * Minimal ASTC 4x4 LDR encoder for transcoding BCn textures. + * + * Two per-block configurations, both matching the block layout parsed by + * Mesa's _mesa_unpack_astc_2d_ldr decoder (validated offline by round-trip): + * + * RGB (opaque, has_alpha==0): single plane, CEM 8 (LDR RGB direct), + * 8-level (3-bit) weights, pure 8-bit endpoints. block mode 0x53. + * + * RGBA (has_alpha==1): DUAL plane so alpha gets its own interpolation weight + * (independent of RGB). CEM 12 (LDR RGBA direct), 4-level (2-bit) weights + * per plane, colour-component-selector = alpha. The 4x4 dual-plane bit + * budget forces trit-encoded endpoints (range 47); the trit ISE tables and + * the endpoint unquantization table below were derived from Mesa's decoder. + * block mode 0x442. + * + * Mali samples ASTC natively, so BCn textures stay ~compressed in GPU memory + * instead of being decoded to RGBA8 (4-8x larger). + */ +#ifndef WRAPPER_ASTC_H +#define WRAPPER_ASTC_H + +#include +#include + +/* trit ISE encode: index t0+3t1+9t2+27t3+81t4 -> 8-bit T field (5 values). */ +static const uint8_t astc_trit5[243] = { + 0,1,2,4,5,6,8,9,10,16,17,18,20,21,22,24, + 25,26,3,7,11,19,23,27,12,13,14,32,33,34,36,37, + 38,40,41,42,48,49,50,52,53,54,56,57,58,35,39,43, + 51,55,59,44,45,46,64,65,66,68,69,70,72,73,74,80, + 81,82,84,85,86,88,89,90,67,71,75,83,87,91,76,77, + 78,128,129,130,132,133,134,136,137,138,144,145,146,148,149,150, + 152,153,154,131,135,139,147,151,155,140,141,142,160,161,162,164, + 165,166,168,169,170,176,177,178,180,181,182,184,185,186,163,167, + 171,179,183,187,172,173,174,192,193,194,196,197,198,200,201,202, + 208,209,210,212,213,214,216,217,218,195,199,203,211,215,219,204, + 205,206,96,97,98,100,101,102,104,105,106,112,113,114,116,117, + 118,120,121,122,99,103,107,115,119,123,108,109,110,224,225,226, + 228,229,230,232,233,234,240,241,242,244,245,246,248,249,250,227, + 231,235,243,247,251,236,237,238,28,29,30,60,61,62,92,93, + 94,156,157,158,188,189,190,220,221,222,31,63,95,159,191,223, + 124,125,126, +}; +/* trit ISE encode: index t0+3t1+9t2 -> value 0..31 (T5=T6=T7=0), partial (3 values). */ +static const uint8_t astc_trit3[27] = { + 0,1,2,4,5,6,8,9,10,16,17,18,20,21,22,24, + 25,26,3,7,11,19,23,27,12,13,14, +}; +/* Endpoint unquantization for range 47 (4-bit + trit): quant level -> 0..255. */ +static const uint8_t astc_ce_unq[48] = { + 0,255,16,239,32,223,48,207,65,190,81,174,97,158,113,142, + 5,250,21,234,38,217,54,201,70,185,86,169,103,152,119,136, + 11,244,27,228,43,212,59,196,76,179,92,163,108,147,124,131, +}; +/* Inverse of astc_ce_unq: 0..255 value -> nearest quant level (0..47). */ +static const uint8_t astc_ce_quant[256] = { + 0,0,0,16,16,16,16,16,16,32,32,32,32,32,2,2, + 2,2,2,18,18,18,18,18,18,34,34,34,34,34,4,4, + 4,4,4,4,20,20,20,20,20,36,36,36,36,36,6,6, + 6,6,6,6,22,22,22,22,22,38,38,38,38,38,8,8, + 8,8,8,8,24,24,24,24,24,24,40,40,40,40,40,10, + 10,10,10,10,26,26,26,26,26,26,42,42,42,42,42,12, + 12,12,12,12,12,28,28,28,28,28,44,44,44,44,44,14, + 14,14,14,14,14,30,30,30,30,30,46,46,46,46,46,46, + 47,47,47,47,47,47,31,31,31,31,31,15,15,15,15,15, + 15,45,45,45,45,45,29,29,29,29,29,13,13,13,13,13, + 13,43,43,43,43,43,27,27,27,27,27,27,11,11,11,11, + 11,41,41,41,41,41,25,25,25,25,25,25,9,9,9,9, + 9,9,39,39,39,39,39,23,23,23,23,23,7,7,7,7, + 7,7,37,37,37,37,37,21,21,21,21,21,5,5,5,5, + 5,5,35,35,35,35,35,19,19,19,19,19,19,3,3,3, + 3,3,33,33,33,33,33,17,17,17,17,17,17,1,1,1, +}; + +static inline void +astc_set_bits(uint8_t *blk, int pos, int count, uint32_t value) +{ + for (int i = 0; i < count; i++) { + if (value & (1u << i)) + blk[(pos + i) >> 3] |= 1u << ((pos + i) & 7); + } +} + +static inline uint32_t +astc_reverse_bits(uint32_t v, int count) +{ + uint32_t out = 0; + for (int i = 0; i < count; i++) + out |= ((v >> i) & 1u) << (count - 1 - i); + return out; +} + +/* Farthest-apart pair of texels in RGB space -> endpoint indices. BCn source + * data lies on a line per block, so this recovers that line. */ +static inline void +astc_rgb_endpoints(const uint8_t texels[64], int *ai, int *bi) +{ + long best = -1; + *ai = 0; *bi = 0; + for (int i = 0; i < 16; i++) { + for (int j = i + 1; j < 16; j++) { + long d2 = 0; + for (int c = 0; c < 3; c++) { + long dc = (long)texels[i * 4 + c] - texels[j * 4 + c]; + d2 += dc * dc; + } + if (d2 > best) { best = d2; *ai = i; *bi = j; } + } + } +} + +/* RGB single-plane block: CEM 8, 3-bit weights, 8-bit endpoints. */ +static inline void +astc_encode_rgb_4x4(const uint8_t texels[64], uint8_t out[16]) +{ + memset(out, 0, 16); + + int ai, bi; + astc_rgb_endpoints(texels, &ai, &bi); + const uint8_t *pa = &texels[ai * 4]; + const uint8_t *pb = &texels[bi * 4]; + int sa = pa[0] + pa[1] + pa[2]; + int sb = pb[0] + pb[1] + pb[2]; + const uint8_t *lo = (sb >= sa) ? pa : pb; /* smaller sum -> e0 (no blue contract) */ + const uint8_t *hi = (sb >= sa) ? pb : pa; + int e0[3] = { lo[0], lo[1], lo[2] }; + int e1[3] = { hi[0], hi[1], hi[2] }; + + astc_set_bits(out, 0, 11, 0x53); + astc_set_bits(out, 13, 4, 8); + astc_set_bits(out, 17 + 0, 8, e0[0]); + astc_set_bits(out, 17 + 8, 8, e1[0]); + astc_set_bits(out, 17 + 16, 8, e0[1]); + astc_set_bits(out, 17 + 24, 8, e1[1]); + astc_set_bits(out, 17 + 32, 8, e0[2]); + astc_set_bits(out, 17 + 40, 8, e1[2]); + + int dir[3]; + long dlen2 = 0; + for (int c = 0; c < 3; c++) { dir[c] = e1[c] - e0[c]; dlen2 += (long)dir[c] * dir[c]; } + + for (int t = 0; t < 16; t++) { + int q; + if (dlen2 == 0) { + q = 0; + } else { + long dot = 0; + for (int c = 0; c < 3; c++) + dot += (long)(texels[t * 4 + c] - e0[c]) * dir[c]; + if (dot <= 0) q = 0; + else if (dot >= dlen2) q = 7; + else q = (int)((dot * 7 + dlen2 / 2) / dlen2); + } + astc_set_bits(out, 128 - (t + 1) * 3, 3, astc_reverse_bits((uint32_t)q, 3)); + } +} + +/* Trit bit positions within a 4-bit-mantissa trit group (ce_bits==4). */ +static const int astc_trit_Tpos[8] = { 4, 5, 10, 11, 16, 21, 22, 27 }; +static const int astc_trit_Mpos[5] = { 0, 6, 12, 17, 23 }; + +/* Write 8 endpoint quant levels (0..47) as two trit groups from bit 17. */ +static inline void +astc_write_trit_endpoints(uint8_t *blk, const int q[8]) +{ + int base = 17; + int t = astc_trit5[(q[0] >> 4) + 3 * (q[1] >> 4) + 9 * (q[2] >> 4) + + 27 * (q[3] >> 4) + 81 * (q[4] >> 4)]; + for (int j = 0; j < 5; j++) + astc_set_bits(blk, base + astc_trit_Mpos[j], 4, q[j] & 15); + for (int j = 0; j < 8; j++) + if ((t >> j) & 1) astc_set_bits(blk, base + astc_trit_Tpos[j], 1, 1); + + base = 45; + int t3 = astc_trit3[(q[5] >> 4) + 3 * (q[6] >> 4) + 9 * (q[7] >> 4)]; + for (int j = 0; j < 3; j++) + astc_set_bits(blk, base + astc_trit_Mpos[j], 4, q[5 + j] & 15); + for (int j = 0; j < 5; j++) /* only T0..T4 fit before the CCS at bit 62 */ + if ((t3 >> j) & 1) astc_set_bits(blk, base + astc_trit_Tpos[j], 1, 1); +} + +static inline int +astc_quantize_ce(int v) +{ + if (v < 0) v = 0; + if (v > 255) v = 255; + return astc_ce_quant[v]; +} + +/* RGBA dual-plane block: CEM 12, 2-bit weights per plane, alpha on plane 1. */ +static inline void +astc_encode_rgba_4x4(const uint8_t texels[64], uint8_t out[16]) +{ + memset(out, 0, 16); + astc_set_bits(out, 0, 11, 0x442); + astc_set_bits(out, 13, 4, 12); + + int ai, bi; + astc_rgb_endpoints(texels, &ai, &bi); + const uint8_t *pa = &texels[ai * 4]; + const uint8_t *pb = &texels[bi * 4]; + int sa = pa[0] + pa[1] + pa[2]; + int sb = pb[0] + pb[1] + pb[2]; + const uint8_t *lo = (sb >= sa) ? pa : pb; + const uint8_t *hi = (sb >= sa) ? pb : pa; + + int amin = 255, amax = 0; + for (int i = 0; i < 16; i++) { + int a = texels[i * 4 + 3]; + if (a < amin) amin = a; + if (a > amax) amax = a; + } + int e0[4] = { lo[0], lo[1], lo[2], amin }; + int e1[4] = { hi[0], hi[1], hi[2], amax }; + + int q[8] = { + astc_quantize_ce(e0[0]), astc_quantize_ce(e1[0]), + astc_quantize_ce(e0[1]), astc_quantize_ce(e1[1]), + astc_quantize_ce(e0[2]), astc_quantize_ce(e1[2]), + astc_quantize_ce(e0[3]), astc_quantize_ce(e1[3]), + }; + + /* Guarantee s1>=s0 on the unquantized RGB sums (quantization can flip a + * near-tie); otherwise the decoder blue-contracts and corrupts the block. */ + int s0 = astc_ce_unq[q[0]] + astc_ce_unq[q[2]] + astc_ce_unq[q[4]]; + int s1 = astc_ce_unq[q[1]] + astc_ce_unq[q[3]] + astc_ce_unq[q[5]]; + int swap = s1 < s0; + if (swap) + for (int k = 0; k < 8; k += 2) { int tmp = q[k]; q[k] = q[k + 1]; q[k + 1] = tmp; } + + astc_write_trit_endpoints(out, q); + astc_set_bits(out, 62, 2, 3); /* CCS = alpha component */ + + int dir[3]; + long dlen2 = 0; + for (int c = 0; c < 3; c++) { dir[c] = e1[c] - e0[c]; dlen2 += (long)dir[c] * dir[c]; } + int arange = amax - amin; + + for (int px = 0; px < 16; px++) { + int q0; + if (dlen2 == 0) { + q0 = 0; + } else { + long dot = 0; + for (int c = 0; c < 3; c++) + dot += (long)(texels[px * 4 + c] - e0[c]) * dir[c]; + if (dot <= 0) q0 = 0; + else if (dot >= dlen2) q0 = 3; + else q0 = (int)((dot * 3 + dlen2 / 2) / dlen2); + } + int q1; + if (arange == 0) { + q1 = 0; + } else { + int a = texels[px * 4 + 3] - amin; + q1 = (a * 3 + arange / 2) / arange; + if (q1 < 0) q1 = 0; + if (q1 > 3) q1 = 3; + } + if (swap) { q0 = 3 - q0; q1 = 3 - q1; } + astc_set_bits(out, 128 - (2 * px + 1) * 2, 2, astc_reverse_bits((uint32_t)q0, 2)); + astc_set_bits(out, 128 - (2 * px + 2) * 2, 2, astc_reverse_bits((uint32_t)q1, 2)); + } +} + +/* Encode a 4x4 RGBA8 block (16 texels, row-major) into a 16-byte ASTC block. */ +static inline void +astc_encode_block_4x4(const uint8_t texels[64], int has_alpha, uint8_t out[16]) +{ + if (has_alpha) + astc_encode_rgba_4x4(texels, out); + else + astc_encode_rgb_4x4(texels, out); +} + +/* ---- 8x8 blocks: same encoders but over 64 texels with a 4x4 weight grid, the + * grid weights least-squares-fit to the per-texel ideal weights via the infill + * pseudo-inverse (x256 fixed point). The block mode is identical to 4x4 (it + * encodes the weight grid, not the block); ASTC_8x8 format tells the decoder to + * infill the grid up to 64 texels. ---- */ +static const int16_t astc_pinv8[16][64] = { + {166,75,-16,-25,-4,10,4,-3,75,33,-9,-10,-3,5,2,-2,-16,-9,-2,5,-1,-1,0,0,-25,-10,5,5,0,-2,-1,0,-4,-3,-1,0,1,0,0,0,10,5,-1,-2,0,0,0,0,4,2,0,-1,0,0,0,0,-3,-2,0,0,0,0,0,0}, + {-42,45,132,93,17,-39,-14,12,-20,21,62,39,10,-19,-6,6,3,-3,-8,-15,4,1,1,0,5,-8,-21,-16,-1,6,2,-1,1,-1,-3,-1,-2,1,0,0,-2,3,7,6,1,-2,-1,0,-1,1,2,2,0,-1,0,0,1,-1,-2,-2,-1,0,0,0}, + {12,-14,-39,17,93,132,45,-42,6,-6,-19,10,39,62,21,-20,0,1,1,4,-15,-8,-3,3,-1,2,6,-1,-16,-21,-8,5,0,0,1,-2,-1,-3,-1,1,0,-1,-2,1,6,7,3,-2,0,0,-1,0,2,2,1,-1,0,0,0,-1,-2,-2,-1,1}, + {-3,4,10,-4,-25,-16,75,166,-2,2,5,-3,-10,-9,33,75,0,0,-1,-1,5,-2,-9,-16,0,-1,-2,0,5,5,-10,-25,0,0,0,1,0,-1,-3,-4,0,0,0,0,-2,-1,5,10,0,0,0,0,-1,0,2,4,0,0,0,0,0,0,-2,-3}, + {-42,-20,3,5,1,-2,-1,1,45,21,-3,-8,-1,3,1,-1,132,62,-8,-21,-3,7,2,-2,93,39,-15,-16,-1,6,2,-2,17,10,4,-1,-2,1,0,-1,-39,-19,1,6,1,-2,-1,0,-14,-6,1,2,0,-1,0,0,12,6,0,-1,0,0,0,0}, + {12,-10,-32,-23,-5,9,3,-3,-10,12,34,28,2,-9,-3,3,-32,34,99,79,10,-27,-9,9,-23,28,79,59,4,-22,-8,7,-5,2,10,4,8,-4,-1,2,9,-9,-27,-22,-4,6,2,-2,3,-3,-9,-8,-1,2,1,-1,-3,3,9,7,2,-2,-1,1}, + {-3,3,9,-5,-23,-32,-10,12,3,-3,-9,2,28,34,12,-10,9,-9,-27,10,79,99,34,-32,7,-8,-22,4,59,79,28,-23,2,-1,-4,8,4,10,2,-5,-2,2,6,-4,-22,-27,-9,9,-1,1,2,-1,-8,-9,-3,3,1,-1,-2,2,7,9,3,-3}, + {1,-1,-2,1,5,3,-20,-42,-1,1,3,-1,-8,-3,21,45,-2,2,7,-3,-21,-8,62,132,-2,2,6,-1,-16,-15,39,93,-1,0,1,-2,-1,4,10,17,0,-1,-2,1,6,1,-19,-39,0,0,-1,0,2,1,-6,-14,0,0,0,0,-1,0,6,12}, + {12,6,0,-1,0,0,0,0,-14,-6,1,2,0,-1,0,0,-39,-19,1,6,1,-2,-1,0,17,10,4,-1,-2,1,0,-1,93,39,-15,-16,-1,6,2,-2,132,62,-8,-21,-3,7,2,-2,45,21,-3,-8,-1,3,1,-1,-42,-20,3,5,1,-2,-1,1}, + {-3,3,9,7,2,-2,-1,1,3,-3,-9,-8,-1,2,1,-1,9,-9,-27,-22,-4,6,2,-2,-5,2,10,4,8,-4,-1,2,-23,28,79,59,4,-22,-8,7,-32,34,99,79,10,-27,-9,9,-10,12,34,28,2,-9,-3,3,12,-10,-32,-23,-5,9,3,-3}, + {1,-1,-2,2,7,9,3,-3,-1,1,2,-1,-8,-9,-3,3,-2,2,6,-4,-22,-27,-9,9,2,-1,-4,8,4,10,2,-5,7,-8,-22,4,59,79,28,-23,9,-9,-27,10,79,99,34,-32,3,-3,-9,2,28,34,12,-10,-3,3,9,-5,-23,-32,-10,12}, + {0,0,0,0,-1,0,6,12,0,0,-1,0,2,1,-6,-14,0,-1,-2,1,6,1,-19,-39,-1,0,1,-2,-1,4,10,17,-2,2,6,-1,-16,-15,39,93,-2,2,7,-3,-21,-8,62,132,-1,1,3,-1,-8,-3,21,45,1,-1,-2,1,5,3,-20,-42}, + {-3,-2,0,0,0,0,0,0,4,2,0,-1,0,0,0,0,10,5,-1,-2,0,0,0,0,-4,-3,-1,0,1,0,0,0,-25,-10,5,5,0,-2,-1,0,-16,-9,-2,5,-1,-1,0,0,75,33,-9,-10,-3,5,2,-2,166,75,-16,-25,-4,10,4,-3}, + {1,-1,-2,-2,-1,0,0,0,-1,1,2,2,0,-1,0,0,-2,3,7,6,1,-2,-1,0,1,-1,-3,-1,-2,1,0,0,5,-8,-21,-16,-1,6,2,-1,3,-3,-8,-15,4,1,1,0,-20,21,62,39,10,-19,-6,6,-42,45,132,93,17,-39,-14,12}, + {0,0,0,-1,-2,-2,-1,1,0,0,-1,0,2,2,1,-1,0,-1,-2,1,6,7,3,-2,0,0,1,-2,-1,-3,-1,1,-1,2,6,-1,-16,-21,-8,5,0,1,1,4,-15,-8,-3,3,6,-6,-19,10,39,62,21,-20,12,-14,-39,17,93,132,45,-42}, + {0,0,0,0,0,0,-2,-3,0,0,0,0,-1,0,2,4,0,0,0,0,-2,-1,5,10,0,0,0,1,0,-1,-3,-4,0,-1,-2,0,5,5,-10,-25,0,0,-1,-1,5,-2,-9,-16,-2,2,5,-3,-10,-9,33,75,-3,4,10,-4,-25,-16,75,166}, +}; + +static inline int astc_round(double x) { return (int)(x >= 0 ? x + 0.5 : x - 0.5); } + +/* Farthest RGB pair over 64 texels. */ +static inline void +astc_rgb_endpoints64(const uint8_t texels[256], int *ai, int *bi) +{ + long best = -1; + *ai = 0; *bi = 0; + for (int i = 0; i < 64; i++) + for (int j = i + 1; j < 64; j++) { + long d2 = 0; + for (int c = 0; c < 3; c++) { + long dc = (long)texels[i * 4 + c] - texels[j * 4 + c]; + d2 += dc * dc; + } + if (d2 > best) { best = d2; *ai = i; *bi = j; } + } +} + +static inline void +astc_encode_rgb_8x8(const uint8_t texels[256], uint8_t out[16]) +{ + memset(out, 0, 16); + int ai, bi; + astc_rgb_endpoints64(texels, &ai, &bi); + const uint8_t *pa = &texels[ai * 4], *pb = &texels[bi * 4]; + int sa = pa[0] + pa[1] + pa[2], sb = pb[0] + pb[1] + pb[2]; + const uint8_t *lo = (sb >= sa) ? pa : pb, *hi = (sb >= sa) ? pb : pa; + int e0[3] = { lo[0], lo[1], lo[2] }, e1[3] = { hi[0], hi[1], hi[2] }; + + astc_set_bits(out, 0, 11, 0x53); + astc_set_bits(out, 13, 4, 8); + astc_set_bits(out, 17 + 0, 8, e0[0]); astc_set_bits(out, 17 + 8, 8, e1[0]); + astc_set_bits(out, 17 + 16, 8, e0[1]); astc_set_bits(out, 17 + 24, 8, e1[1]); + astc_set_bits(out, 17 + 32, 8, e0[2]); astc_set_bits(out, 17 + 40, 8, e1[2]); + + int dir[3]; long dlen2 = 0; + for (int c = 0; c < 3; c++) { dir[c] = e1[c] - e0[c]; dlen2 += (long)dir[c] * dir[c]; } + + double ideal[64]; + for (int t = 0; t < 64; t++) { + double w; + if (dlen2 == 0) w = 0; + else { + long dot = 0; + for (int c = 0; c < 3; c++) dot += (long)(texels[t * 4 + c] - e0[c]) * dir[c]; + double f = (double)dot / (double)dlen2; + if (f < 0) f = 0; if (f > 1) f = 1; + w = f * 7.0; + } + ideal[t] = w; + } + for (int g = 0; g < 16; g++) { + double a = 0; + for (int t = 0; t < 64; t++) a += astc_pinv8[g][t] * ideal[t]; + int q = astc_round(a / 256.0); + if (q < 0) q = 0; if (q > 7) q = 7; + astc_set_bits(out, 128 - (g + 1) * 3, 3, astc_reverse_bits((uint32_t)q, 3)); + } +} + +static inline void +astc_encode_rgba_8x8(const uint8_t texels[256], uint8_t out[16]) +{ + memset(out, 0, 16); + astc_set_bits(out, 0, 11, 0x442); + astc_set_bits(out, 13, 4, 12); + int ai, bi; + astc_rgb_endpoints64(texels, &ai, &bi); + const uint8_t *pa = &texels[ai * 4], *pb = &texels[bi * 4]; + int sa = pa[0] + pa[1] + pa[2], sb = pb[0] + pb[1] + pb[2]; + const uint8_t *lo = (sb >= sa) ? pa : pb, *hi = (sb >= sa) ? pb : pa; + int amin = 255, amax = 0; + for (int i = 0; i < 64; i++) { int a = texels[i * 4 + 3]; if (a < amin) amin = a; if (a > amax) amax = a; } + int e0[4] = { lo[0], lo[1], lo[2], amin }, e1[4] = { hi[0], hi[1], hi[2], amax }; + + int q[8] = { + astc_quantize_ce(e0[0]), astc_quantize_ce(e1[0]), + astc_quantize_ce(e0[1]), astc_quantize_ce(e1[1]), + astc_quantize_ce(e0[2]), astc_quantize_ce(e1[2]), + astc_quantize_ce(e0[3]), astc_quantize_ce(e1[3]), + }; + int s0 = astc_ce_unq[q[0]] + astc_ce_unq[q[2]] + astc_ce_unq[q[4]]; + int s1 = astc_ce_unq[q[1]] + astc_ce_unq[q[3]] + astc_ce_unq[q[5]]; + int swap = s1 < s0; + if (swap) + for (int k = 0; k < 8; k += 2) { int tmp = q[k]; q[k] = q[k + 1]; q[k + 1] = tmp; } + astc_write_trit_endpoints(out, q); + astc_set_bits(out, 62, 2, 3); + + int dir[3]; long dlen2 = 0; + for (int c = 0; c < 3; c++) { dir[c] = e1[c] - e0[c]; dlen2 += (long)dir[c] * dir[c]; } + int arange = amax - amin; + + double id0[64], id1[64]; + for (int t = 0; t < 64; t++) { + double w0; + if (dlen2 == 0) w0 = 0; + else { + long dot = 0; + for (int c = 0; c < 3; c++) dot += (long)(texels[t * 4 + c] - e0[c]) * dir[c]; + double f = (double)dot / (double)dlen2; + if (f < 0) f = 0; if (f > 1) f = 1; + w0 = f * 3.0; + } + double w1; + if (arange == 0) w1 = 0; + else { + double f = (double)(texels[t * 4 + 3] - amin) / (double)arange; + if (f < 0) f = 0; if (f > 1) f = 1; + w1 = f * 3.0; + } + if (swap) { w0 = 3.0 - w0; w1 = 3.0 - w1; } + id0[t] = w0; id1[t] = w1; + } + for (int g = 0; g < 16; g++) { + double a0 = 0, a1 = 0; + for (int t = 0; t < 64; t++) { a0 += astc_pinv8[g][t] * id0[t]; a1 += astc_pinv8[g][t] * id1[t]; } + int q0 = astc_round(a0 / 256.0), q1 = astc_round(a1 / 256.0); + if (q0 < 0) q0 = 0; if (q0 > 3) q0 = 3; + if (q1 < 0) q1 = 0; if (q1 > 3) q1 = 3; + astc_set_bits(out, 128 - (2 * g + 1) * 2, 2, astc_reverse_bits((uint32_t)q0, 2)); + astc_set_bits(out, 128 - (2 * g + 2) * 2, 2, astc_reverse_bits((uint32_t)q1, 2)); + } +} + +/* Encode an 8x8 RGBA8 block (64 texels, row-major) into a 16-byte ASTC block. */ +static inline void +astc_encode_block_8x8(const uint8_t texels[256], int has_alpha, uint8_t out[16]) +{ + if (has_alpha) + astc_encode_rgba_8x8(texels, out); + else + astc_encode_rgb_8x8(texels, out); +} + +#endif /* WRAPPER_ASTC_H */ diff --git a/src/vulkan/wrapper/wrapper_bcdec.c b/src/vulkan/wrapper/wrapper_bcdec.c index 38d9f1de..bf97088e 100644 --- a/src/vulkan/wrapper/wrapper_bcdec.c +++ b/src/vulkan/wrapper/wrapper_bcdec.c @@ -14,15 +14,84 @@ #define BCDEC_IMPLEMENTATION #include "bcdec.h" +#include "wrapper_astc.h" -#define WRAPPER_CACHE_DIR "/data/data/com.winlator.cmod/files/imagefs/usr/cache" +/* Transcode BCn to ASTC 4x4 (Mali-native, stays compressed) instead of + * decoding to RGBA8 (4-8x larger). Default on; WRAPPER_BCN_ASTC=0 falls back + * to the RGBA decode path. */ +static int +astc_enabled(void) +{ + static int e = -1; + if (e == -1) + e = getenv("WRAPPER_BCN_ASTC") ? atoi(getenv("WRAPPER_BCN_ASTC")) : 1; + return e; +} + +/* ASTC block footprint: 0 = 4x4 (8bpp, crisp), 1 = 8x8 (2bpp, 4x smaller/softer). + * Selected by WRAPPER_ASTC_BLOCK ("4x4" default, "8x8"). */ +static int +astc_block8(void) +{ + static int b = -1; + if (b == -1) { + const char *e = getenv("WRAPPER_ASTC_BLOCK"); + b = (e && strstr(e, "8x8")) ? 1 : 0; + } + return b; +} + +int +is_astc_4x4(VkFormat format) +{ + return format == VK_FORMAT_ASTC_4x4_UNORM_BLOCK || + format == VK_FORMAT_ASTC_4x4_SRGB_BLOCK; +} + +int +is_astc_8x8(VkFormat format) +{ + return format == VK_FORMAT_ASTC_8x8_UNORM_BLOCK || + format == VK_FORMAT_ASTC_8x8_SRGB_BLOCK; +} + +int +is_astc(VkFormat format) +{ + return is_astc_4x4(format) || is_astc_8x8(format); +} + +static int +bcn_has_alpha(VkFormat bcn_format) +{ + switch (bcn_format) { + case VK_FORMAT_BC2_UNORM_BLOCK: + case VK_FORMAT_BC2_SRGB_BLOCK: + case VK_FORMAT_BC3_UNORM_BLOCK: + case VK_FORMAT_BC3_SRGB_BLOCK: + case VK_FORMAT_BC7_UNORM_BLOCK: + case VK_FORMAT_BC7_SRGB_BLOCK: + return 1; + default: + /* BC1 is treated as opaque (bcdec emits alpha=255). */ + return 0; + } +} + +#define WRAPPER_CACHE_DIR "/data/data/app.gamenative/files/imagefs/usr/cache" struct decompression_params { int block_x; + int block_x_src; int block_y_count; int block_y_start; int stride; int texel_size; + int astc; + int astc8; + int bc_bx; /* BC grid width in blocks (astc8 bounds) */ + int bc_by; /* BC grid height in blocks (astc8 bounds) */ + int has_alpha; VkFormat format; char *src; char *dst; @@ -49,54 +118,126 @@ decompression_routine(void *args) { struct decompression_params *params = args; - char *src = params->src; char *dst_base = params->dst; - + int block_size = get_block_size(params->format); + + /* 8x8 ASTC: one block per 2x2 group of BC blocks. Decode the 4 BC blocks into + * an 8x8 RGBA scratch (row stride 32 bytes), then encode one ASTC 8x8 block. */ + if (params->astc8) { + for (int by = 0; by < params->block_y_count; by++) { + int BY = params->block_y_start + by; + for (int BX = 0; BX < params->block_x; BX++) { + unsigned char scratch[256]; + memset(scratch, 0, sizeof(scratch)); + for (int dy = 0; dy < 2; dy++) { + for (int dx = 0; dx < 2; dx++) { + int bcx = 2 * BX + dx, bcy = 2 * BY + dy; + if (bcx >= params->bc_bx || bcy >= params->bc_by) + continue; + char *sblk = params->src + + ((size_t)bcy * params->block_x_src + bcx) * block_size; + unsigned char *dsub = scratch + (dy * 4) * 32 + (dx * 4) * 4; + switch (params->format) { + case VK_FORMAT_BC1_RGB_UNORM_BLOCK: + case VK_FORMAT_BC1_RGB_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: + bcdec_bc1(sblk, dsub, 32); break; + case VK_FORMAT_BC2_SRGB_BLOCK: + case VK_FORMAT_BC2_UNORM_BLOCK: + bcdec_bc2(sblk, dsub, 32); break; + case VK_FORMAT_BC3_UNORM_BLOCK: + case VK_FORMAT_BC3_SRGB_BLOCK: + bcdec_bc3(sblk, dsub, 32); break; + case VK_FORMAT_BC7_SRGB_BLOCK: + case VK_FORMAT_BC7_UNORM_BLOCK: + bcdec_bc7(sblk, dsub, 32); break; + default: break; + } + } + } + astc_encode_block_8x8(scratch, params->has_alpha, + (unsigned char *)dst_base + ((size_t)BY * params->block_x + BX) * 16); + } + } + return NULL; + } + for (int by = 0; by < params->block_y_count; by++) { for (int bx = 0; bx < params->block_x; bx++) { int pixel_x = (bx * 4); int pixel_y = (by + params->block_y_start) * 4; + /* Explicit source addressing using the source row block stride, so a + * padded bufferRowLength does not misalign subsequent rows. */ + char *src = params->src + + ((size_t)by * params->block_x_src + bx) * block_size; + + /* ASTC target: decode the BCn block into a 4x4 RGBA scratch, then + * re-encode it as one ASTC 4x4 block written to the block grid. */ + if (params->astc) { + uint8_t scratch[64]; + switch (params->format) { + case VK_FORMAT_BC1_RGB_UNORM_BLOCK: + case VK_FORMAT_BC1_RGB_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: + bcdec_bc1(src, scratch, 16); + break; + case VK_FORMAT_BC2_SRGB_BLOCK: + case VK_FORMAT_BC2_UNORM_BLOCK: + bcdec_bc2(src, scratch, 16); + break; + case VK_FORMAT_BC3_UNORM_BLOCK: + case VK_FORMAT_BC3_SRGB_BLOCK: + bcdec_bc3(src, scratch, 16); + break; + case VK_FORMAT_BC7_SRGB_BLOCK: + case VK_FORMAT_BC7_UNORM_BLOCK: + bcdec_bc7(src, scratch, 16); + break; + default: + break; + } + int block_index = (by + params->block_y_start) * params->block_x + bx; + astc_encode_block_4x4(scratch, params->has_alpha, + (uint8_t *)dst_base + (size_t)block_index * 16); + continue; + } + char *dst = dst_base + (pixel_y * params->stride) + (pixel_x * params->texel_size); if (!dst || !src) return NULL; - + switch (params->format) { case VK_FORMAT_BC1_RGB_UNORM_BLOCK: case VK_FORMAT_BC1_RGB_SRGB_BLOCK: case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: bcdec_bc1(src, dst, params->stride); - src += BCDEC_BC1_BLOCK_SIZE; break; case VK_FORMAT_BC2_SRGB_BLOCK: case VK_FORMAT_BC2_UNORM_BLOCK: bcdec_bc2(src, dst, params->stride); - src += BCDEC_BC2_BLOCK_SIZE; break; case VK_FORMAT_BC3_UNORM_BLOCK: case VK_FORMAT_BC3_SRGB_BLOCK: bcdec_bc3(src, dst, params->stride); - src += BCDEC_BC3_BLOCK_SIZE; break; case VK_FORMAT_BC4_UNORM_BLOCK: case VK_FORMAT_BC4_SNORM_BLOCK: bcdec_bc4(src, dst, params->stride, params->format == VK_FORMAT_BC4_SNORM_BLOCK); - src += BCDEC_BC4_BLOCK_SIZE; break; case VK_FORMAT_BC5_SNORM_BLOCK: case VK_FORMAT_BC5_UNORM_BLOCK: bcdec_bc5(src, dst, params->stride, params->format == VK_FORMAT_BC5_SNORM_BLOCK); - src += BCDEC_BC5_BLOCK_SIZE; break; case VK_FORMAT_BC6H_SFLOAT_BLOCK: case VK_FORMAT_BC6H_UFLOAT_BLOCK: bcdec_bc6h_half(src, dst, (params->stride / params->texel_size) * 3, params->format == VK_FORMAT_BC6H_SFLOAT_BLOCK); - src += BCDEC_BC6H_BLOCK_SIZE; break; case VK_FORMAT_BC7_SRGB_BLOCK: case VK_FORMAT_BC7_UNORM_BLOCK: bcdec_bc7(src, dst, params->stride); - src += BCDEC_BC7_BLOCK_SIZE; break; default: break; @@ -108,7 +249,7 @@ decompression_routine(void *args) } VkFormat -get_format_for_bcn(VkFormat bcn_format) +get_decode_format_for_bcn(VkFormat bcn_format) { switch(bcn_format) { case VK_FORMAT_BC1_RGB_SRGB_BLOCK: @@ -133,6 +274,47 @@ get_format_for_bcn(VkFormat bcn_format) } } +/* Storage (image) format. For BC1/2/3/7 this is ASTC 4x4 (kept compressed); + * BC4/5/6H stay uncompressed (decoded). */ +VkFormat +get_format_for_bcn(VkFormat bcn_format) +{ + if (astc_enabled()) { + int b8 = astc_block8(); + switch (bcn_format) { + case VK_FORMAT_BC1_RGB_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: + case VK_FORMAT_BC2_SRGB_BLOCK: + case VK_FORMAT_BC3_SRGB_BLOCK: + case VK_FORMAT_BC7_SRGB_BLOCK: + return b8 ? VK_FORMAT_ASTC_8x8_SRGB_BLOCK : VK_FORMAT_ASTC_4x4_SRGB_BLOCK; + case VK_FORMAT_BC1_RGB_UNORM_BLOCK: + case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: + case VK_FORMAT_BC2_UNORM_BLOCK: + case VK_FORMAT_BC3_UNORM_BLOCK: + case VK_FORMAT_BC7_UNORM_BLOCK: + return b8 ? VK_FORMAT_ASTC_8x8_UNORM_BLOCK : VK_FORMAT_ASTC_4x4_UNORM_BLOCK; + default: + break; + } + } + return get_decode_format_for_bcn(bcn_format); +} + +/* Bytes needed to hold the transcoded upload for a w*h mip of this BCn format: + * ASTC block bytes for ASTC targets, else linear decoded size. */ +size_t +bcn_upload_size(VkFormat bcn_format, int w, int h) +{ + VkFormat img = get_format_for_bcn(bcn_format); + if (is_astc_8x8(img)) + return (size_t)((w + 7) / 8) * ((h + 7) / 8) * 16; + if (is_astc_4x4(img)) + return (size_t)((w + 3) / 4) * ((h + 3) / 4) * 16; + return (size_t)w * h * + get_texel_size_for_format(get_decode_format_for_bcn(bcn_format)); +} + int get_texel_size_for_format(VkFormat format) { @@ -191,11 +373,12 @@ is_emulated_bcn(struct wrapper_physical_device *pdev, VkFormat format) } } -void +void decompress_bcn_format(void *srcBuffer, void *dstBuffer, int w, int h, + int src_w, VkFormat format, int offset) { @@ -216,19 +399,27 @@ decompress_bcn_format(void *srcBuffer, if (wrapper_cache_path == NULL) wrapper_cache_path = getenv("WRAPPER_CACHE_PATH") ? getenv("WRAPPER_CACHE_PATH") : WRAPPER_CACHE_DIR; - int texel_size = get_texel_size_for_format(get_format_for_bcn(format)); + int astc = is_astc_4x4(get_format_for_bcn(format)); + int astc8 = is_astc_8x8(get_format_for_bcn(format)); + int has_alpha = bcn_has_alpha(format); + int texel_size = get_texel_size_for_format(get_decode_format_for_bcn(format)); int block_size = get_block_size(format); int block_x = (w + 3) / 4; + /* source row stride in blocks (bufferRowLength may pad rows wider than w) */ + int block_x_src = ((src_w > 0 ? src_w : w) + 3) / 4; int block_y = (h + 3) / 4; + int block_x8 = (w + 7) / 8; + int block_y8 = (h + 7) / 8; int stride = w * texel_size; int compressed_size = (block_x * block_y * block_size); - int uncompressed_size = w * h * texel_size; + int uncompressed_size = astc8 ? (block_x8 * block_y8 * 16) + : (astc ? (block_x * block_y * 16) : (w * h * texel_size)); char *src = srcBuffer + offset; char *dst = dstBuffer; - if (wrapper_mark_bcn) { + if (wrapper_mark_bcn && !astc) { WRAPPER_LOG(bcn, "Filling %dx%d BCn %d texture with custom color", w, h, format); - + for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { dst = dstBuffer + (i * stride) + (j * texel_size); @@ -295,40 +486,80 @@ decompress_bcn_format(void *srcBuffer, return; } - CREATE_FOLDER(WRAPPER_CACHE_DIR, 0700); - - XXH64_hash_t hash = XXH64(src, compressed_size, 0); - char *cache_filename; - asprintf(&cache_filename, "%s/%s_%llu.cache", wrapper_cache_path, get_executable_name(), (unsigned long long)hash); - - if (access(cache_filename, F_OK) == 0 && wrapper_use_bcn_cache) { - FILE *fp = fopen(cache_filename, "rb"); - size_t length = fread(dst, 1, uncompressed_size, fp); - fclose(fp); - if (length == uncompressed_size) { - WRAPPER_LOG(bcn, "Successfully restored texture %s from cache", cache_filename); - free(cache_filename); - return; + /* Optional disk cache of the transcoded output, keyed by a hash of the + * compressed source. Skips decode+encode on subsequent loads. Only touched + * when explicitly enabled, so there is zero overhead by default. */ + char *cache_filename = NULL; + if (wrapper_use_bcn_cache) { + CREATE_FOLDER(wrapper_cache_path, 0700); + XXH64_hash_t hash = XXH64(src, compressed_size, 0); + asprintf(&cache_filename, "%s/%s_%llu.cache", wrapper_cache_path, + get_executable_name(), (unsigned long long)hash); + + if (access(cache_filename, F_OK) == 0) { + FILE *fp = fopen(cache_filename, "rb"); + if (fp) { + size_t length = fread(dst, 1, uncompressed_size, fp); + fclose(fp); + if (length == uncompressed_size) { + WRAPPER_LOG(bcn, "Restored texture %s from cache", cache_filename); + free(cache_filename); + return; + } + unlink(cache_filename); + } } - else { - WRAPPER_LOG(bcn, "Failed to restore texture %s from cache, decompressing from huffer", cache_filename); - unlink(cache_filename); - } - } - - if (wrapper_no_bcn_thread) { - WRAPPER_LOG(bcn, "Decompressing %dx%d BCN %d texture from main thread", + } + + + if (astc8) { + /* 8x8 ASTC: each block covers a 2x2 group of BC blocks (8 = 2*4, aligned). + * Decode the 4 BC blocks into an 8x8 RGBA scratch, then encode one ASTC + * 8x8 block. Threaded over 8x8-block rows. */ + int core_count = sysconf(_SC_NPROCESSORS_CONF); + int num_threads = (block_y8 >= core_count) ? core_count : (block_y8 >= 4 ? 4 : 1); + int rows_per = block_y8 / num_threads, rem = block_y8 % num_threads; + pthread_t *threads = malloc(sizeof(pthread_t) * num_threads); + struct decompression_params *args = malloc(sizeof(struct decompression_params) * num_threads); + int cur = 0; + for (int i = 0; i < num_threads; i++) { + int rows = rows_per + ((i < rem) ? 1 : 0); + args[i].src = src; /* full src; absolute BC addressing */ + args[i].dst = dst; + args[i].block_x = block_x8; /* ASTC 8x8 grid width */ + args[i].block_x_src = block_x_src; /* BC source row stride (blocks) */ + args[i].format = format; + args[i].block_y_count = rows; + args[i].block_y_start = cur; + args[i].texel_size = block_size; /* BC block bytes */ + args[i].bc_bx = block_x; + args[i].bc_by = block_y; + args[i].astc = 0; + args[i].astc8 = 1; + args[i].has_alpha = has_alpha; + pthread_create(&threads[i], NULL, decompression_routine, &args[i]); + cur += rows; + } + for (int i = 0; i < num_threads; i++) pthread_join(threads[i], NULL); + free(threads); + free(args); + } else if (wrapper_no_bcn_thread) { + WRAPPER_LOG(bcn, "Decompressing %dx%d BCN %d texture from main thread", w, h, format); struct decompression_params args[1]; args[0].src = src; args[0].dst = dst; args[0].block_x = block_x; + args[0].block_x_src = block_x_src; args[0].format = format; args[0].block_y_count = block_y; args[0].block_y_start = 0; args[0].stride = stride; args[0].texel_size = texel_size; + args[0].astc = astc; + args[0].astc8 = 0; + args[0].has_alpha = has_alpha; decompression_routine(&args[0]); } else { int core_count = sysconf(_SC_NPROCESSORS_CONF); @@ -352,14 +583,18 @@ decompress_bcn_format(void *srcBuffer, for (int i = 0; i < num_threads; i++) { int rows = rows_per_thread + ((i < rem) ? 1 : 0); - args[i].src = src + (current_row * block_x * block_size); + args[i].src = src + ((size_t)current_row * block_x_src * block_size); args[i].dst = dst; args[i].block_x = block_x; + args[i].block_x_src = block_x_src; args[i].format = format; args[i].block_y_count = rows; args[i].block_y_start = current_row; args[i].stride = stride; args[i].texel_size = texel_size; + args[i].astc = astc; + args[i].astc8 = 0; + args[i].has_alpha = has_alpha; pthread_create(&threads[i], NULL, decompression_routine, &args[i]); current_row += rows; } @@ -372,15 +607,17 @@ decompress_bcn_format(void *srcBuffer, free(args); } - if (access(cache_filename, F_OK) != 0 && wrapper_use_bcn_cache) { + if (wrapper_use_bcn_cache && cache_filename) { FILE *fp = fopen(cache_filename, "wb"); - size_t length = fwrite(dst, 1, uncompressed_size, fp); - fclose(fp); - if (length == uncompressed_size) - WRAPPER_LOG(bcn, "Saved texture %s to cache", cache_filename); - else { - WRAPPER_LOG(bcn, "Failed to save texture %s to cache", cache_filename); - unlink(cache_filename); + if (fp) { + size_t length = fwrite(dst, 1, uncompressed_size, fp); + fclose(fp); + if (length == uncompressed_size) + WRAPPER_LOG(bcn, "Saved texture %s to cache", cache_filename); + else { + WRAPPER_LOG(bcn, "Failed to save texture %s to cache", cache_filename); + unlink(cache_filename); + } } } diff --git a/src/vulkan/wrapper/wrapper_bcdec.h b/src/vulkan/wrapper/wrapper_bcdec.h index d851a361..65e8b24f 100644 --- a/src/vulkan/wrapper/wrapper_bcdec.h +++ b/src/vulkan/wrapper/wrapper_bcdec.h @@ -6,6 +6,21 @@ VkFormat get_format_for_bcn(VkFormat bcn_format); +VkFormat +get_decode_format_for_bcn(VkFormat bcn_format); + +int +is_astc_4x4(VkFormat format); + +int +is_astc_8x8(VkFormat format); + +int +is_astc(VkFormat format); + +size_t +bcn_upload_size(VkFormat bcn_format, int w, int h); + int get_texel_size_for_format(VkFormat format); @@ -17,6 +32,7 @@ decompress_bcn_format(void *srcBuffer, void *dstBuffer, int w, int h, + int src_w, VkFormat format, int offset); diff --git a/src/vulkan/wrapper/wrapper_bcn_spv.h b/src/vulkan/wrapper/wrapper_bcn_spv.h new file mode 100644 index 00000000..947e373b --- /dev/null +++ b/src/vulkan/wrapper/wrapper_bcn_spv.h @@ -0,0 +1,6879 @@ +/* Auto-generated from wrapper_bcn_transcode.comp via glslc. Do not edit. */ +#ifndef WRAPPER_BCN_SPV_H +#define WRAPPER_BCN_SPV_H +#include +static const uint32_t wrapper_bcn_transcode_spv[] = +{0x07230203,0x00010000,0x000d000a,0x0000320c, +0x00000000,0x00020011,0x00000001,0x0006000b, +0x00000001,0x4c534c47,0x6474732e,0x3035342e, +0x00000000,0x0003000e,0x00000000,0x00000001, +0x0006000f,0x00000005,0x00000004,0x6e69616d, +0x00000000,0x00000dfc,0x00060010,0x00000004, +0x00000011,0x00000008,0x00000008,0x00000001, +0x00040047,0x00000066,0x00000006,0x00000004, +0x00040048,0x00000067,0x00000000,0x00000018, +0x00050048,0x00000067,0x00000000,0x00000023, +0x00000000,0x00030047,0x00000067,0x00000003, +0x00040047,0x00000069,0x00000022,0x00000000, +0x00040047,0x00000069,0x00000021,0x00000000, +0x00050048,0x00000db4,0x00000000,0x00000023, +0x00000000,0x00050048,0x00000db4,0x00000001, +0x00000023,0x00000004,0x00050048,0x00000db4, +0x00000002,0x00000023,0x00000008,0x00050048, +0x00000db4,0x00000003,0x00000023,0x0000000c, +0x00050048,0x00000db4,0x00000004,0x00000023, +0x00000010,0x00050048,0x00000db4,0x00000005, +0x00000023,0x00000014,0x00050048,0x00000db4, +0x00000006,0x00000023,0x00000018,0x00050048, +0x00000db4,0x00000007,0x00000023,0x0000001c, +0x00050048,0x00000db4,0x00000008,0x00000023, +0x00000020,0x00030047,0x00000db4,0x00000002, +0x00040047,0x00000dfc,0x0000000b,0x0000001c, +0x00040047,0x00000e8f,0x00000006,0x00000004, +0x00040048,0x00000e90,0x00000000,0x00000019, +0x00050048,0x00000e90,0x00000000,0x00000023, +0x00000000,0x00030047,0x00000e90,0x00000003, +0x00040047,0x00000e92,0x00000022,0x00000000, +0x00040047,0x00000e92,0x00000021,0x00000001, +0x00040047,0x00000ea7,0x0000000b,0x00000019, +0x00020013,0x00000002,0x00030021,0x00000003, +0x00000002,0x00040015,0x00000006,0x00000020, +0x00000000,0x00040020,0x00000007,0x00000007, +0x00000006,0x00040015,0x00000019,0x00000020, +0x00000001,0x00040020,0x0000001a,0x00000007, +0x00000019,0x0004002b,0x00000006,0x00000031, +0x00000008,0x0004001c,0x00000032,0x00000019, +0x00000031,0x00040020,0x00000033,0x00000007, +0x00000032,0x0004002b,0x00000006,0x00000049, +0x00000010,0x0004001c,0x0000004a,0x00000006, +0x00000049,0x0004002b,0x00000006,0x00000054, +0x000000ff,0x0004002b,0x00000006,0x00000058, +0x00000040,0x0004001c,0x00000059,0x00000006, +0x00000058,0x0003001d,0x00000066,0x00000006, +0x0003001e,0x00000067,0x00000066,0x00040020, +0x00000068,0x00000002,0x00000067,0x0004003b, +0x00000068,0x00000069,0x00000002,0x0004002b, +0x00000019,0x0000006a,0x00000000,0x00040020, +0x0000006c,0x00000002,0x00000006,0x0004002b, +0x00000006,0x00000071,0x00000001,0x0004002b, +0x00000006,0x00000077,0x0000ffff,0x0004002b, +0x00000006,0x0000007e,0x0000000b,0x0004002b, +0x00000006,0x00000080,0x0000001f,0x0004002b, +0x00000006,0x00000084,0x00000005,0x0004002b, +0x00000006,0x00000086,0x0000003f,0x0004002b, +0x00000006,0x00000098,0x0000020f,0x0004002b, +0x00000006,0x0000009a,0x00000017,0x0004002b, +0x00000006,0x0000009c,0x00000006,0x0004002b, +0x00000006,0x000000a0,0x00000103,0x0004002b, +0x00000006,0x000000a2,0x00000021,0x0004002b, +0x00000006,0x000000aa,0x00000004,0x0004001c, +0x000000ab,0x00000006,0x000000aa,0x00040020, +0x000000ac,0x00000007,0x000000ab,0x0004002b, +0x00000006,0x000000ae,0xff000000,0x0004002b, +0x00000019,0x000000c4,0x00000001,0x00020014, +0x000000d0,0x0004002b,0x00000006,0x000000d4, +0x00000002,0x0004002b,0x00000006,0x000000d9, +0x0000015f,0x0004002b,0x00000006,0x000000db, +0x0000003d,0x0004002b,0x00000006,0x000000dd, +0x00000007,0x0004002b,0x00000006,0x000000e3, +0x00000acb,0x0004002b,0x00000006,0x000000e5, +0x0000040f,0x0004002b,0x00000019,0x000000ef, +0x00000002,0x0004002b,0x00000019,0x0000010e, +0x00000003,0x0004002b,0x00000006,0x0000011c, +0x0000041d,0x0004002b,0x00000006,0x0000011e, +0x0000007d,0x0004002b,0x00000006,0x00000124, +0x00001031,0x0004002b,0x00000006,0x00000126, +0x000003fb,0x0004002b,0x00000006,0x00000138, +0x00000000,0x0004002b,0x00000006,0x00000147, +0x00000003,0x0004002b,0x00000019,0x00000174, +0x00000040,0x0004002b,0x00000019,0x0000017c, +0x00000020,0x0004002b,0x00000019,0x0000017e, +0x00000006,0x0004002b,0x00000019,0x0000019a, +0x00000008,0x0004002b,0x00000019,0x000001c5, +0x00000007,0x0004002b,0x00000019,0x000001da, +0x00000004,0x0004002b,0x00000019,0x000001dd, +0x00000005,0x0004001c,0x000001fd,0x00000019, +0x000000aa,0x0004001c,0x000001fe,0x000001fd, +0x0000009c,0x00040020,0x000001ff,0x00000007, +0x000001fe,0x000b002c,0x00000032,0x00000203, +0x000001da,0x0000017e,0x000001dd,0x000001c5, +0x000001dd,0x000001c5,0x000001c5,0x000001dd, +0x000b002c,0x00000032,0x00000211,0x0000006a, +0x0000006a,0x0000006a,0x0000006a,0x0000017e, +0x0000019a,0x000001c5,0x000001dd,0x0004002b, +0x00000019,0x0000022f,0x000000cb,0x0004002b, +0x00000019,0x00000315,0x000000ff,0x0004002b, +0x00000019,0x0000034c,0x00000080,0x0004002b, +0x00000006,0x00000354,0x00000400,0x0004001c, +0x00000355,0x00000006,0x00000354,0x0004002b, +0x00000006,0x00000356,0x00000080,0x0004002b, +0x00000006,0x00000357,0x00000081,0x0004002b, +0x00000006,0x00000358,0x00000082,0x0403002c, +0x00000355,0x00000359,0x00000356,0x00000138, +0x00000071,0x00000357,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x000000d4, +0x000000d4,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000357,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000358,0x000000d4, +0x00000071,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x00000071,0x00000356,0x00000138, +0x00000138,0x00000138,0x000000d4,0x00000138, +0x00000138,0x00000071,0x00000358,0x000000d4, +0x00000071,0x00000071,0x000000d4,0x000000d4, +0x00000071,0x00000357,0x00000356,0x000000d4, +0x000000d4,0x00000358,0x00000138,0x00000138, +0x000000d4,0x000000d4,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000071, +0x00000071,0x00000357,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000357,0x00000071, +0x000000d4,0x000000d4,0x00000071,0x00000071, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000071,0x00000357,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x000000d4,0x000000d4,0x00000138,0x00000138, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x000000d4,0x00000358,0x00000138,0x00000138, +0x000000d4,0x000000d4,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000357,0x00000356,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000358,0x000000d4, +0x00000071,0x00000071,0x000000d4,0x000000d4, +0x00000071,0x00000357,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000357,0x00000071, +0x00000071,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000357,0x00000071, +0x00000071,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000357,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x000000d4,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000071,0x000000d4,0x00000138,0x00000138, +0x00000357,0x000000d4,0x00000138,0x00000138, +0x00000071,0x000000d4,0x00000138,0x00000138, +0x00000071,0x00000358,0x00000356,0x00000071, +0x00000071,0x000000d4,0x00000138,0x00000071, +0x00000357,0x000000d4,0x00000138,0x00000071, +0x00000071,0x000000d4,0x00000138,0x00000071, +0x00000071,0x00000358,0x00000356,0x00000071, +0x000000d4,0x000000d4,0x00000138,0x00000357, +0x000000d4,0x000000d4,0x00000138,0x00000071, +0x000000d4,0x000000d4,0x00000138,0x00000071, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000071,0x00000357,0x00000138,0x00000071, +0x00000071,0x000000d4,0x00000071,0x00000071, +0x000000d4,0x000000d4,0x00000071,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000071,0x00000357,0x000000d4,0x00000138, +0x00000138,0x00000071,0x00000358,0x000000d4, +0x00000138,0x00000138,0x000000d4,0x000000d4, +0x000000d4,0x00000138,0x00000356,0x00000138, +0x00000138,0x00000357,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000071, +0x00000071,0x000000d4,0x00000071,0x00000071, +0x000000d4,0x00000358,0x00000356,0x00000071, +0x00000071,0x00000357,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000358,0x00000138, +0x00000138,0x00000071,0x000000d4,0x000000d4, +0x00000138,0x00000138,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000071, +0x000000d4,0x000000d4,0x00000357,0x00000071, +0x000000d4,0x000000d4,0x00000071,0x00000071, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x000000d4,0x00000358,0x00000138,0x00000138, +0x000000d4,0x000000d4,0x00000138,0x00000138, +0x000000d4,0x000000d4,0x00000071,0x00000071, +0x00000071,0x00000357,0x00000356,0x00000071, +0x00000071,0x00000357,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000138,0x000000d4, +0x000000d4,0x000000d4,0x00000138,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000357,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000358,0x000000d4, +0x000000d4,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x00000071,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000357,0x00000071,0x00000138,0x00000071, +0x000000d4,0x000000d4,0x00000138,0x00000071, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000138,0x00000358,0x000000d4, +0x00000357,0x00000138,0x000000d4,0x000000d4, +0x00000071,0x00000138,0x00000356,0x00000071, +0x000000d4,0x00000358,0x00000138,0x00000357, +0x000000d4,0x000000d4,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000356,0x00000138, +0x00000071,0x000000d4,0x00000138,0x00000138, +0x00000071,0x000000d4,0x00000357,0x00000071, +0x000000d4,0x000000d4,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000071, +0x00000071,0x00000138,0x00000071,0x000000d4, +0x00000358,0x00000071,0x00000357,0x000000d4, +0x000000d4,0x00000071,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000071, +0x00000357,0x00000138,0x00000071,0x000000d4, +0x00000358,0x00000071,0x00000071,0x000000d4, +0x000000d4,0x00000071,0x00000356,0x00000138, +0x000000d4,0x000000d4,0x00000071,0x00000071, +0x00000138,0x000000d4,0x00000357,0x00000071, +0x00000138,0x000000d4,0x00000138,0x00000138, +0x000000d4,0x00000358,0x00000356,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000357, +0x00000071,0x00000138,0x000000d4,0x00000138, +0x00000138,0x000000d4,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000071, +0x000000d4,0x000000d4,0x00000138,0x00000071, +0x00000358,0x000000d4,0x00000138,0x00000138, +0x00000071,0x00000357,0x00000356,0x00000138, +0x00000138,0x00000138,0x000000d4,0x00000138, +0x00000138,0x00000138,0x00000358,0x000000d4, +0x00000071,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x00000357,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x000000d4,0x00000357,0x00000071, +0x000000d4,0x000000d4,0x00000071,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x000000d4, +0x000000d4,0x00000358,0x00000138,0x00000138, +0x000000d4,0x000000d4,0x00000138,0x00000138, +0x00000071,0x000000d4,0x00000138,0x00000138, +0x00000071,0x00000357,0x00000356,0x00000138, +0x00000071,0x00000357,0x00000138,0x00000138, +0x00000071,0x000000d4,0x00000138,0x00000138, +0x000000d4,0x000000d4,0x00000138,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000071, +0x000000d4,0x00000138,0x00000138,0x00000357, +0x000000d4,0x00000138,0x00000138,0x00000071, +0x00000358,0x00000138,0x00000138,0x00000071, +0x000000d4,0x00000138,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000357,0x00000071,0x000000d4,0x000000d4, +0x00000358,0x000000d4,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000356,0x00000071, +0x000000d4,0x00000138,0x00000071,0x000000d4, +0x00000138,0x00000071,0x00000358,0x00000138, +0x00000357,0x000000d4,0x00000138,0x00000071, +0x000000d4,0x00000138,0x00000356,0x00000071, +0x000000d4,0x00000138,0x000000d4,0x00000138, +0x00000071,0x000000d4,0x00000357,0x00000358, +0x00000138,0x00000071,0x00000138,0x00000071, +0x000000d4,0x00000138,0x00000356,0x00000138, +0x00000071,0x00000071,0x000000d4,0x000000d4, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000358,0x000000d4,0x00000138,0x00000138, +0x00000071,0x00000357,0x00000356,0x00000138, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000358,0x000000d4,0x000000d4,0x000000d4, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000357,0x00000356,0x00000071, +0x00000138,0x00000357,0x00000138,0x00000071, +0x00000138,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x000000d4,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000358,0x00000071, +0x000000d4,0x00000071,0x000000d4,0x00000071, +0x000000d4,0x00000357,0x00000356,0x00000138, +0x000000d4,0x000000d4,0x00000071,0x00000357, +0x000000d4,0x000000d4,0x00000138,0x00000138, +0x000000d4,0x000000d4,0x00000071,0x00000071, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x000000d4,0x00000358,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x000000d4,0x000000d4,0x00000138,0x00000138, +0x00000071,0x00000357,0x00000356,0x000000d4, +0x000000d4,0x00000138,0x00000071,0x000000d4, +0x00000358,0x00000071,0x00000138,0x000000d4, +0x000000d4,0x00000138,0x00000071,0x000000d4, +0x000000d4,0x00000357,0x00000356,0x00000071, +0x00000138,0x00000071,0x000000d4,0x000000d4, +0x00000358,0x000000d4,0x000000d4,0x000000d4, +0x000000d4,0x000000d4,0x00000138,0x00000071, +0x00000138,0x00000357,0x00000356,0x00000138, +0x00000138,0x00000138,0x000000d4,0x00000071, +0x000000d4,0x00000071,0x00000358,0x00000071, +0x000000d4,0x00000071,0x000000d4,0x00000071, +0x000000d4,0x00000357,0x00000356,0x00000071, +0x00000138,0x00000357,0x00000138,0x00000071, +0x00000138,0x00000071,0x00000138,0x00000071, +0x00000138,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x000000d4, +0x000000d4,0x00000358,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000138,0x000000d4, +0x000000d4,0x000000d4,0x00000138,0x00000071, +0x00000071,0x00000357,0x00000356,0x00000138, +0x00000138,0x000000d4,0x00000071,0x00000357, +0x00000071,0x000000d4,0x00000138,0x00000138, +0x00000138,0x000000d4,0x00000071,0x00000071, +0x00000071,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000138,0x000000d4,0x00000357, +0x00000071,0x000000d4,0x000000d4,0x00000071, +0x00000071,0x000000d4,0x000000d4,0x00000071, +0x00000071,0x00000358,0x00000356,0x000000d4, +0x000000d4,0x000000d4,0x00000138,0x00000357, +0x00000071,0x00000071,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000138,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000138,0x000000d4,0x00000071,0x00000071, +0x00000071,0x000000d4,0x00000357,0x00000071, +0x00000071,0x000000d4,0x00000138,0x00000138, +0x00000138,0x00000358,0x00000356,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000357, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x000000d4,0x00000071, +0x00000357,0x000000d4,0x000000d4,0x00000071, +0x00000071,0x00000358,0x00000356,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000357, +0x00000071,0x00000138,0x000000d4,0x000000d4, +0x000000d4,0x000000d4,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x000000d4,0x000000d4,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000357,0x00000071,0x00000138,0x00000138, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x000000d4,0x000000d4,0x00000071,0x00000071, +0x000000d4,0x000000d4,0x00000357,0x00000071, +0x000000d4,0x000000d4,0x00000138,0x00000138, +0x000000d4,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x000000d4,0x00000357, +0x00000071,0x00000358,0x00000356,0x00000138, +0x00000138,0x00000358,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000138,0x000000d4,0x00000138,0x00000138, +0x00000138,0x00000357,0x00000356,0x000000d4, +0x000000d4,0x000000d4,0x00000071,0x000000d4, +0x000000d4,0x000000d4,0x00000138,0x000000d4, +0x000000d4,0x000000d4,0x00000357,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000071, +0x00000138,0x00000357,0x000000d4,0x000000d4, +0x000000d4,0x000000d4,0x000000d4,0x000000d4, +0x000000d4,0x000000d4,0x000000d4,0x000000d4, +0x000000d4,0x00000358,0x00000356,0x00000071, +0x00000071,0x00000357,0x000000d4,0x00000138, +0x00000071,0x00000071,0x00000358,0x000000d4, +0x00000138,0x00000071,0x000000d4,0x000000d4, +0x000000d4,0x00000138,0x0004002b,0x00000019, +0x0000035b,0x00000010,0x00040020,0x00000362, +0x00000007,0x00000355,0x0403002c,0x00000355, +0x00000368,0x00000356,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000357,0x00000356,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000071,0x00000357, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000357,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000138,0x00000356,0x00000071,0x00000357, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000357, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000138,0x00000357,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000138,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000357,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000357,0x00000356,0x00000138,0x00000357, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000138,0x00000357,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000071,0x00000357, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000356,0x00000138,0x00000357, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000357,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000357,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000071,0x00000357, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000138,0x00000356,0x00000138,0x00000357, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000071,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000138, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000071,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000357, +0x00000138,0x00000138,0x00000071,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000071, +0x00000138,0x00000356,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000357,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000357, +0x00000071,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000071,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000138, +0x00000071,0x00000357,0x00000138,0x00000071, +0x00000138,0x00000071,0x00000138,0x00000071, +0x00000138,0x00000356,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000357,0x00000356,0x00000071,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000071, +0x00000138,0x00000071,0x00000138,0x00000071, +0x00000138,0x00000138,0x00000071,0x00000138, +0x00000357,0x00000356,0x00000071,0x00000357, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000138,0x00000356,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000357,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000357, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000138,0x00000138,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000357, +0x00000071,0x00000071,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000138, +0x00000071,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000071,0x00000357, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000356,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000071, +0x00000357,0x00000356,0x00000071,0x00000071, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000357, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000357, +0x00000138,0x00000138,0x00000071,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000357, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000357, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000138,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000138, +0x00000138,0x00000357,0x00000071,0x00000071, +0x00000138,0x00000138,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000357,0x00000356,0x00000071,0x00000357, +0x00000138,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000357, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000138,0x00000356,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000138, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000357,0x00000356,0x00000071,0x00000071, +0x00000138,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000357,0x00000356,0x00000071,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000138,0x00000138, +0x00000138,0x00000138,0x00000138,0x00000138, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000071,0x00000071,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000138, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000357,0x00000356,0x00000138,0x00000357, +0x00000071,0x00000138,0x00000138,0x00000071, +0x00000071,0x00000071,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000138,0x00000138, +0x00000138,0x00000356,0x00000138,0x00000357, +0x00000138,0x00000138,0x00000138,0x00000071, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000138,0x00000071,0x00000071,0x00000071, +0x00000138,0x00000356,0x00000071,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000138, +0x00000138,0x00000138,0x00000071,0x00000071, +0x00000071,0x00000138,0x00000071,0x00000071, +0x00000357,0x0004001c,0x0000038b,0x00000019, +0x00000049,0x00040020,0x0000038c,0x00000007, +0x0000038b,0x0004002b,0x00000019,0x000003e6, +0x00000015,0x0004002b,0x00000019,0x000003e7, +0x0000002b,0x0007002c,0x000001fd,0x000003e8, +0x0000006a,0x000003e6,0x000003e7,0x00000174, +0x00040020,0x000003ea,0x00000007,0x000001fd, +0x0004002b,0x00000019,0x000003f4,0x00000009, +0x0004002b,0x00000019,0x000003f5,0x00000012, +0x0004002b,0x00000019,0x000003f6,0x0000001b, +0x0004002b,0x00000019,0x000003f7,0x00000025, +0x0004002b,0x00000019,0x000003f8,0x0000002e, +0x0004002b,0x00000019,0x000003f9,0x00000037, +0x000b002c,0x00000032,0x000003fa,0x0000006a, +0x000003f4,0x000003f5,0x000003f6,0x000003f7, +0x000003f8,0x000003f9,0x00000174,0x0004002b, +0x00000019,0x00000400,0x0000000d,0x0004002b, +0x00000019,0x00000401,0x00000011,0x0004002b, +0x00000019,0x00000402,0x0000001a,0x0004002b, +0x00000019,0x00000403,0x0000001e,0x0004002b, +0x00000019,0x00000404,0x00000022,0x0004002b, +0x00000019,0x00000405,0x00000026,0x0004002b, +0x00000019,0x00000406,0x0000002f,0x0004002b, +0x00000019,0x00000407,0x00000033,0x0004002b, +0x00000019,0x00000408,0x0000003c,0x0013002c, +0x0000038b,0x00000409,0x0000006a,0x000001da, +0x000003f4,0x00000400,0x00000401,0x000003e6, +0x00000402,0x00000403,0x00000404,0x00000405, +0x000003e7,0x00000406,0x00000407,0x000003f9, +0x00000408,0x00000174,0x0004002b,0x00000006, +0x00000512,0x00000018,0x0004002b,0x00000019, +0x00000533,0x0000001f,0x0004002b,0x00000019, +0x00000560,0xffffffff,0x0004001c,0x000005db, +0x00000019,0x00000147,0x00040020,0x000005dc, +0x00000007,0x000005db,0x0004002b,0x00000019, +0x000005f3,0x0000000b,0x0004002b,0x00000006, +0x000005f4,0x00000053,0x0004002b,0x00000019, +0x00000604,0x00000019,0x0004002b,0x00000019, +0x0000060c,0x00000021,0x0004002b,0x00000019, +0x00000614,0x00000029,0x0004002b,0x00000019, +0x0000061c,0x00000031,0x0004002b,0x00000019, +0x00000624,0x00000039,0x0004002b,0x00000006, +0x00000697,0x000000f3,0x0004001c,0x00000698, +0x00000006,0x00000697,0x0004002b,0x00000006, +0x00000699,0x00000009,0x0004002b,0x00000006, +0x0000069a,0x0000000a,0x0004002b,0x00000006, +0x0000069b,0x00000011,0x0004002b,0x00000006, +0x0000069c,0x00000012,0x0004002b,0x00000006, +0x0000069d,0x00000014,0x0004002b,0x00000006, +0x0000069e,0x00000015,0x0004002b,0x00000006, +0x0000069f,0x00000016,0x0004002b,0x00000006, +0x000006a0,0x00000019,0x0004002b,0x00000006, +0x000006a1,0x0000001a,0x0004002b,0x00000006, +0x000006a2,0x00000013,0x0004002b,0x00000006, +0x000006a3,0x0000001b,0x0004002b,0x00000006, +0x000006a4,0x0000000c,0x0004002b,0x00000006, +0x000006a5,0x0000000d,0x0004002b,0x00000006, +0x000006a6,0x0000000e,0x0004002b,0x00000006, +0x000006a7,0x00000020,0x0004002b,0x00000006, +0x000006a8,0x00000022,0x0004002b,0x00000006, +0x000006a9,0x00000024,0x0004002b,0x00000006, +0x000006aa,0x00000025,0x0004002b,0x00000006, +0x000006ab,0x00000026,0x0004002b,0x00000006, +0x000006ac,0x00000028,0x0004002b,0x00000006, +0x000006ad,0x00000029,0x0004002b,0x00000006, +0x000006ae,0x0000002a,0x0004002b,0x00000006, +0x000006af,0x00000030,0x0004002b,0x00000006, +0x000006b0,0x00000031,0x0004002b,0x00000006, +0x000006b1,0x00000032,0x0004002b,0x00000006, +0x000006b2,0x00000034,0x0004002b,0x00000006, +0x000006b3,0x00000035,0x0004002b,0x00000006, +0x000006b4,0x00000036,0x0004002b,0x00000006, +0x000006b5,0x00000038,0x0004002b,0x00000006, +0x000006b6,0x00000039,0x0004002b,0x00000006, +0x000006b7,0x0000003a,0x0004002b,0x00000006, +0x000006b8,0x00000023,0x0004002b,0x00000006, +0x000006b9,0x00000027,0x0004002b,0x00000006, +0x000006ba,0x0000002b,0x0004002b,0x00000006, +0x000006bb,0x00000033,0x0004002b,0x00000006, +0x000006bc,0x00000037,0x0004002b,0x00000006, +0x000006bd,0x0000003b,0x0004002b,0x00000006, +0x000006be,0x0000002c,0x0004002b,0x00000006, +0x000006bf,0x0000002d,0x0004002b,0x00000006, +0x000006c0,0x0000002e,0x0004002b,0x00000006, +0x000006c1,0x00000041,0x0004002b,0x00000006, +0x000006c2,0x00000042,0x0004002b,0x00000006, +0x000006c3,0x00000044,0x0004002b,0x00000006, +0x000006c4,0x00000045,0x0004002b,0x00000006, +0x000006c5,0x00000046,0x0004002b,0x00000006, +0x000006c6,0x00000048,0x0004002b,0x00000006, +0x000006c7,0x00000049,0x0004002b,0x00000006, +0x000006c8,0x0000004a,0x0004002b,0x00000006, +0x000006c9,0x00000050,0x0004002b,0x00000006, +0x000006ca,0x00000051,0x0004002b,0x00000006, +0x000006cb,0x00000052,0x0004002b,0x00000006, +0x000006cc,0x00000054,0x0004002b,0x00000006, +0x000006cd,0x00000055,0x0004002b,0x00000006, +0x000006ce,0x00000056,0x0004002b,0x00000006, +0x000006cf,0x00000058,0x0004002b,0x00000006, +0x000006d0,0x00000059,0x0004002b,0x00000006, +0x000006d1,0x0000005a,0x0004002b,0x00000006, +0x000006d2,0x00000043,0x0004002b,0x00000006, +0x000006d3,0x00000047,0x0004002b,0x00000006, +0x000006d4,0x0000004b,0x0004002b,0x00000006, +0x000006d5,0x00000057,0x0004002b,0x00000006, +0x000006d6,0x0000005b,0x0004002b,0x00000006, +0x000006d7,0x0000004c,0x0004002b,0x00000006, +0x000006d8,0x0000004d,0x0004002b,0x00000006, +0x000006d9,0x0000004e,0x0004002b,0x00000006, +0x000006da,0x00000084,0x0004002b,0x00000006, +0x000006db,0x00000085,0x0004002b,0x00000006, +0x000006dc,0x00000086,0x0004002b,0x00000006, +0x000006dd,0x00000088,0x0004002b,0x00000006, +0x000006de,0x00000089,0x0004002b,0x00000006, +0x000006df,0x0000008a,0x0004002b,0x00000006, +0x000006e0,0x00000090,0x0004002b,0x00000006, +0x000006e1,0x00000091,0x0004002b,0x00000006, +0x000006e2,0x00000092,0x0004002b,0x00000006, +0x000006e3,0x00000094,0x0004002b,0x00000006, +0x000006e4,0x00000095,0x0004002b,0x00000006, +0x000006e5,0x00000096,0x0004002b,0x00000006, +0x000006e6,0x00000098,0x0004002b,0x00000006, +0x000006e7,0x00000099,0x0004002b,0x00000006, +0x000006e8,0x0000009a,0x0004002b,0x00000006, +0x000006e9,0x00000083,0x0004002b,0x00000006, +0x000006ea,0x00000087,0x0004002b,0x00000006, +0x000006eb,0x0000008b,0x0004002b,0x00000006, +0x000006ec,0x00000093,0x0004002b,0x00000006, +0x000006ed,0x00000097,0x0004002b,0x00000006, +0x000006ee,0x0000009b,0x0004002b,0x00000006, +0x000006ef,0x0000008c,0x0004002b,0x00000006, +0x000006f0,0x0000008d,0x0004002b,0x00000006, +0x000006f1,0x0000008e,0x0004002b,0x00000006, +0x000006f2,0x000000a0,0x0004002b,0x00000006, +0x000006f3,0x000000a1,0x0004002b,0x00000006, +0x000006f4,0x000000a2,0x0004002b,0x00000006, +0x000006f5,0x000000a4,0x0004002b,0x00000006, +0x000006f6,0x000000a5,0x0004002b,0x00000006, +0x000006f7,0x000000a6,0x0004002b,0x00000006, +0x000006f8,0x000000a8,0x0004002b,0x00000006, +0x000006f9,0x000000a9,0x0004002b,0x00000006, +0x000006fa,0x000000aa,0x0004002b,0x00000006, +0x000006fb,0x000000b0,0x0004002b,0x00000006, +0x000006fc,0x000000b1,0x0004002b,0x00000006, +0x000006fd,0x000000b2,0x0004002b,0x00000006, +0x000006fe,0x000000b4,0x0004002b,0x00000006, +0x000006ff,0x000000b5,0x0004002b,0x00000006, +0x00000700,0x000000b6,0x0004002b,0x00000006, +0x00000701,0x000000b8,0x0004002b,0x00000006, +0x00000702,0x000000b9,0x0004002b,0x00000006, +0x00000703,0x000000ba,0x0004002b,0x00000006, +0x00000704,0x000000a3,0x0004002b,0x00000006, +0x00000705,0x000000a7,0x0004002b,0x00000006, +0x00000706,0x000000ab,0x0004002b,0x00000006, +0x00000707,0x000000b3,0x0004002b,0x00000006, +0x00000708,0x000000b7,0x0004002b,0x00000006, +0x00000709,0x000000bb,0x0004002b,0x00000006, +0x0000070a,0x000000ac,0x0004002b,0x00000006, +0x0000070b,0x000000ad,0x0004002b,0x00000006, +0x0000070c,0x000000ae,0x0004002b,0x00000006, +0x0000070d,0x000000c0,0x0004002b,0x00000006, +0x0000070e,0x000000c1,0x0004002b,0x00000006, +0x0000070f,0x000000c2,0x0004002b,0x00000006, +0x00000710,0x000000c4,0x0004002b,0x00000006, +0x00000711,0x000000c5,0x0004002b,0x00000006, +0x00000712,0x000000c6,0x0004002b,0x00000006, +0x00000713,0x000000c8,0x0004002b,0x00000006, +0x00000714,0x000000c9,0x0004002b,0x00000006, +0x00000715,0x000000ca,0x0004002b,0x00000006, +0x00000716,0x000000d0,0x0004002b,0x00000006, +0x00000717,0x000000d1,0x0004002b,0x00000006, +0x00000718,0x000000d2,0x0004002b,0x00000006, +0x00000719,0x000000d4,0x0004002b,0x00000006, +0x0000071a,0x000000d5,0x0004002b,0x00000006, +0x0000071b,0x000000d6,0x0004002b,0x00000006, +0x0000071c,0x000000d8,0x0004002b,0x00000006, +0x0000071d,0x000000d9,0x0004002b,0x00000006, +0x0000071e,0x000000da,0x0004002b,0x00000006, +0x0000071f,0x000000c3,0x0004002b,0x00000006, +0x00000720,0x000000c7,0x0004002b,0x00000006, +0x00000721,0x000000cb,0x0004002b,0x00000006, +0x00000722,0x000000d3,0x0004002b,0x00000006, +0x00000723,0x000000d7,0x0004002b,0x00000006, +0x00000724,0x000000db,0x0004002b,0x00000006, +0x00000725,0x000000cc,0x0004002b,0x00000006, +0x00000726,0x000000cd,0x0004002b,0x00000006, +0x00000727,0x000000ce,0x0004002b,0x00000006, +0x00000728,0x00000060,0x0004002b,0x00000006, +0x00000729,0x00000061,0x0004002b,0x00000006, +0x0000072a,0x00000062,0x0004002b,0x00000006, +0x0000072b,0x00000064,0x0004002b,0x00000006, +0x0000072c,0x00000065,0x0004002b,0x00000006, +0x0000072d,0x00000066,0x0004002b,0x00000006, +0x0000072e,0x00000068,0x0004002b,0x00000006, +0x0000072f,0x00000069,0x0004002b,0x00000006, +0x00000730,0x0000006a,0x0004002b,0x00000006, +0x00000731,0x00000070,0x0004002b,0x00000006, +0x00000732,0x00000071,0x0004002b,0x00000006, +0x00000733,0x00000072,0x0004002b,0x00000006, +0x00000734,0x00000074,0x0004002b,0x00000006, +0x00000735,0x00000075,0x0004002b,0x00000006, +0x00000736,0x00000076,0x0004002b,0x00000006, +0x00000737,0x00000078,0x0004002b,0x00000006, +0x00000738,0x00000079,0x0004002b,0x00000006, +0x00000739,0x0000007a,0x0004002b,0x00000006, +0x0000073a,0x00000063,0x0004002b,0x00000006, +0x0000073b,0x00000067,0x0004002b,0x00000006, +0x0000073c,0x0000006b,0x0004002b,0x00000006, +0x0000073d,0x00000073,0x0004002b,0x00000006, +0x0000073e,0x00000077,0x0004002b,0x00000006, +0x0000073f,0x0000007b,0x0004002b,0x00000006, +0x00000740,0x0000006c,0x0004002b,0x00000006, +0x00000741,0x0000006d,0x0004002b,0x00000006, +0x00000742,0x0000006e,0x0004002b,0x00000006, +0x00000743,0x000000e0,0x0004002b,0x00000006, +0x00000744,0x000000e1,0x0004002b,0x00000006, +0x00000745,0x000000e2,0x0004002b,0x00000006, +0x00000746,0x000000e4,0x0004002b,0x00000006, +0x00000747,0x000000e5,0x0004002b,0x00000006, +0x00000748,0x000000e6,0x0004002b,0x00000006, +0x00000749,0x000000e8,0x0004002b,0x00000006, +0x0000074a,0x000000e9,0x0004002b,0x00000006, +0x0000074b,0x000000ea,0x0004002b,0x00000006, +0x0000074c,0x000000f0,0x0004002b,0x00000006, +0x0000074d,0x000000f1,0x0004002b,0x00000006, +0x0000074e,0x000000f2,0x0004002b,0x00000006, +0x0000074f,0x000000f4,0x0004002b,0x00000006, +0x00000750,0x000000f5,0x0004002b,0x00000006, +0x00000751,0x000000f6,0x0004002b,0x00000006, +0x00000752,0x000000f8,0x0004002b,0x00000006, +0x00000753,0x000000f9,0x0004002b,0x00000006, +0x00000754,0x000000fa,0x0004002b,0x00000006, +0x00000755,0x000000e3,0x0004002b,0x00000006, +0x00000756,0x000000e7,0x0004002b,0x00000006, +0x00000757,0x000000eb,0x0004002b,0x00000006, +0x00000758,0x000000f7,0x0004002b,0x00000006, +0x00000759,0x000000fb,0x0004002b,0x00000006, +0x0000075a,0x000000ec,0x0004002b,0x00000006, +0x0000075b,0x000000ed,0x0004002b,0x00000006, +0x0000075c,0x000000ee,0x0004002b,0x00000006, +0x0000075d,0x0000001c,0x0004002b,0x00000006, +0x0000075e,0x0000001d,0x0004002b,0x00000006, +0x0000075f,0x0000001e,0x0004002b,0x00000006, +0x00000760,0x0000003c,0x0004002b,0x00000006, +0x00000761,0x0000003e,0x0004002b,0x00000006, +0x00000762,0x0000005c,0x0004002b,0x00000006, +0x00000763,0x0000005d,0x0004002b,0x00000006, +0x00000764,0x0000005e,0x0004002b,0x00000006, +0x00000765,0x0000009c,0x0004002b,0x00000006, +0x00000766,0x0000009d,0x0004002b,0x00000006, +0x00000767,0x0000009e,0x0004002b,0x00000006, +0x00000768,0x000000bc,0x0004002b,0x00000006, +0x00000769,0x000000bd,0x0004002b,0x00000006, +0x0000076a,0x000000be,0x0004002b,0x00000006, +0x0000076b,0x000000dc,0x0004002b,0x00000006, +0x0000076c,0x000000dd,0x0004002b,0x00000006, +0x0000076d,0x000000de,0x0004002b,0x00000006, +0x0000076e,0x0000005f,0x0004002b,0x00000006, +0x0000076f,0x0000009f,0x0004002b,0x00000006, +0x00000770,0x000000bf,0x0004002b,0x00000006, +0x00000771,0x000000df,0x0004002b,0x00000006, +0x00000772,0x0000007c,0x0004002b,0x00000006, +0x00000773,0x0000007e,0x00f6002c,0x00000698, +0x00000774,0x00000138,0x00000071,0x000000d4, +0x000000aa,0x00000084,0x0000009c,0x00000031, +0x00000699,0x0000069a,0x00000049,0x0000069b, +0x0000069c,0x0000069d,0x0000069e,0x0000069f, +0x00000512,0x000006a0,0x000006a1,0x00000147, +0x000000dd,0x0000007e,0x000006a2,0x0000009a, +0x000006a3,0x000006a4,0x000006a5,0x000006a6, +0x000006a7,0x000000a2,0x000006a8,0x000006a9, +0x000006aa,0x000006ab,0x000006ac,0x000006ad, +0x000006ae,0x000006af,0x000006b0,0x000006b1, +0x000006b2,0x000006b3,0x000006b4,0x000006b5, +0x000006b6,0x000006b7,0x000006b8,0x000006b9, +0x000006ba,0x000006bb,0x000006bc,0x000006bd, +0x000006be,0x000006bf,0x000006c0,0x00000058, +0x000006c1,0x000006c2,0x000006c3,0x000006c4, +0x000006c5,0x000006c6,0x000006c7,0x000006c8, +0x000006c9,0x000006ca,0x000006cb,0x000006cc, +0x000006cd,0x000006ce,0x000006cf,0x000006d0, +0x000006d1,0x000006d2,0x000006d3,0x000006d4, +0x000005f4,0x000006d5,0x000006d6,0x000006d7, +0x000006d8,0x000006d9,0x00000356,0x00000357, +0x00000358,0x000006da,0x000006db,0x000006dc, +0x000006dd,0x000006de,0x000006df,0x000006e0, +0x000006e1,0x000006e2,0x000006e3,0x000006e4, +0x000006e5,0x000006e6,0x000006e7,0x000006e8, +0x000006e9,0x000006ea,0x000006eb,0x000006ec, +0x000006ed,0x000006ee,0x000006ef,0x000006f0, +0x000006f1,0x000006f2,0x000006f3,0x000006f4, +0x000006f5,0x000006f6,0x000006f7,0x000006f8, +0x000006f9,0x000006fa,0x000006fb,0x000006fc, +0x000006fd,0x000006fe,0x000006ff,0x00000700, +0x00000701,0x00000702,0x00000703,0x00000704, +0x00000705,0x00000706,0x00000707,0x00000708, +0x00000709,0x0000070a,0x0000070b,0x0000070c, +0x0000070d,0x0000070e,0x0000070f,0x00000710, +0x00000711,0x00000712,0x00000713,0x00000714, +0x00000715,0x00000716,0x00000717,0x00000718, +0x00000719,0x0000071a,0x0000071b,0x0000071c, +0x0000071d,0x0000071e,0x0000071f,0x00000720, +0x00000721,0x00000722,0x00000723,0x00000724, +0x00000725,0x00000726,0x00000727,0x00000728, +0x00000729,0x0000072a,0x0000072b,0x0000072c, +0x0000072d,0x0000072e,0x0000072f,0x00000730, +0x00000731,0x00000732,0x00000733,0x00000734, +0x00000735,0x00000736,0x00000737,0x00000738, +0x00000739,0x0000073a,0x0000073b,0x0000073c, +0x0000073d,0x0000073e,0x0000073f,0x00000740, +0x00000741,0x00000742,0x00000743,0x00000744, +0x00000745,0x00000746,0x00000747,0x00000748, +0x00000749,0x0000074a,0x0000074b,0x0000074c, +0x0000074d,0x0000074e,0x0000074f,0x00000750, +0x00000751,0x00000752,0x00000753,0x00000754, +0x00000755,0x00000756,0x00000757,0x00000697, +0x00000758,0x00000759,0x0000075a,0x0000075b, +0x0000075c,0x0000075d,0x0000075e,0x0000075f, +0x00000760,0x000000db,0x00000761,0x00000762, +0x00000763,0x00000764,0x00000765,0x00000766, +0x00000767,0x00000768,0x00000769,0x0000076a, +0x0000076b,0x0000076c,0x0000076d,0x00000080, +0x00000086,0x0000076e,0x0000076f,0x00000770, +0x00000771,0x00000772,0x0000011e,0x00000773, +0x0004002b,0x00000019,0x00000787,0x00000051, +0x00040020,0x0000078d,0x00000007,0x00000698, +0x0004001c,0x0000079b,0x00000019,0x00000084, +0x0004002b,0x00000019,0x0000079c,0x0000000c, +0x0004002b,0x00000019,0x0000079d,0x00000017, +0x0008002c,0x0000079b,0x0000079e,0x0000006a, +0x0000017e,0x0000079c,0x00000401,0x0000079d, +0x00040020,0x000007a0,0x00000007,0x0000079b, +0x0004002b,0x00000019,0x000007a8,0x0000000f, +0x0004002b,0x00000019,0x000007c1,0x0000000a, +0x0004002b,0x00000019,0x000007c2,0x00000016, +0x000b002c,0x00000032,0x000007c3,0x000001da, +0x000001dd,0x000007c1,0x000005f3,0x0000035b, +0x000003e6,0x000007c2,0x000003f6,0x0004002b, +0x00000019,0x000007cf,0x0000002d,0x0004001c, +0x000007d1,0x00000006,0x000006a3,0x001e002c, +0x000007d1,0x000007d2,0x00000138,0x00000071, +0x000000d4,0x000000aa,0x00000084,0x0000009c, +0x00000031,0x00000699,0x0000069a,0x00000049, +0x0000069b,0x0000069c,0x0000069d,0x0000069e, +0x0000069f,0x00000512,0x000006a0,0x000006a1, +0x00000147,0x000000dd,0x0000007e,0x000006a2, +0x0000009a,0x000006a3,0x000006a4,0x000006a5, +0x000006a6,0x00040020,0x000007e0,0x00000007, +0x000007d1,0x0004002b,0x00000006,0x00000822, +0x00000100,0x0004001c,0x00000823,0x00000006, +0x00000822,0x0004002b,0x00000006,0x00000824, +0x0000002f,0x0004002b,0x00000006,0x00000825, +0x0000000f,0x0103002c,0x00000823,0x00000826, +0x00000138,0x00000138,0x00000138,0x00000049, +0x00000049,0x00000049,0x00000049,0x00000049, +0x00000049,0x000006a7,0x000006a7,0x000006a7, +0x000006a7,0x000006a7,0x000000d4,0x000000d4, +0x000000d4,0x000000d4,0x000000d4,0x0000069c, +0x0000069c,0x0000069c,0x0000069c,0x0000069c, +0x0000069c,0x000006a8,0x000006a8,0x000006a8, +0x000006a8,0x000006a8,0x000000aa,0x000000aa, +0x000000aa,0x000000aa,0x000000aa,0x000000aa, +0x0000069d,0x0000069d,0x0000069d,0x0000069d, +0x0000069d,0x000006a9,0x000006a9,0x000006a9, +0x000006a9,0x000006a9,0x0000009c,0x0000009c, +0x0000009c,0x0000009c,0x0000009c,0x0000009c, +0x0000069f,0x0000069f,0x0000069f,0x0000069f, +0x0000069f,0x000006ab,0x000006ab,0x000006ab, +0x000006ab,0x000006ab,0x00000031,0x00000031, +0x00000031,0x00000031,0x00000031,0x00000031, +0x00000512,0x00000512,0x00000512,0x00000512, +0x00000512,0x00000512,0x000006ac,0x000006ac, +0x000006ac,0x000006ac,0x000006ac,0x0000069a, +0x0000069a,0x0000069a,0x0000069a,0x0000069a, +0x000006a1,0x000006a1,0x000006a1,0x000006a1, +0x000006a1,0x000006a1,0x000006ae,0x000006ae, +0x000006ae,0x000006ae,0x000006ae,0x000006a4, +0x000006a4,0x000006a4,0x000006a4,0x000006a4, +0x000006a4,0x0000075d,0x0000075d,0x0000075d, +0x0000075d,0x0000075d,0x000006be,0x000006be, +0x000006be,0x000006be,0x000006be,0x000006a6, +0x000006a6,0x000006a6,0x000006a6,0x000006a6, +0x000006a6,0x0000075f,0x0000075f,0x0000075f, +0x0000075f,0x0000075f,0x000006c0,0x000006c0, +0x000006c0,0x000006c0,0x000006c0,0x000006c0, +0x00000824,0x00000824,0x00000824,0x00000824, +0x00000824,0x00000824,0x00000080,0x00000080, +0x00000080,0x00000080,0x00000080,0x00000825, +0x00000825,0x00000825,0x00000825,0x00000825, +0x00000825,0x000006bf,0x000006bf,0x000006bf, +0x000006bf,0x000006bf,0x0000075e,0x0000075e, +0x0000075e,0x0000075e,0x0000075e,0x000006a5, +0x000006a5,0x000006a5,0x000006a5,0x000006a5, +0x000006a5,0x000006ba,0x000006ba,0x000006ba, +0x000006ba,0x000006ba,0x000006a3,0x000006a3, +0x000006a3,0x000006a3,0x000006a3,0x000006a3, +0x0000007e,0x0000007e,0x0000007e,0x0000007e, +0x0000007e,0x000006ad,0x000006ad,0x000006ad, +0x000006ad,0x000006ad,0x000006a0,0x000006a0, +0x000006a0,0x000006a0,0x000006a0,0x000006a0, +0x00000699,0x00000699,0x00000699,0x00000699, +0x00000699,0x00000699,0x000006b9,0x000006b9, +0x000006b9,0x000006b9,0x000006b9,0x0000009a, +0x0000009a,0x0000009a,0x0000009a,0x0000009a, +0x000000dd,0x000000dd,0x000000dd,0x000000dd, +0x000000dd,0x000000dd,0x000006aa,0x000006aa, +0x000006aa,0x000006aa,0x000006aa,0x0000069e, +0x0000069e,0x0000069e,0x0000069e,0x0000069e, +0x00000084,0x00000084,0x00000084,0x00000084, +0x00000084,0x00000084,0x000006b8,0x000006b8, +0x000006b8,0x000006b8,0x000006b8,0x000006a2, +0x000006a2,0x000006a2,0x000006a2,0x000006a2, +0x000006a2,0x00000147,0x00000147,0x00000147, +0x00000147,0x00000147,0x000000a2,0x000000a2, +0x000000a2,0x000000a2,0x000000a2,0x0000069b, +0x0000069b,0x0000069b,0x0000069b,0x0000069b, +0x0000069b,0x00000071,0x00000071,0x00000071, +0x00040020,0x00000828,0x00000007,0x00000823, +0x0004002b,0x00000006,0x00000833,0x00000442, +0x0004001c,0x0000091d,0x00000006,0x000006af, +0x0004002b,0x00000006,0x0000091e,0x000000ef, +0x0004002b,0x00000006,0x0000091f,0x000000cf, +0x0033002c,0x0000091d,0x00000920,0x00000138, +0x00000054,0x00000049,0x0000091e,0x000006a7, +0x00000771,0x000006af,0x0000091f,0x000006c1, +0x0000076a,0x000006ca,0x0000070c,0x00000729, +0x00000767,0x00000732,0x000006f1,0x00000084, +0x00000754,0x0000069e,0x0000074b,0x000006ab, +0x0000071d,0x000006b4,0x00000714,0x000006c5, +0x00000702,0x000006ce,0x000006f9,0x0000073b, +0x000006e6,0x0000073e,0x000006dd,0x0000007e, +0x0000074f,0x000006a3,0x00000746,0x000006ba, +0x00000719,0x000006bd,0x00000710,0x000006d7, +0x00000707,0x00000762,0x00000704,0x00000740, +0x000006ec,0x00000772,0x000006e9,0x00040020, +0x00000923,0x00000007,0x0000091d,0x0004002b, +0x00000019,0x0000096f,0x0000003e,0x00030016, +0x00000b07,0x00000020,0x0004002b,0x00000b07, +0x00000b0a,0x00000000,0x0004002b,0x00000b07, +0x00000b40,0x3f800000,0x0004002b,0x00000b07, +0x00000b45,0x40e00000,0x0004001c,0x00000b47, +0x00000019,0x00000354,0x0004002b,0x00000019, +0x00000b48,0x000000a6,0x0004002b,0x00000019, +0x00000b49,0x0000004b,0x0004002b,0x00000019, +0x00000b4a,0xfffffff0,0x0004002b,0x00000019, +0x00000b4b,0xffffffe7,0x0004002b,0x00000019, +0x00000b4c,0xfffffffc,0x0004002b,0x00000019, +0x00000b4d,0xfffffffd,0x0004002b,0x00000019, +0x00000b4e,0xfffffff7,0x0004002b,0x00000019, +0x00000b4f,0xfffffff6,0x0004002b,0x00000019, +0x00000b50,0xfffffffe,0x0004002b,0x00000019, +0x00000b51,0xffffffd6,0x0004002b,0x00000019, +0x00000b52,0x00000084,0x0004002b,0x00000019, +0x00000b53,0x0000005d,0x0004002b,0x00000019, +0x00000b54,0xffffffd9,0x0004002b,0x00000019, +0x00000b55,0xfffffff2,0x0004002b,0x00000019, +0x00000b56,0xffffffec,0x0004002b,0x00000019, +0x00000b57,0x00000027,0x0004002b,0x00000019, +0x00000b58,0xffffffed,0x0004002b,0x00000019, +0x00000b59,0xfffffffa,0x0004002b,0x00000019, +0x00000b5a,0xfffffff8,0x0004002b,0x00000019, +0x00000b5b,0xfffffff1,0x0004002b,0x00000019, +0x00000b5c,0xffffffeb,0x0004002b,0x00000019, +0x00000b5d,0xffffffe0,0x0004002b,0x00000019, +0x00000b5e,0xffffffe9,0x0004002b,0x00000019, +0x00000b5f,0xfffffffb,0x0004002b,0x00000019, +0x00000b60,0x0000001c,0x0004002b,0x00000019, +0x00000b61,0x00000063,0x0004002b,0x00000019, +0x00000b62,0x0000004f,0x0004002b,0x00000019, +0x00000b63,0xffffffe5,0x0004002b,0x00000019, +0x00000b64,0x0000003b,0x0004002b,0x00000019, +0x00000b65,0xffffffea,0x0403002c,0x00000b47, +0x00000b66,0x00000b48,0x00000b49,0x00000b4a, +0x00000b4b,0x00000b4c,0x000007c1,0x000001da, +0x00000b4d,0x00000b49,0x0000060c,0x00000b4e, +0x00000b4f,0x00000b4d,0x000001dd,0x000000ef, +0x00000b50,0x00000b4a,0x00000b4e,0x00000b50, +0x000001dd,0x00000560,0x00000560,0x0000006a, +0x0000006a,0x00000b4b,0x00000b4f,0x000001dd, +0x000001dd,0x0000006a,0x00000b50,0x00000560, +0x0000006a,0x00000b4c,0x00000b4d,0x00000560, +0x0000006a,0x000000c4,0x0000006a,0x0000006a, +0x0000006a,0x000007c1,0x000001dd,0x00000560, +0x00000b50,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x000001da,0x000000ef,0x0000006a, +0x00000560,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000b4d,0x00000b50,0x0000006a, +0x0000006a,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000b51,0x000007cf,0x00000b52, +0x00000b53,0x00000401,0x00000b54,0x00000b55, +0x0000079c,0x00000b56,0x000003e6,0x0000096f, +0x00000b57,0x000007c1,0x00000b58,0x00000b59, +0x0000017e,0x0000010e,0x00000b4d,0x00000b5a, +0x00000b5b,0x000001da,0x000000c4,0x000000c4, +0x0000006a,0x000001dd,0x00000b5a,0x00000b5c, +0x00000b4a,0x00000560,0x0000017e,0x000000ef, +0x00000560,0x000000c4,0x00000560,0x00000b4d, +0x00000560,0x00000b50,0x000000c4,0x0000006a, +0x0000006a,0x00000b50,0x0000010e,0x000001c5, +0x0000017e,0x000000c4,0x00000b50,0x00000560, +0x0000006a,0x00000560,0x000000c4,0x000000ef, +0x000000ef,0x0000006a,0x00000560,0x0000006a, +0x0000006a,0x000000c4,0x00000560,0x00000b50, +0x00000b50,0x00000560,0x0000006a,0x0000006a, +0x0000006a,0x0000079c,0x00000b55,0x00000b54, +0x00000401,0x00000b53,0x00000b52,0x000007cf, +0x00000b51,0x0000017e,0x00000b59,0x00000b58, +0x000007c1,0x00000b57,0x0000096f,0x000003e6, +0x00000b56,0x0000006a,0x000000c4,0x000000c4, +0x000001da,0x00000b5b,0x00000b5a,0x00000b4d, +0x0000010e,0x00000560,0x000000ef,0x0000017e, +0x00000560,0x00000b4a,0x00000b5c,0x00000b5a, +0x000001dd,0x0000006a,0x0000006a,0x000000c4, +0x00000b50,0x00000560,0x00000b4d,0x00000560, +0x000000c4,0x0000006a,0x00000560,0x00000b50, +0x000000c4,0x0000017e,0x000001c5,0x0000010e, +0x00000b50,0x0000006a,0x0000006a,0x00000560, +0x0000006a,0x000000ef,0x000000ef,0x000000c4, +0x00000560,0x0000006a,0x0000006a,0x0000006a, +0x00000560,0x00000b50,0x00000b50,0x00000560, +0x000000c4,0x00000b4d,0x000001da,0x000007c1, +0x00000b4c,0x00000b4b,0x00000b4a,0x00000b49, +0x00000b48,0x00000b50,0x000000ef,0x000001dd, +0x00000b4d,0x00000b4f,0x00000b4e,0x0000060c, +0x00000b49,0x0000006a,0x0000006a,0x00000560, +0x00000560,0x000001dd,0x00000b50,0x00000b4e, +0x00000b4a,0x0000006a,0x00000560,0x00000b50, +0x0000006a,0x000001dd,0x000001dd,0x00000b4f, +0x00000b4b,0x0000006a,0x0000006a,0x0000006a, +0x000000c4,0x0000006a,0x00000560,0x00000b4d, +0x00000b4c,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000b50,0x00000560,0x000001dd, +0x000007c1,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000560,0x0000006a,0x000000ef, +0x000001da,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x0000006a,0x0000006a,0x00000b50, +0x00000b4d,0x00000b51,0x00000b56,0x0000010e, +0x000001dd,0x000000c4,0x00000b50,0x00000560, +0x000000c4,0x000007cf,0x000003e6,0x00000b4d, +0x00000b5a,0x00000560,0x0000010e,0x000000c4, +0x00000560,0x00000b52,0x0000096f,0x00000b5a, +0x00000b5c,0x00000b4d,0x000001c5,0x000000ef, +0x00000b50,0x00000b53,0x00000b57,0x00000b5b, +0x00000b4a,0x00000560,0x0000017e,0x000000ef, +0x00000b50,0x00000401,0x000007c1,0x000001da, +0x00000560,0x00000b50,0x000000c4,0x0000006a, +0x00000560,0x00000b54,0x00000b58,0x000000c4, +0x0000017e,0x000000c4,0x00000b50,0x00000560, +0x0000006a,0x00000b55,0x00000b59,0x000000c4, +0x000000ef,0x0000006a,0x00000560,0x0000006a, +0x0000006a,0x0000079c,0x0000017e,0x0000006a, +0x00000560,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x0000079c,0x00000b4f,0x00000b5d, +0x00000b5e,0x00000b5f,0x000003f4,0x0000010e, +0x00000b4d,0x00000b4f,0x0000079c,0x00000404, +0x00000b60,0x000000ef,0x00000b4e,0x00000b4d, +0x0000010e,0x00000b5d,0x00000404,0x00000b61, +0x00000b62,0x000007c1,0x00000b63,0x00000b4e, +0x000003f4,0x00000b5e,0x00000b60,0x00000b62, +0x00000b64,0x000001da,0x00000b65,0x00000b5a, +0x000001c5,0x00000b5f,0x000000ef,0x000007c1, +0x000001da,0x0000019a,0x00000b4c,0x00000560, +0x000000ef,0x000003f4,0x00000b4e,0x00000b63, +0x00000b65,0x00000b4c,0x0000017e,0x000000ef, +0x00000b50,0x0000010e,0x00000b4d,0x00000b4e, +0x00000b5a,0x00000560,0x000000ef,0x000000c4, +0x00000560,0x00000b4d,0x0000010e,0x000003f4, +0x000001c5,0x000000ef,0x00000b50,0x00000560, +0x000000c4,0x00000b4d,0x0000010e,0x000003f4, +0x00000b5f,0x00000b5e,0x00000b5d,0x00000b4f, +0x0000079c,0x0000010e,0x00000b4d,0x00000b4e, +0x000000ef,0x00000b60,0x00000404,0x0000079c, +0x00000b4f,0x000003f4,0x00000b4e,0x00000b63, +0x000007c1,0x00000b62,0x00000b61,0x00000404, +0x00000b5d,0x000001c5,0x00000b5a,0x00000b65, +0x000001da,0x00000b64,0x00000b62,0x00000b60, +0x00000b5e,0x000000ef,0x00000560,0x00000b4c, +0x0000019a,0x000001da,0x000007c1,0x000000ef, +0x00000b5f,0x00000b50,0x000000ef,0x0000017e, +0x00000b4c,0x00000b65,0x00000b63,0x00000b4e, +0x000003f4,0x00000560,0x000000c4,0x000000ef, +0x00000560,0x00000b5a,0x00000b4e,0x00000b4d, +0x0000010e,0x000000c4,0x00000560,0x00000b50, +0x000000ef,0x000001c5,0x000003f4,0x0000010e, +0x00000b4d,0x000000c4,0x00000560,0x00000b50, +0x000000c4,0x000001dd,0x0000010e,0x00000b56, +0x00000b51,0x00000560,0x000000c4,0x0000010e, +0x00000560,0x00000b5a,0x00000b4d,0x000003e6, +0x000007cf,0x00000b50,0x000000ef,0x000001c5, +0x00000b4d,0x00000b5c,0x00000b5a,0x0000096f, +0x00000b52,0x00000b50,0x000000ef,0x0000017e, +0x00000560,0x00000b4a,0x00000b5b,0x00000b57, +0x00000b53,0x00000560,0x0000006a,0x000000c4, +0x00000b50,0x00000560,0x000001da,0x000007c1, +0x00000401,0x0000006a,0x00000560,0x00000b50, +0x000000c4,0x0000017e,0x000000c4,0x00000b58, +0x00000b54,0x0000006a,0x0000006a,0x00000560, +0x0000006a,0x000000ef,0x000000c4,0x00000b59, +0x00000b55,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000560,0x0000006a,0x0000017e, +0x0000079c,0x0000079c,0x0000017e,0x0000006a, +0x00000560,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000b55,0x00000b59,0x000000c4, +0x000000ef,0x0000006a,0x00000560,0x0000006a, +0x0000006a,0x00000b54,0x00000b58,0x000000c4, +0x0000017e,0x000000c4,0x00000b50,0x00000560, +0x0000006a,0x00000401,0x000007c1,0x000001da, +0x00000560,0x00000b50,0x000000c4,0x0000006a, +0x00000560,0x00000b53,0x00000b57,0x00000b5b, +0x00000b4a,0x00000560,0x0000017e,0x000000ef, +0x00000b50,0x00000b52,0x0000096f,0x00000b5a, +0x00000b5c,0x00000b4d,0x000001c5,0x000000ef, +0x00000b50,0x000007cf,0x000003e6,0x00000b4d, +0x00000b5a,0x00000560,0x0000010e,0x000000c4, +0x00000560,0x00000b51,0x00000b56,0x0000010e, +0x000001dd,0x000000c4,0x00000b50,0x00000560, +0x000000c4,0x00000b4d,0x0000010e,0x000003f4, +0x000001c5,0x000000ef,0x00000b50,0x00000560, +0x000000c4,0x0000010e,0x00000b4d,0x00000b4e, +0x00000b5a,0x00000560,0x000000ef,0x000000c4, +0x00000560,0x000003f4,0x00000b4e,0x00000b63, +0x00000b65,0x00000b4c,0x0000017e,0x000000ef, +0x00000b50,0x00000b5f,0x000000ef,0x000007c1, +0x000001da,0x0000019a,0x00000b4c,0x00000560, +0x000000ef,0x00000b5e,0x00000b60,0x00000b62, +0x00000b64,0x000001da,0x00000b65,0x00000b5a, +0x000001c5,0x00000b5d,0x00000404,0x00000b61, +0x00000b62,0x000007c1,0x00000b63,0x00000b4e, +0x000003f4,0x00000b4f,0x0000079c,0x00000404, +0x00000b60,0x000000ef,0x00000b4e,0x00000b4d, +0x0000010e,0x0000079c,0x00000b4f,0x00000b5d, +0x00000b5e,0x00000b5f,0x000003f4,0x0000010e, +0x00000b4d,0x000000c4,0x00000560,0x00000b50, +0x000000ef,0x000001c5,0x000003f4,0x0000010e, +0x00000b4d,0x00000560,0x000000c4,0x000000ef, +0x00000560,0x00000b5a,0x00000b4e,0x00000b4d, +0x0000010e,0x00000b50,0x000000ef,0x0000017e, +0x00000b4c,0x00000b65,0x00000b63,0x00000b4e, +0x000003f4,0x000000ef,0x00000560,0x00000b4c, +0x0000019a,0x000001da,0x000007c1,0x000000ef, +0x00000b5f,0x000001c5,0x00000b5a,0x00000b65, +0x000001da,0x00000b64,0x00000b62,0x00000b60, +0x00000b5e,0x000003f4,0x00000b4e,0x00000b63, +0x000007c1,0x00000b62,0x00000b61,0x00000404, +0x00000b5d,0x0000010e,0x00000b4d,0x00000b4e, +0x000000ef,0x00000b60,0x00000404,0x0000079c, +0x00000b4f,0x00000b4d,0x0000010e,0x000003f4, +0x00000b5f,0x00000b5e,0x00000b5d,0x00000b4f, +0x0000079c,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000560,0x0000006a,0x0000017e, +0x0000079c,0x0000006a,0x0000006a,0x00000560, +0x0000006a,0x000000ef,0x000000c4,0x00000b59, +0x00000b55,0x0000006a,0x00000560,0x00000b50, +0x000000c4,0x0000017e,0x000000c4,0x00000b58, +0x00000b54,0x00000560,0x0000006a,0x000000c4, +0x00000b50,0x00000560,0x000001da,0x000007c1, +0x00000401,0x00000b50,0x000000ef,0x0000017e, +0x00000560,0x00000b4a,0x00000b5b,0x00000b57, +0x00000b53,0x00000b50,0x000000ef,0x000001c5, +0x00000b4d,0x00000b5c,0x00000b5a,0x0000096f, +0x00000b52,0x00000560,0x000000c4,0x0000010e, +0x00000560,0x00000b5a,0x00000b4d,0x000003e6, +0x000007cf,0x000000c4,0x00000560,0x00000b50, +0x000000c4,0x000001dd,0x0000010e,0x00000b56, +0x00000b51,0x00000b4d,0x00000b50,0x0000006a, +0x0000006a,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x000001da,0x000000ef,0x0000006a, +0x00000560,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x000007c1,0x000001dd,0x00000560, +0x00000b50,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000b4c,0x00000b4d,0x00000560, +0x0000006a,0x000000c4,0x0000006a,0x0000006a, +0x0000006a,0x00000b4b,0x00000b4f,0x000001dd, +0x000001dd,0x0000006a,0x00000b50,0x00000560, +0x0000006a,0x00000b4a,0x00000b4e,0x00000b50, +0x000001dd,0x00000560,0x00000560,0x0000006a, +0x0000006a,0x00000b49,0x0000060c,0x00000b4e, +0x00000b4f,0x00000b4d,0x000001dd,0x000000ef, +0x00000b50,0x00000b48,0x00000b49,0x00000b4a, +0x00000b4b,0x00000b4c,0x000007c1,0x000001da, +0x00000b4d,0x000000c4,0x00000560,0x00000b50, +0x00000b50,0x00000560,0x0000006a,0x0000006a, +0x0000006a,0x00000560,0x000000c4,0x000000ef, +0x000000ef,0x0000006a,0x00000560,0x0000006a, +0x0000006a,0x00000b50,0x0000010e,0x000001c5, +0x0000017e,0x000000c4,0x00000b50,0x00000560, +0x0000006a,0x000000c4,0x00000560,0x00000b4d, +0x00000560,0x00000b50,0x000000c4,0x0000006a, +0x0000006a,0x000001dd,0x00000b5a,0x00000b5c, +0x00000b4a,0x00000560,0x0000017e,0x000000ef, +0x00000560,0x0000010e,0x00000b4d,0x00000b5a, +0x00000b5b,0x000001da,0x000000c4,0x000000c4, +0x0000006a,0x00000b56,0x000003e6,0x0000096f, +0x00000b57,0x000007c1,0x00000b58,0x00000b59, +0x0000017e,0x00000b51,0x000007cf,0x00000b52, +0x00000b53,0x00000401,0x00000b54,0x00000b55, +0x0000079c,0x0000006a,0x0000006a,0x0000006a, +0x00000560,0x00000b50,0x00000b50,0x00000560, +0x000000c4,0x0000006a,0x0000006a,0x00000560, +0x0000006a,0x000000ef,0x000000ef,0x000000c4, +0x00000560,0x0000006a,0x00000560,0x00000b50, +0x000000c4,0x0000017e,0x000001c5,0x0000010e, +0x00000b50,0x0000006a,0x0000006a,0x000000c4, +0x00000b50,0x00000560,0x00000b4d,0x00000560, +0x000000c4,0x00000560,0x000000ef,0x0000017e, +0x00000560,0x00000b4a,0x00000b5c,0x00000b5a, +0x000001dd,0x0000006a,0x000000c4,0x000000c4, +0x000001da,0x00000b5b,0x00000b5a,0x00000b4d, +0x0000010e,0x0000017e,0x00000b59,0x00000b58, +0x000007c1,0x00000b57,0x0000096f,0x000003e6, +0x00000b56,0x0000079c,0x00000b55,0x00000b54, +0x00000401,0x00000b53,0x00000b52,0x000007cf, +0x00000b51,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x0000006a,0x0000006a,0x00000b50, +0x00000b4d,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000560,0x0000006a,0x000000ef, +0x000001da,0x0000006a,0x0000006a,0x0000006a, +0x0000006a,0x00000b50,0x00000560,0x000001dd, +0x000007c1,0x0000006a,0x0000006a,0x0000006a, +0x000000c4,0x0000006a,0x00000560,0x00000b4d, +0x00000b4c,0x0000006a,0x00000560,0x00000b50, +0x0000006a,0x000001dd,0x000001dd,0x00000b4f, +0x00000b4b,0x0000006a,0x0000006a,0x00000560, +0x00000560,0x000001dd,0x00000b50,0x00000b4e, +0x00000b4a,0x00000b50,0x000000ef,0x000001dd, +0x00000b4d,0x00000b4f,0x00000b4e,0x0000060c, +0x00000b49,0x00000b4d,0x000001da,0x000007c1, +0x00000b4c,0x00000b4b,0x00000b4a,0x00000b49, +0x00000b48,0x00040020,0x00000b6b,0x00000007, +0x00000b47,0x0004002b,0x00000b07,0x00000b7a, +0x3f000000,0x0004002b,0x00000b07,0x00000d38, +0x40400000,0x000b001e,0x00000db4,0x00000006, +0x00000006,0x00000006,0x00000006,0x00000006, +0x00000006,0x00000006,0x00000006,0x00000006, +0x00040020,0x00000db5,0x00000009,0x00000db4, +0x0004003b,0x00000db5,0x00000db6,0x00000009, +0x00040020,0x00000db7,0x00000009,0x00000006, +0x00040017,0x00000dfa,0x00000006,0x00000003, +0x00040020,0x00000dfb,0x00000001,0x00000dfa, +0x0004003b,0x00000dfb,0x00000dfc,0x00000001, +0x00040020,0x00000dfd,0x00000001,0x00000006, +0x0003001d,0x00000e8f,0x00000006,0x0003001e, +0x00000e90,0x00000e8f,0x00040020,0x00000e91, +0x00000002,0x00000e90,0x0004003b,0x00000e91, +0x00000e92,0x00000002,0x0006002c,0x00000dfa, +0x00000ea7,0x00000031,0x00000031,0x00000071, +0x00040020,0x00002b7a,0x00000007,0x0000004a, +0x00040020,0x00002b7b,0x00000007,0x00000059, +0x0004002b,0x00000b07,0x000031c5,0x3b800000, +0x00050036,0x00000002,0x00000004,0x00000000, +0x00000003,0x000200f8,0x00000005,0x0004003b, +0x000000ac,0x0000052f,0x00000007,0x0004003b, +0x000000ac,0x0000015e,0x00000007,0x0004003b, +0x00002b7b,0x0000005b,0x00000007,0x0004003b, +0x00002b7a,0x0000004c,0x00000007,0x0004003b, +0x000005dc,0x000028b3,0x00000007,0x0004003b, +0x000005dc,0x000028b6,0x00000007,0x0004003b, +0x000005dc,0x000028d3,0x00000007,0x0004003b, +0x0000078d,0x000026c7,0x00000007,0x0004003b, +0x000007a0,0x000026c9,0x00000007,0x0004003b, +0x00000033,0x000026ce,0x00000007,0x0004003b, +0x000007e0,0x000026d3,0x00000007,0x0004003b, +0x000007a0,0x000026d5,0x00000007,0x0004003b, +0x00000033,0x000026da,0x00000007,0x0004003b, +0x00000828,0x000026b6,0x00000007,0x0004003b, +0x00000828,0x000026a7,0x00000007,0x0004003b, +0x00000828,0x00002698,0x00000007,0x0004003b, +0x00000828,0x00002689,0x00000007,0x0004003b, +0x00000828,0x0000267a,0x00000007,0x0004003b, +0x00000828,0x0000266b,0x00000007,0x0004003b, +0x00000828,0x0000265c,0x00000007,0x0004003b, +0x00000828,0x0000264d,0x00000007,0x0004003b, +0x000003ea,0x000023c7,0x00000007,0x0004003b, +0x000003ea,0x000023ce,0x00000007,0x0004003b, +0x00000033,0x000023d5,0x00000007,0x0004003b, +0x00000923,0x000023df,0x00000007,0x0004003b, +0x00000923,0x000023e0,0x00000007,0x0004003b, +0x00000923,0x000023e1,0x00000007,0x0004003b, +0x00000923,0x000023e3,0x00000007,0x0004003b, +0x00000923,0x000023e4,0x00000007,0x0004003b, +0x00000923,0x000023e5,0x00000007,0x0004003b, +0x00000033,0x000023e9,0x00000007,0x0004003b, +0x000005dc,0x000023ef,0x00000007,0x0004003b, +0x000001ff,0x00001e3a,0x00000007,0x0004003b, +0x00000033,0x00001e3b,0x00000007,0x0004003b, +0x00000033,0x00001e3d,0x00000007,0x0004003b, +0x00000033,0x00001e3f,0x00000007,0x0004003b, +0x00000033,0x00001e4f,0x00000007,0x0004003b, +0x00000033,0x00001e51,0x00000007,0x0004003b, +0x00000033,0x00001e52,0x00000007,0x0004003b, +0x00000362,0x00001e5d,0x00000007,0x0004003b, +0x00000362,0x00001e5e,0x00000007,0x0004003b, +0x0000038c,0x00001e61,0x00000007,0x0004003b, +0x00000362,0x00001e68,0x00000007,0x0004003b, +0x00000362,0x00001e69,0x00000007,0x0004003b, +0x000003ea,0x00001e6e,0x00000007,0x0004003b, +0x00000033,0x00001e70,0x00000007,0x0004003b, +0x0000038c,0x00001e71,0x00000007,0x0004003b, +0x000003ea,0x00001e87,0x00000007,0x0004003b, +0x00000033,0x00001e88,0x00000007,0x0004003b, +0x000000ac,0x00001d73,0x00000007,0x0004003b, +0x000005dc,0x00001a7c,0x00000007,0x0004003b, +0x000005dc,0x00001a7f,0x00000007,0x0004003b, +0x000005dc,0x00001a9c,0x00000007,0x0004003b, +0x00000b6b,0x00001aa6,0x00000007,0x0004003b, +0x0000078d,0x00001890,0x00000007,0x0004003b, +0x000007a0,0x00001892,0x00000007,0x0004003b, +0x00000033,0x00001897,0x00000007,0x0004003b, +0x000007e0,0x0000189c,0x00000007,0x0004003b, +0x000007a0,0x0000189e,0x00000007,0x0004003b, +0x00000033,0x000018a3,0x00000007,0x0004003b, +0x00000828,0x0000187f,0x00000007,0x0004003b, +0x00000828,0x00001870,0x00000007,0x0004003b, +0x00000828,0x00001861,0x00000007,0x0004003b, +0x00000828,0x00001852,0x00000007,0x0004003b, +0x00000828,0x00001843,0x00000007,0x0004003b, +0x00000828,0x00001834,0x00000007,0x0004003b, +0x00000828,0x00001825,0x00000007,0x0004003b, +0x00000828,0x00001816,0x00000007,0x0004003b, +0x000003ea,0x00001555,0x00000007,0x0004003b, +0x000003ea,0x0000155c,0x00000007,0x0004003b, +0x00000033,0x00001563,0x00000007,0x0004003b, +0x00000923,0x0000156d,0x00000007,0x0004003b, +0x00000923,0x0000156e,0x00000007,0x0004003b, +0x00000923,0x0000156f,0x00000007,0x0004003b, +0x00000923,0x00001571,0x00000007,0x0004003b, +0x00000923,0x00001572,0x00000007,0x0004003b, +0x00000923,0x00001573,0x00000007,0x0004003b, +0x00000033,0x00001577,0x00000007,0x0004003b, +0x000005dc,0x0000157d,0x00000007,0x0004003b, +0x00000b6b,0x0000158d,0x00000007,0x0004003b, +0x00000b6b,0x0000158e,0x00000007,0x0004003b, +0x000001ff,0x00000fc8,0x00000007,0x0004003b, +0x00000033,0x00000fc9,0x00000007,0x0004003b, +0x00000033,0x00000fcb,0x00000007,0x0004003b, +0x00000033,0x00000fcd,0x00000007,0x0004003b, +0x00000033,0x00000fdd,0x00000007,0x0004003b, +0x00000033,0x00000fdf,0x00000007,0x0004003b, +0x00000033,0x00000fe0,0x00000007,0x0004003b, +0x00000362,0x00000feb,0x00000007,0x0004003b, +0x00000362,0x00000fec,0x00000007,0x0004003b, +0x0000038c,0x00000fef,0x00000007,0x0004003b, +0x00000362,0x00000ff6,0x00000007,0x0004003b, +0x00000362,0x00000ff7,0x00000007,0x0004003b, +0x000003ea,0x00000ffc,0x00000007,0x0004003b, +0x00000033,0x00000ffe,0x00000007,0x0004003b, +0x0000038c,0x00000fff,0x00000007,0x0004003b, +0x000003ea,0x00001015,0x00000007,0x0004003b, +0x00000033,0x00001016,0x00000007,0x0004003b, +0x000000ac,0x00000f01,0x00000007,0x000300f7, +0x00000ea8,0x00000000,0x000300fb,0x00000138, +0x00000ea9,0x000200f8,0x00000ea9,0x00050041, +0x00000dfd,0x00000dfe,0x00000dfc,0x00000138, +0x0004003d,0x00000006,0x00000dff,0x00000dfe, +0x00050041,0x00000dfd,0x00000e01,0x00000dfc, +0x00000071,0x0004003d,0x00000006,0x00000e02, +0x00000e01,0x00050041,0x00000db7,0x00000e04, +0x00000db6,0x0000006a,0x0004003d,0x00000006, +0x00000e05,0x00000e04,0x000500ae,0x000000d0, +0x00000e06,0x00000dff,0x00000e05,0x000400a8, +0x000000d0,0x00000e07,0x00000e06,0x000300f7, +0x00000e09,0x00000000,0x000400fa,0x00000e07, +0x00000e08,0x00000e09,0x000200f8,0x00000e08, +0x00050041,0x00000db7,0x00000e0b,0x00000db6, +0x000000ef,0x0004003d,0x00000006,0x00000e0c, +0x00000e0b,0x000500ae,0x000000d0,0x00000e0d, +0x00000e02,0x00000e0c,0x000200f9,0x00000e09, +0x000200f8,0x00000e09,0x000700f5,0x000000d0, +0x00000e0e,0x00000e06,0x00000ea9,0x00000e0d, +0x00000e08,0x000300f7,0x00000e10,0x00000000, +0x000400fa,0x00000e0e,0x00000e0f,0x00000e10, +0x000200f8,0x00000e0f,0x000200f9,0x00000ea8, +0x000200f8,0x00000e10,0x00050041,0x00000db7, +0x00000e12,0x00000db6,0x0000017e,0x0004003d, +0x00000006,0x00000e13,0x00000e12,0x000500ab, +0x000000d0,0x00000e14,0x00000e13,0x00000138, +0x000300f7,0x00000e16,0x00000000,0x000400fa, +0x00000e14,0x00000e15,0x00000e61,0x000200f8, +0x00000e15,0x000200f9,0x00000e18,0x000200f8, +0x00000e18,0x000700f5,0x00000006,0x00002d86, +0x00000138,0x00000e15,0x00000e22,0x00000e19, +0x000500b0,0x000000d0,0x00000e1e,0x00002d86, +0x00000058,0x000400f6,0x00000e1a,0x00000e19, +0x00000000,0x000400fa,0x00000e1e,0x00000e19, +0x00000e1a,0x000200f8,0x00000e19,0x00050041, +0x00000007,0x00000e20,0x0000005b,0x00002d86, +0x0003003e,0x00000e20,0x00000138,0x00050080, +0x00000006,0x00000e22,0x00002d86,0x000000c4, +0x000200f9,0x00000e18,0x000200f8,0x00000e1a, +0x000200f9,0x00000e24,0x000200f8,0x00000e24, +0x000700f5,0x00000006,0x00002d87,0x00000138, +0x00000e1a,0x00000e58,0x00000e27,0x000500b0, +0x000000d0,0x00000e2a,0x00002d87,0x000000d4, +0x000400f6,0x00000e26,0x00000e27,0x00000000, +0x000400fa,0x00000e2a,0x00000e25,0x00000e26, +0x000200f8,0x00000e25,0x000200f9,0x00000e2c, +0x000200f8,0x00000e2c,0x000700f5,0x00000006, +0x00002eaa,0x00000138,0x00000e25,0x00000e56, +0x00000e2f,0x000500b0,0x000000d0,0x00000e32, +0x00002eaa,0x000000d4,0x000400f6,0x00000e2e, +0x00000e2f,0x00000000,0x000400fa,0x00000e32, +0x00000e2d,0x00000e2e,0x000200f8,0x00000e2d, +0x00050084,0x00000006,0x00000e35,0x000000d4, +0x00000dff,0x00050080,0x00000006,0x00000e37, +0x00000e35,0x00002eaa,0x00050084,0x00000006, +0x00000e3a,0x000000d4,0x00000e02,0x00050080, +0x00000006,0x00000e3c,0x00000e3a,0x00002d87, +0x00050041,0x00000db7,0x00000e3e,0x00000db6, +0x000001c5,0x0004003d,0x00000006,0x00000e3f, +0x00000e3e,0x000500ae,0x000000d0,0x00000e40, +0x00000e37,0x00000e3f,0x000400a8,0x000000d0, +0x00000e41,0x00000e40,0x000300f7,0x00000e43, +0x00000000,0x000400fa,0x00000e41,0x00000e42, +0x00000e43,0x000200f8,0x00000e42,0x00050041, +0x00000db7,0x00000e45,0x00000db6,0x0000019a, +0x0004003d,0x00000006,0x00000e46,0x00000e45, +0x000500ae,0x000000d0,0x00000e47,0x00000e3c, +0x00000e46,0x000200f9,0x00000e43,0x000200f8, +0x00000e43,0x000700f5,0x000000d0,0x00000e48, +0x00000e40,0x00000e2d,0x00000e47,0x00000e42, +0x000300f7,0x00000e4a,0x00000000,0x000400fa, +0x00000e48,0x00000e49,0x00000e4a,0x000200f8, +0x00000e49,0x000200f9,0x00000e2f,0x000200f8, +0x00000e4a,0x00050041,0x00000db7,0x00000eb8, +0x00000db6,0x000001da,0x0004003d,0x00000006, +0x00000eb9,0x00000eb8,0x000500aa,0x000000d0, +0x00000eba,0x00000eb9,0x00000138,0x000600a9, +0x00000006,0x00000ebb,0x00000eba,0x000000d4, +0x000000aa,0x00050041,0x00000db7,0x00000ebc, +0x00000db6,0x0000010e,0x0004003d,0x00000006, +0x00000ebd,0x00000ebc,0x00050041,0x00000db7, +0x00000ebf,0x00000db6,0x000000c4,0x0004003d, +0x00000006,0x00000ec0,0x00000ebf,0x00050084, +0x00000006,0x00000ec1,0x00000e3c,0x00000ec0, +0x00050080,0x00000006,0x00000ec3,0x00000ec1, +0x00000e37,0x00050084,0x00000006,0x00000ec5, +0x00000ec3,0x00000ebb,0x00050080,0x00000006, +0x00000ec6,0x00000ebd,0x00000ec5,0x000300f7, +0x00000ed0,0x00000000,0x000400fa,0x00000eba, +0x00000eca,0x00000ecd,0x000200f8,0x00000eca, +0x00060041,0x0000006c,0x00000f05,0x00000069, +0x0000006a,0x00000ec6,0x0004003d,0x00000006, +0x00000f06,0x00000f05,0x00050080,0x00000006, +0x00000f08,0x00000ec6,0x00000071,0x00060041, +0x0000006c,0x00000f09,0x00000069,0x0000006a, +0x00000f08,0x0004003d,0x00000006,0x00000f0a, +0x00000f09,0x000500c7,0x00000006,0x00000f0c, +0x00000f06,0x00000077,0x000500c2,0x00000006, +0x00000f0e,0x00000f06,0x00000049,0x000500c2, +0x00000006,0x00000f10,0x00000f0c,0x0000007e, +0x000500c7,0x00000006,0x00000f11,0x00000f10, +0x00000080,0x000500c2,0x00000006,0x00000f13, +0x00000f0c,0x00000084,0x000500c7,0x00000006, +0x00000f14,0x00000f13,0x00000086,0x000500c7, +0x00000006,0x00000f16,0x00000f0c,0x00000080, +0x000500c2,0x00000006,0x00000f18,0x00000f0e, +0x0000007e,0x000500c7,0x00000006,0x00000f19, +0x00000f18,0x00000080,0x000500c2,0x00000006, +0x00000f1b,0x00000f0e,0x00000084,0x000500c7, +0x00000006,0x00000f1c,0x00000f1b,0x00000086, +0x000500c7,0x00000006,0x00000f1e,0x00000f0e, +0x00000080,0x00050084,0x00000006,0x00000f20, +0x00000f11,0x00000098,0x00050080,0x00000006, +0x00000f21,0x00000f20,0x0000009a,0x000500c2, +0x00000006,0x00000f22,0x00000f21,0x0000009c, +0x00050084,0x00000006,0x00000f24,0x00000f14, +0x000000a0,0x00050080,0x00000006,0x00000f25, +0x00000f24,0x000000a2,0x000500c2,0x00000006, +0x00000f26,0x00000f25,0x0000009c,0x00050084, +0x00000006,0x00000f28,0x00000f16,0x00000098, +0x00050080,0x00000006,0x00000f29,0x00000f28, +0x0000009a,0x000500c2,0x00000006,0x00000f2a, +0x00000f29,0x0000009c,0x000500c4,0x00000006, +0x00000f2c,0x00000f2a,0x00000049,0x000500c5, +0x00000006,0x00000f2d,0x000000ae,0x00000f2c, +0x000500c4,0x00000006,0x00000f2f,0x00000f26, +0x00000031,0x000500c5,0x00000006,0x00000f30, +0x00000f2d,0x00000f2f,0x000500c5,0x00000006, +0x00000f32,0x00000f30,0x00000f22,0x00050041, +0x00000007,0x00000f33,0x00000f01,0x0000006a, +0x0003003e,0x00000f33,0x00000f32,0x00050084, +0x00000006,0x00000f35,0x00000f19,0x00000098, +0x00050080,0x00000006,0x00000f36,0x00000f35, +0x0000009a,0x000500c2,0x00000006,0x00000f37, +0x00000f36,0x0000009c,0x00050084,0x00000006, +0x00000f39,0x00000f1c,0x000000a0,0x00050080, +0x00000006,0x00000f3a,0x00000f39,0x000000a2, +0x000500c2,0x00000006,0x00000f3b,0x00000f3a, +0x0000009c,0x00050084,0x00000006,0x00000f3d, +0x00000f1e,0x00000098,0x00050080,0x00000006, +0x00000f3e,0x00000f3d,0x0000009a,0x000500c2, +0x00000006,0x00000f3f,0x00000f3e,0x0000009c, +0x000500c4,0x00000006,0x00000f41,0x00000f3f, +0x00000049,0x000500c5,0x00000006,0x00000f42, +0x000000ae,0x00000f41,0x000500c4,0x00000006, +0x00000f44,0x00000f3b,0x00000031,0x000500c5, +0x00000006,0x00000f45,0x00000f42,0x00000f44, +0x000500c5,0x00000006,0x00000f47,0x00000f45, +0x00000f37,0x00050041,0x00000007,0x00000f48, +0x00000f01,0x000000c4,0x0003003e,0x00000f48, +0x00000f47,0x000500ac,0x000000d0,0x00000f4b, +0x00000f0c,0x00000f0e,0x000300f7,0x00000fa6, +0x00000000,0x000400fa,0x00000f4b,0x00000f4c, +0x00000f89,0x000200f8,0x00000f4c,0x00050084, +0x00000006,0x00000f4e,0x000000d4,0x00000f11, +0x00050080,0x00000006,0x00000f50,0x00000f4e, +0x00000f19,0x00050084,0x00000006,0x00000f51, +0x00000f50,0x000000d9,0x00050080,0x00000006, +0x00000f52,0x00000f51,0x000000db,0x000500c2, +0x00000006,0x00000f53,0x00000f52,0x000000dd, +0x00050084,0x00000006,0x00000f55,0x000000d4, +0x00000f14,0x00050080,0x00000006,0x00000f57, +0x00000f55,0x00000f1c,0x00050084,0x00000006, +0x00000f58,0x00000f57,0x000000e3,0x00050080, +0x00000006,0x00000f59,0x00000f58,0x000000e5, +0x000500c2,0x00000006,0x00000f5a,0x00000f59, +0x0000007e,0x00050084,0x00000006,0x00000f5c, +0x000000d4,0x00000f16,0x00050080,0x00000006, +0x00000f5e,0x00000f5c,0x00000f1e,0x00050084, +0x00000006,0x00000f5f,0x00000f5e,0x000000d9, +0x00050080,0x00000006,0x00000f60,0x00000f5f, +0x000000db,0x000500c2,0x00000006,0x00000f61, +0x00000f60,0x000000dd,0x000500c4,0x00000006, +0x00000f63,0x00000f61,0x00000049,0x000500c5, +0x00000006,0x00000f64,0x000000ae,0x00000f63, +0x000500c4,0x00000006,0x00000f66,0x00000f5a, +0x00000031,0x000500c5,0x00000006,0x00000f67, +0x00000f64,0x00000f66,0x000500c5,0x00000006, +0x00000f69,0x00000f67,0x00000f53,0x00050041, +0x00000007,0x00000f6a,0x00000f01,0x000000ef, +0x0003003e,0x00000f6a,0x00000f69,0x00050084, +0x00000006,0x00000f6d,0x000000d4,0x00000f19, +0x00050080,0x00000006,0x00000f6e,0x00000f11, +0x00000f6d,0x00050084,0x00000006,0x00000f6f, +0x00000f6e,0x000000d9,0x00050080,0x00000006, +0x00000f70,0x00000f6f,0x000000db,0x000500c2, +0x00000006,0x00000f71,0x00000f70,0x000000dd, +0x00050084,0x00000006,0x00000f74,0x000000d4, +0x00000f1c,0x00050080,0x00000006,0x00000f75, +0x00000f14,0x00000f74,0x00050084,0x00000006, +0x00000f76,0x00000f75,0x000000e3,0x00050080, +0x00000006,0x00000f77,0x00000f76,0x000000e5, +0x000500c2,0x00000006,0x00000f78,0x00000f77, +0x0000007e,0x00050084,0x00000006,0x00000f7b, +0x000000d4,0x00000f1e,0x00050080,0x00000006, +0x00000f7c,0x00000f16,0x00000f7b,0x00050084, +0x00000006,0x00000f7d,0x00000f7c,0x000000d9, +0x00050080,0x00000006,0x00000f7e,0x00000f7d, +0x000000db,0x000500c2,0x00000006,0x00000f7f, +0x00000f7e,0x000000dd,0x000500c4,0x00000006, +0x00000f81,0x00000f7f,0x00000049,0x000500c5, +0x00000006,0x00000f82,0x000000ae,0x00000f81, +0x000500c4,0x00000006,0x00000f84,0x00000f78, +0x00000031,0x000500c5,0x00000006,0x00000f85, +0x00000f82,0x00000f84,0x000500c5,0x00000006, +0x00000f87,0x00000f85,0x00000f71,0x00050041, +0x00000007,0x00000f88,0x00000f01,0x0000010e, +0x0003003e,0x00000f88,0x00000f87,0x000200f9, +0x00000fa6,0x000200f8,0x00000f89,0x00050080, +0x00000006,0x00000f8c,0x00000f11,0x00000f19, +0x00050084,0x00000006,0x00000f8d,0x00000f8c, +0x0000011c,0x00050080,0x00000006,0x00000f8e, +0x00000f8d,0x0000011e,0x000500c2,0x00000006, +0x00000f8f,0x00000f8e,0x00000031,0x00050080, +0x00000006,0x00000f92,0x00000f14,0x00000f1c, +0x00050084,0x00000006,0x00000f93,0x00000f92, +0x00000124,0x00050080,0x00000006,0x00000f94, +0x00000f93,0x00000126,0x000500c2,0x00000006, +0x00000f95,0x00000f94,0x0000007e,0x00050080, +0x00000006,0x00000f98,0x00000f16,0x00000f1e, +0x00050084,0x00000006,0x00000f99,0x00000f98, +0x0000011c,0x00050080,0x00000006,0x00000f9a, +0x00000f99,0x0000011e,0x000500c2,0x00000006, +0x00000f9b,0x00000f9a,0x00000031,0x000500c4, +0x00000006,0x00000f9d,0x00000f9b,0x00000049, +0x000500c5,0x00000006,0x00000f9e,0x000000ae, +0x00000f9d,0x000500c4,0x00000006,0x00000fa0, +0x00000f95,0x00000031,0x000500c5,0x00000006, +0x00000fa1,0x00000f9e,0x00000fa0,0x000500c5, +0x00000006,0x00000fa3,0x00000fa1,0x00000f8f, +0x00050041,0x00000007,0x00000fa4,0x00000f01, +0x000000ef,0x0003003e,0x00000fa4,0x00000fa3, +0x00050041,0x00000007,0x00000fa5,0x00000f01, +0x0000010e,0x0003003e,0x00000fa5,0x00000138, +0x000200f9,0x00000fa6,0x000200f8,0x00000fa6, +0x000200f9,0x00000fa7,0x000200f8,0x00000fa7, +0x000700f5,0x00000006,0x00002fe8,0x00000138, +0x00000fa6,0x00000fb7,0x00000fab,0x000500b0, +0x000000d0,0x00000faa,0x00002fe8,0x00000049, +0x000400f6,0x00000fb8,0x00000fab,0x00000000, +0x000400fa,0x00000faa,0x00000fab,0x00000fb8, +0x000200f8,0x00000fab,0x00050084,0x00000006, +0x00000faf,0x00002fe8,0x000000d4,0x000500c2, +0x00000006,0x00000fb0,0x00000f0a,0x00000faf, +0x000500c7,0x00000006,0x00000fb1,0x00000fb0, +0x00000147,0x00050041,0x00000007,0x00000fb2, +0x00000f01,0x00000fb1,0x0004003d,0x00000006, +0x00000fb3,0x00000fb2,0x00050041,0x00000007, +0x00000fb4,0x0000004c,0x00002fe8,0x0003003e, +0x00000fb4,0x00000fb3,0x00050080,0x00000006, +0x00000fb7,0x00002fe8,0x000000c4,0x000200f9, +0x00000fa7,0x000200f8,0x00000fb8,0x000200f9, +0x00000ed0,0x000200f8,0x00000ecd,0x000300f7, +0x00001326,0x00000000,0x000300fb,0x00000138, +0x00001033,0x000200f8,0x00001033,0x000200f9, +0x00001034,0x000200f8,0x00001034,0x000700f5, +0x00000006,0x00002eae,0x00000138,0x00001033, +0x00001042,0x00001038,0x000500b0,0x000000d0, +0x00001037,0x00002eae,0x000000aa,0x000400f6, +0x00001043,0x00001038,0x00000000,0x000400fa, +0x00001037,0x00001038,0x00001043,0x000200f8, +0x00001038,0x00050080,0x00000006,0x0000103c, +0x00000ec6,0x00002eae,0x00060041,0x0000006c, +0x0000103d,0x00000069,0x0000006a,0x0000103c, +0x0004003d,0x00000006,0x0000103e,0x0000103d, +0x00050041,0x00000007,0x0000103f,0x0000015e, +0x00002eae,0x0003003e,0x0000103f,0x0000103e, +0x00050080,0x00000006,0x00001042,0x00002eae, +0x000000c4,0x000200f9,0x00001034,0x000200f8, +0x00001043,0x000200f9,0x00001044,0x000200f8, +0x00001044,0x000700f5,0x00000006,0x00002eb2, +0x00000138,0x00001043,0x00002eb8,0x0000104d, +0x000700f5,0x00000019,0x00002eaf,0x0000006a, +0x00001043,0x0000104f,0x0000104d,0x000400f6, +0x00001051,0x0000104d,0x00000000,0x000200f9, +0x00001045,0x000200f8,0x00001045,0x000500b1, +0x000000d0,0x00001047,0x00002eaf,0x0000019a, +0x000300f7,0x0000104b,0x00000000,0x000400fa, +0x00001047,0x00001048,0x0000104b,0x000200f8, +0x00001048,0x000200f9,0x0000132c,0x000200f8, +0x0000132c,0x000700f5,0x00000006,0x00002eb3, +0x00000138,0x00001048,0x00001340,0x00001331, +0x000700f5,0x00000006,0x00002eb0,0x00000138, +0x00001048,0x00001343,0x00001331,0x000500b0, +0x000000d0,0x00001330,0x00002eb0,0x00000071, +0x000400f6,0x00001344,0x00001331,0x00000000, +0x000400fa,0x00001330,0x00001331,0x00001344, +0x000200f8,0x00001331,0x00050080,0x00000006, +0x00001334,0x00002eb2,0x00002eb0,0x000500c2, +0x00000006,0x00001336,0x00001334,0x00000084, +0x00050041,0x00000007,0x00001337,0x0000015e, +0x00001336,0x0004003d,0x00000006,0x00001338, +0x00001337,0x000500c7,0x00000006,0x0000133a, +0x00001334,0x00000080,0x000500c2,0x00000006, +0x0000133b,0x00001338,0x0000133a,0x000500c7, +0x00000006,0x0000133c,0x0000133b,0x00000071, +0x000500c4,0x00000006,0x0000133e,0x0000133c, +0x00002eb0,0x000500c5,0x00000006,0x00001340, +0x00002eb3,0x0000133e,0x00050080,0x00000006, +0x00001343,0x00002eb0,0x000000c4,0x000200f9, +0x0000132c,0x000200f8,0x00001344,0x00050080, +0x00000006,0x00001347,0x00002eb2,0x00000071, +0x000500aa,0x000000d0,0x0000104a,0x00002eb3, +0x00000138,0x000200f9,0x0000104b,0x000200f8, +0x0000104b,0x000700f5,0x00000006,0x00002eb8, +0x00002eb2,0x00001045,0x00001347,0x00001344, +0x000700f5,0x000000d0,0x0000104c,0x00001047, +0x00001045,0x0000104a,0x00001344,0x000400fa, +0x0000104c,0x0000104d,0x00001051,0x000200f8, +0x0000104d,0x00050080,0x00000019,0x0000104f, +0x00002eaf,0x000000c4,0x000200f9,0x00001044, +0x000200f8,0x00001051,0x000500af,0x000000d0, +0x00001053,0x00002eaf,0x0000019a,0x000300f7, +0x00001060,0x00000000,0x000400fa,0x00001053, +0x00001054,0x00001060,0x000200f8,0x00001054, +0x000200f9,0x00001055,0x000200f8,0x00001055, +0x000700f5,0x00000006,0x00002fe7,0x00000138, +0x00001054,0x0000105e,0x00001059,0x000500b0, +0x000000d0,0x00001058,0x00002fe7,0x00000049, +0x000400f6,0x0000105f,0x00001059,0x00000000, +0x000400fa,0x00001058,0x00001059,0x0000105f, +0x000200f8,0x00001059,0x00050041,0x00000007, +0x0000105b,0x0000004c,0x00002fe7,0x0003003e, +0x0000105b,0x00000138,0x00050080,0x00000006, +0x0000105e,0x00002fe7,0x000000c4,0x000200f9, +0x00001055,0x000200f8,0x0000105f,0x000200f9, +0x00001326,0x000200f8,0x00001060,0x000500aa, +0x000000d0,0x00001062,0x00002eaf,0x0000006a, +0x000500aa,0x000000d0,0x00001064,0x00002eaf, +0x000000c4,0x000500a6,0x000000d0,0x00001065, +0x00001062,0x00001064,0x000500aa,0x000000d0, +0x00001067,0x00002eaf,0x000000ef,0x000500a6, +0x000000d0,0x00001068,0x00001065,0x00001067, +0x000500aa,0x000000d0,0x0000106a,0x00002eaf, +0x0000010e,0x000500a6,0x000000d0,0x0000106b, +0x00001068,0x0000106a,0x000500aa,0x000000d0, +0x0000106d,0x00002eaf,0x000001c5,0x000500a6, +0x000000d0,0x0000106e,0x0000106b,0x0000106d, +0x000300f7,0x0000107b,0x00000000,0x000400fa, +0x0000106e,0x0000106f,0x0000107b,0x000200f8, +0x0000106f,0x000500a6,0x000000d0,0x00001074, +0x00001062,0x00001067,0x000600a9,0x00000019, +0x00001075,0x00001074,0x0000010e,0x000000ef, +0x000600a9,0x00000006,0x00001078,0x00001062, +0x000000aa,0x0000009c,0x000200f9,0x0000134e, +0x000200f8,0x0000134e,0x000700f5,0x00000006, +0x00002eb9,0x00000138,0x0000106f,0x00001362, +0x00001353,0x000700f5,0x00000006,0x00002eb6, +0x00000138,0x0000106f,0x00001365,0x00001353, +0x000500b0,0x000000d0,0x00001352,0x00002eb6, +0x00001078,0x000400f6,0x00001366,0x00001353, +0x00000000,0x000400fa,0x00001352,0x00001353, +0x00001366,0x000200f8,0x00001353,0x00050080, +0x00000006,0x00001356,0x00002eb8,0x00002eb6, +0x000500c2,0x00000006,0x00001358,0x00001356, +0x00000084,0x00050041,0x00000007,0x00001359, +0x0000015e,0x00001358,0x0004003d,0x00000006, +0x0000135a,0x00001359,0x000500c7,0x00000006, +0x0000135c,0x00001356,0x00000080,0x000500c2, +0x00000006,0x0000135d,0x0000135a,0x0000135c, +0x000500c7,0x00000006,0x0000135e,0x0000135d, +0x00000071,0x000500c4,0x00000006,0x00001360, +0x0000135e,0x00002eb6,0x000500c5,0x00000006, +0x00001362,0x00002eb9,0x00001360,0x00050080, +0x00000006,0x00001365,0x00002eb6,0x000000c4, +0x000200f9,0x0000134e,0x000200f8,0x00001366, +0x00050080,0x00000006,0x00001369,0x00002eb8, +0x00001078,0x0004007c,0x00000019,0x0000107a, +0x00002eb9,0x000200f9,0x0000107b,0x000200f8, +0x0000107b,0x000700f5,0x00000019,0x00002f1e, +0x0000006a,0x00001060,0x0000107a,0x00001366, +0x000700f5,0x00000006,0x00002ec0,0x00002eb8, +0x00001060,0x00001369,0x00001366,0x000700f5, +0x00000019,0x00002eba,0x000000c4,0x00001060, +0x00001075,0x00001366,0x00050084,0x00000019, +0x0000107d,0x00002eba,0x000000ef,0x000500aa, +0x000000d0,0x0000107f,0x00002eaf,0x000001da, +0x000500aa,0x000000d0,0x00001081,0x00002eaf, +0x000001dd,0x000500a6,0x000000d0,0x00001082, +0x0000107f,0x00001081,0x000300f7,0x0000108c, +0x00000000,0x000400fa,0x00001082,0x00001083, +0x0000108c,0x000200f8,0x00001083,0x000200f9, +0x00001370,0x000200f8,0x00001370,0x000700f5, +0x00000006,0x00002ec1,0x00000138,0x00001083, +0x00001384,0x00001375,0x000700f5,0x00000006, +0x00002ebe,0x00000138,0x00001083,0x00001387, +0x00001375,0x000500b0,0x000000d0,0x00001374, +0x00002ebe,0x000000d4,0x000400f6,0x00001388, +0x00001375,0x00000000,0x000400fa,0x00001374, +0x00001375,0x00001388,0x000200f8,0x00001375, +0x00050080,0x00000006,0x00001378,0x00002ec0, +0x00002ebe,0x000500c2,0x00000006,0x0000137a, +0x00001378,0x00000084,0x00050041,0x00000007, +0x0000137b,0x0000015e,0x0000137a,0x0004003d, +0x00000006,0x0000137c,0x0000137b,0x000500c7, +0x00000006,0x0000137e,0x00001378,0x00000080, +0x000500c2,0x00000006,0x0000137f,0x0000137c, +0x0000137e,0x000500c7,0x00000006,0x00001380, +0x0000137f,0x00000071,0x000500c4,0x00000006, +0x00001382,0x00001380,0x00002ebe,0x000500c5, +0x00000006,0x00001384,0x00002ec1,0x00001382, +0x00050080,0x00000006,0x00001387,0x00002ebe, +0x000000c4,0x000200f9,0x00001370,0x000200f8, +0x00001388,0x00050080,0x00000006,0x0000138b, +0x00002ec0,0x000000d4,0x0004007c,0x00000019, +0x00001085,0x00002ec1,0x000300f7,0x0000108b, +0x00000000,0x000400fa,0x0000107f,0x00001088, +0x0000108b,0x000200f8,0x00001088,0x000200f9, +0x00001392,0x000200f8,0x00001392,0x000700f5, +0x00000006,0x00002ec5,0x00000138,0x00001088, +0x000013a6,0x00001397,0x000700f5,0x00000006, +0x00002ec3,0x00000138,0x00001088,0x000013a9, +0x00001397,0x000500b0,0x000000d0,0x00001396, +0x00002ec3,0x00000071,0x000400f6,0x000013aa, +0x00001397,0x00000000,0x000400fa,0x00001396, +0x00001397,0x000013aa,0x000200f8,0x00001397, +0x00050080,0x00000006,0x0000139a,0x0000138b, +0x00002ec3,0x000500c2,0x00000006,0x0000139c, +0x0000139a,0x00000084,0x00050041,0x00000007, +0x0000139d,0x0000015e,0x0000139c,0x0004003d, +0x00000006,0x0000139e,0x0000139d,0x000500c7, +0x00000006,0x000013a0,0x0000139a,0x00000080, +0x000500c2,0x00000006,0x000013a1,0x0000139e, +0x000013a0,0x000500c7,0x00000006,0x000013a2, +0x000013a1,0x00000071,0x000500c4,0x00000006, +0x000013a4,0x000013a2,0x00002ec3,0x000500c5, +0x00000006,0x000013a6,0x00002ec5,0x000013a4, +0x00050080,0x00000006,0x000013a9,0x00002ec3, +0x000000c4,0x000200f9,0x00001392,0x000200f8, +0x000013aa,0x00050080,0x00000006,0x000013ad, +0x00002ec0,0x00000147,0x0004007c,0x00000019, +0x0000108a,0x00002ec5,0x000200f9,0x0000108b, +0x000200f8,0x0000108b,0x000700f5,0x00000019, +0x00002f61,0x0000006a,0x00001388,0x0000108a, +0x000013aa,0x000700f5,0x00000006,0x00002ed8, +0x0000138b,0x00001388,0x000013ad,0x000013aa, +0x000200f9,0x0000108c,0x000200f8,0x0000108c, +0x000700f5,0x00000019,0x00002f7d,0x0000006a, +0x0000107b,0x00001085,0x0000108b,0x000700f5, +0x00000019,0x00002f5e,0x0000006a,0x0000107b, +0x00002f61,0x0000108b,0x000700f5,0x00000006, +0x00002ed7,0x00002ec0,0x0000107b,0x00002ed8, +0x0000108b,0x000200f9,0x0000108d,0x000200f8, +0x0000108d,0x000700f5,0x00000006,0x00002ed6, +0x00002ed7,0x0000108c,0x00002fe4,0x000010a5, +0x000700f5,0x00000019,0x00002ec6,0x0000006a, +0x0000108c,0x000010a7,0x000010a5,0x000500b1, +0x000000d0,0x00001090,0x00002ec6,0x0000010e, +0x000400f6,0x000010a8,0x000010a5,0x00000000, +0x000400fa,0x00001090,0x00001091,0x000010a8, +0x000200f8,0x00001091,0x000200f9,0x00001092, +0x000200f8,0x00001092,0x000700f5,0x00000006, +0x00002fe4,0x00002ed6,0x00001091,0x000013cf, +0x000010a1,0x000700f5,0x00000019,0x00002fdf, +0x0000006a,0x00001091,0x000010a3,0x000010a1, +0x000500b1,0x000000d0,0x00001096,0x00002fdf, +0x0000107d,0x000400f6,0x000010a4,0x000010a1, +0x00000000,0x000400fa,0x00001096,0x00001097, +0x000010a4,0x000200f8,0x00001097,0x0003003e, +0x00000fc9,0x00000203,0x00050041,0x0000001a, +0x0000109b,0x00000fc9,0x00002eaf,0x0004003d, +0x00000019,0x0000109c,0x0000109b,0x0004007c, +0x00000006,0x0000109d,0x0000109c,0x000200f9, +0x000013b4,0x000200f8,0x000013b4,0x000700f5, +0x00000006,0x00002fe5,0x00000138,0x00001097, +0x000013c8,0x000013b9,0x000700f5,0x00000006, +0x00002fe2,0x00000138,0x00001097,0x000013cb, +0x000013b9,0x000500b0,0x000000d0,0x000013b8, +0x00002fe2,0x0000109d,0x000400f6,0x000013cc, +0x000013b9,0x00000000,0x000400fa,0x000013b8, +0x000013b9,0x000013cc,0x000200f8,0x000013b9, +0x00050080,0x00000006,0x000013bc,0x00002fe4, +0x00002fe2,0x000500c2,0x00000006,0x000013be, +0x000013bc,0x00000084,0x00050041,0x00000007, +0x000013bf,0x0000015e,0x000013be,0x0004003d, +0x00000006,0x000013c0,0x000013bf,0x000500c7, +0x00000006,0x000013c2,0x000013bc,0x00000080, +0x000500c2,0x00000006,0x000013c3,0x000013c0, +0x000013c2,0x000500c7,0x00000006,0x000013c4, +0x000013c3,0x00000071,0x000500c4,0x00000006, +0x000013c6,0x000013c4,0x00002fe2,0x000500c5, +0x00000006,0x000013c8,0x00002fe5,0x000013c6, +0x00050080,0x00000006,0x000013cb,0x00002fe2, +0x000000c4,0x000200f9,0x000013b4,0x000200f8, +0x000013cc,0x00050080,0x00000006,0x000013cf, +0x00002fe4,0x0000109d,0x0004007c,0x00000019, +0x0000109f,0x00002fe5,0x00060041,0x0000001a, +0x000010a0,0x00000fc8,0x00002fdf,0x00002ec6, +0x0003003e,0x000010a0,0x0000109f,0x000200f9, +0x000010a1,0x000200f8,0x000010a1,0x00050080, +0x00000019,0x000010a3,0x00002fdf,0x000000c4, +0x000200f9,0x00001092,0x000200f8,0x000010a4, +0x000200f9,0x000010a5,0x000200f8,0x000010a5, +0x00050080,0x00000019,0x000010a7,0x00002ec6, +0x000000c4,0x000200f9,0x0000108d,0x000200f8, +0x000010a8,0x0003003e,0x00000fcb,0x00000211, +0x00050041,0x0000001a,0x000010aa,0x00000fcb, +0x00002eaf,0x0004003d,0x00000019,0x000010ab, +0x000010aa,0x000500ad,0x000000d0,0x000010ac, +0x000010ab,0x0000006a,0x000300f7,0x000010c0, +0x00000000,0x000400fa,0x000010ac,0x000010ad, +0x000010c0,0x000200f8,0x000010ad,0x000200f9, +0x000010ae,0x000200f8,0x000010ae,0x000700f5, +0x00000006,0x00002ed9,0x00002ed6,0x000010ad, +0x000013f1,0x000010bc,0x000700f5,0x00000019, +0x00002ecb,0x0000006a,0x000010ad,0x000010be, +0x000010bc,0x000500b1,0x000000d0,0x000010b2, +0x00002ecb,0x0000107d,0x000400f6,0x000010bf, +0x000010bc,0x00000000,0x000400fa,0x000010b2, +0x000010b3,0x000010bf,0x000200f8,0x000010b3, +0x0003003e,0x00000fcd,0x00000211,0x00050041, +0x0000001a,0x000010b6,0x00000fcd,0x00002eaf, +0x0004003d,0x00000019,0x000010b7,0x000010b6, +0x0004007c,0x00000006,0x000010b8,0x000010b7, +0x000200f9,0x000013d6,0x000200f8,0x000013d6, +0x000700f5,0x00000006,0x00002fdd,0x00000138, +0x000010b3,0x000013ea,0x000013db,0x000700f5, +0x00000006,0x00002fdb,0x00000138,0x000010b3, +0x000013ed,0x000013db,0x000500b0,0x000000d0, +0x000013da,0x00002fdb,0x000010b8,0x000400f6, +0x000013ee,0x000013db,0x00000000,0x000400fa, +0x000013da,0x000013db,0x000013ee,0x000200f8, +0x000013db,0x00050080,0x00000006,0x000013de, +0x00002ed9,0x00002fdb,0x000500c2,0x00000006, +0x000013e0,0x000013de,0x00000084,0x00050041, +0x00000007,0x000013e1,0x0000015e,0x000013e0, +0x0004003d,0x00000006,0x000013e2,0x000013e1, +0x000500c7,0x00000006,0x000013e4,0x000013de, +0x00000080,0x000500c2,0x00000006,0x000013e5, +0x000013e2,0x000013e4,0x000500c7,0x00000006, +0x000013e6,0x000013e5,0x00000071,0x000500c4, +0x00000006,0x000013e8,0x000013e6,0x00002fdb, +0x000500c5,0x00000006,0x000013ea,0x00002fdd, +0x000013e8,0x00050080,0x00000006,0x000013ed, +0x00002fdb,0x000000c4,0x000200f9,0x000013d6, +0x000200f8,0x000013ee,0x00050080,0x00000006, +0x000013f1,0x00002ed9,0x000010b8,0x0004007c, +0x00000019,0x000010ba,0x00002fdd,0x00060041, +0x0000001a,0x000010bb,0x00000fc8,0x00002ecb, +0x0000010e,0x0003003e,0x000010bb,0x000010ba, +0x000200f9,0x000010bc,0x000200f8,0x000010bc, +0x00050080,0x00000019,0x000010be,0x00002ecb, +0x000000c4,0x000200f9,0x000010ae,0x000200f8, +0x000010bf,0x000200f9,0x000010c0,0x000200f8, +0x000010c0,0x000700f5,0x00000006,0x00002ed5, +0x00002ed6,0x000010a8,0x00002ed9,0x000010bf, +0x000500a6,0x000000d0,0x000010c8,0x00001065, +0x0000106a,0x000500aa,0x000000d0,0x000010ca, +0x00002eaf,0x0000017e,0x000500a6,0x000000d0, +0x000010cb,0x000010c8,0x000010ca,0x000500a6, +0x000000d0,0x000010ce,0x000010cb,0x0000106d, +0x000300f7,0x00001136,0x00000000,0x000400fa, +0x000010ce,0x000010cf,0x00001136,0x000200f8, +0x000010cf,0x000200f9,0x000010d0,0x000200f8, +0x000010d0,0x000700f5,0x00000019,0x00002ece, +0x0000006a,0x000010cf,0x000010e7,0x000010e5, +0x000500b1,0x000000d0,0x000010d4,0x00002ece, +0x0000107d,0x000400f6,0x000010e8,0x000010e5, +0x00000000,0x000400fa,0x000010d4,0x000010d5, +0x000010e8,0x000200f8,0x000010d5,0x000200f9, +0x000010d6,0x000200f8,0x000010d6,0x000700f5, +0x00000019,0x00002fd9,0x0000006a,0x000010d5, +0x000010e3,0x000010da,0x000500b1,0x000000d0, +0x000010d9,0x00002fd9,0x000001da,0x000400f6, +0x000010e4,0x000010da,0x00000000,0x000400fa, +0x000010d9,0x000010da,0x000010e4,0x000200f8, +0x000010da,0x00060041,0x0000001a,0x000010dd, +0x00000fc8,0x00002ece,0x00002fd9,0x0004003d, +0x00000019,0x000010de,0x000010dd,0x000500c4, +0x00000019,0x000010df,0x000010de,0x000000c4, +0x0003003e,0x000010dd,0x000010df,0x00050080, +0x00000019,0x000010e3,0x00002fd9,0x000000c4, +0x000200f9,0x000010d6,0x000200f8,0x000010e4, +0x000200f9,0x000010e5,0x000200f8,0x000010e5, +0x00050080,0x00000019,0x000010e7,0x00002ece, +0x000000c4,0x000200f9,0x000010d0,0x000200f8, +0x000010e8,0x000300f7,0x00001135,0x00000000, +0x000400fa,0x00001064,0x000010eb,0x00001111, +0x000200f8,0x000010eb,0x000200f9,0x000013f8, +0x000200f8,0x000013f8,0x000700f5,0x00000006, +0x00002ee0,0x00000138,0x000010eb,0x0000140c, +0x000013fd,0x000700f5,0x00000006,0x00002ede, +0x00000138,0x000010eb,0x0000140f,0x000013fd, +0x000500b0,0x000000d0,0x000013fc,0x00002ede, +0x00000071,0x000400f6,0x00001410,0x000013fd, +0x00000000,0x000400fa,0x000013fc,0x000013fd, +0x00001410,0x000200f8,0x000013fd,0x00050080, +0x00000006,0x00001400,0x00002ed5,0x00002ede, +0x000500c2,0x00000006,0x00001402,0x00001400, +0x00000084,0x00050041,0x00000007,0x00001403, +0x0000015e,0x00001402,0x0004003d,0x00000006, +0x00001404,0x00001403,0x000500c7,0x00000006, +0x00001406,0x00001400,0x00000080,0x000500c2, +0x00000006,0x00001407,0x00001404,0x00001406, +0x000500c7,0x00000006,0x00001408,0x00001407, +0x00000071,0x000500c4,0x00000006,0x0000140a, +0x00001408,0x00002ede,0x000500c5,0x00000006, +0x0000140c,0x00002ee0,0x0000140a,0x00050080, +0x00000006,0x0000140f,0x00002ede,0x000000c4, +0x000200f9,0x000013f8,0x000200f8,0x00001410, +0x00050080,0x00000006,0x00001413,0x00002ed5, +0x00000071,0x0004007c,0x00000019,0x000010ed, +0x00002ee0,0x000200f9,0x0000141a,0x000200f8, +0x0000141a,0x000700f5,0x00000006,0x00002ee3, +0x00000138,0x00001410,0x0000142e,0x0000141f, +0x000700f5,0x00000006,0x00002ee1,0x00000138, +0x00001410,0x00001431,0x0000141f,0x000500b0, +0x000000d0,0x0000141e,0x00002ee1,0x00000071, +0x000400f6,0x00001432,0x0000141f,0x00000000, +0x000400fa,0x0000141e,0x0000141f,0x00001432, +0x000200f8,0x0000141f,0x00050080,0x00000006, +0x00001422,0x00001413,0x00002ee1,0x000500c2, +0x00000006,0x00001424,0x00001422,0x00000084, +0x00050041,0x00000007,0x00001425,0x0000015e, +0x00001424,0x0004003d,0x00000006,0x00001426, +0x00001425,0x000500c7,0x00000006,0x00001428, +0x00001422,0x00000080,0x000500c2,0x00000006, +0x00001429,0x00001426,0x00001428,0x000500c7, +0x00000006,0x0000142a,0x00001429,0x00000071, +0x000500c4,0x00000006,0x0000142c,0x0000142a, +0x00002ee1,0x000500c5,0x00000006,0x0000142e, +0x00002ee3,0x0000142c,0x00050080,0x00000006, +0x00001431,0x00002ee1,0x000000c4,0x000200f9, +0x0000141a,0x000200f8,0x00001432,0x00050080, +0x00000006,0x00001435,0x00002ed5,0x000000d4, +0x0004007c,0x00000019,0x000010ef,0x00002ee3, +0x000200f9,0x000010f0,0x000200f8,0x000010f0, +0x000700f5,0x00000019,0x00002ee4,0x0000006a, +0x00001432,0x0000110f,0x000010f4,0x000500b1, +0x000000d0,0x000010f3,0x00002ee4,0x0000010e, +0x000400f6,0x00001110,0x000010f4,0x00000000, +0x000400fa,0x000010f3,0x000010f4,0x00001110, +0x000200f8,0x000010f4,0x00060041,0x0000001a, +0x000010f7,0x00000fc8,0x0000006a,0x00002ee4, +0x0004003d,0x00000019,0x000010f8,0x000010f7, +0x000500c5,0x00000019,0x000010f9,0x000010f8, +0x000010ed,0x0003003e,0x000010f7,0x000010f9, +0x00060041,0x0000001a,0x000010fd,0x00000fc8, +0x000000c4,0x00002ee4,0x0004003d,0x00000019, +0x000010fe,0x000010fd,0x000500c5,0x00000019, +0x000010ff,0x000010fe,0x000010ed,0x0003003e, +0x000010fd,0x000010ff,0x00060041,0x0000001a, +0x00001103,0x00000fc8,0x000000ef,0x00002ee4, +0x0004003d,0x00000019,0x00001104,0x00001103, +0x000500c5,0x00000019,0x00001105,0x00001104, +0x000010ef,0x0003003e,0x00001103,0x00001105, +0x00060041,0x0000001a,0x00001109,0x00000fc8, +0x0000010e,0x00002ee4,0x0004003d,0x00000019, +0x0000110a,0x00001109,0x000500c5,0x00000019, +0x0000110b,0x0000110a,0x000010ef,0x0003003e, +0x00001109,0x0000110b,0x00050080,0x00000019, +0x0000110f,0x00002ee4,0x000000c4,0x000200f9, +0x000010f0,0x000200f8,0x00001110,0x000200f9, +0x00001135,0x000200f8,0x00001111,0x000500c4, +0x00000019,0x00001114,0x000000c4,0x00002eaf, +0x000500c7,0x00000019,0x00001115,0x0000022f, +0x00001114,0x000500ab,0x000000d0,0x00001116, +0x00001115,0x0000006a,0x000300f7,0x00001134, +0x00000000,0x000400fa,0x00001116,0x00001117, +0x00001134,0x000200f8,0x00001117,0x000200f9, +0x00001118,0x000200f8,0x00001118,0x000700f5, +0x00000006,0x00002ed3,0x00002ed5,0x00001117, +0x00001457,0x00001130,0x000700f5,0x00000019, +0x00002ed0,0x0000006a,0x00001117,0x00001132, +0x00001130,0x000500b1,0x000000d0,0x0000111c, +0x00002ed0,0x0000107d,0x000400f6,0x00001133, +0x00001130,0x00000000,0x000400fa,0x0000111c, +0x0000111d,0x00001133,0x000200f8,0x0000111d, +0x000200f9,0x0000143c,0x000200f8,0x0000143c, +0x000700f5,0x00000006,0x00002eda,0x00000138, +0x0000111d,0x00001450,0x00001441,0x000700f5, +0x00000006,0x00002ed1,0x00000138,0x0000111d, +0x00001453,0x00001441,0x000500b0,0x000000d0, +0x00001440,0x00002ed1,0x00000071,0x000400f6, +0x00001454,0x00001441,0x00000000,0x000400fa, +0x00001440,0x00001441,0x00001454,0x000200f8, +0x00001441,0x00050080,0x00000006,0x00001444, +0x00002ed3,0x00002ed1,0x000500c2,0x00000006, +0x00001446,0x00001444,0x00000084,0x00050041, +0x00000007,0x00001447,0x0000015e,0x00001446, +0x0004003d,0x00000006,0x00001448,0x00001447, +0x000500c7,0x00000006,0x0000144a,0x00001444, +0x00000080,0x000500c2,0x00000006,0x0000144b, +0x00001448,0x0000144a,0x000500c7,0x00000006, +0x0000144c,0x0000144b,0x00000071,0x000500c4, +0x00000006,0x0000144e,0x0000144c,0x00002ed1, +0x000500c5,0x00000006,0x00001450,0x00002eda, +0x0000144e,0x00050080,0x00000006,0x00001453, +0x00002ed1,0x000000c4,0x000200f9,0x0000143c, +0x000200f8,0x00001454,0x00050080,0x00000006, +0x00001457,0x00002ed3,0x00000071,0x0004007c, +0x00000019,0x0000111f,0x00002eda,0x000200f9, +0x00001120,0x000200f8,0x00001120,0x000700f5, +0x00000019,0x00002edb,0x0000006a,0x00001454, +0x0000112e,0x00001124,0x000500b1,0x000000d0, +0x00001123,0x00002edb,0x000001da,0x000400f6, +0x0000112f,0x00001124,0x00000000,0x000400fa, +0x00001123,0x00001124,0x0000112f,0x000200f8, +0x00001124,0x00060041,0x0000001a,0x00001128, +0x00000fc8,0x00002ed0,0x00002edb,0x0004003d, +0x00000019,0x00001129,0x00001128,0x000500c5, +0x00000019,0x0000112a,0x00001129,0x0000111f, +0x0003003e,0x00001128,0x0000112a,0x00050080, +0x00000019,0x0000112e,0x00002edb,0x000000c4, +0x000200f9,0x00001120,0x000200f8,0x0000112f, +0x000200f9,0x00001130,0x000200f8,0x00001130, +0x00050080,0x00000019,0x00001132,0x00002ed0, +0x000000c4,0x000200f9,0x00001118,0x000200f8, +0x00001133,0x000200f9,0x00001134,0x000200f8, +0x00001134,0x000700f5,0x00000006,0x00002f49, +0x00002ed5,0x00001111,0x00002ed3,0x00001133, +0x000200f9,0x00001135,0x000200f8,0x00001135, +0x000700f5,0x00000006,0x00002f47,0x00001435, +0x00001110,0x00002f49,0x00001134,0x000200f9, +0x00001136,0x000200f8,0x00001136,0x000700f5, +0x00000006,0x00002f46,0x00002ed5,0x000010c0, +0x00002f47,0x00001135,0x000200f9,0x00001137, +0x000200f8,0x00001137,0x000700f5,0x00000019, +0x00002ee5,0x0000006a,0x00001136,0x00001183, +0x00001181,0x000500b1,0x000000d0,0x0000113b, +0x00002ee5,0x0000107d,0x000400f6,0x00001184, +0x00001181,0x00000000,0x000400fa,0x0000113b, +0x0000113c,0x00001184,0x000200f8,0x0000113c, +0x0003003e,0x00000fdd,0x00000203,0x00050041, +0x0000001a,0x0000113e,0x00000fdd,0x00002eaf, +0x0004003d,0x00000019,0x0000113f,0x0000113e, +0x000500c3,0x00000019,0x00001142,0x0000022f, +0x00002eaf,0x000500c7,0x00000019,0x00001143, +0x00001142,0x000000c4,0x00050080,0x00000019, +0x00001144,0x0000113f,0x00001143,0x000200f9, +0x00001145,0x000200f8,0x00001145,0x000700f5, +0x00000019,0x00002fd5,0x0000006a,0x0000113c, +0x00001164,0x00001149,0x000500b1,0x000000d0, +0x00001148,0x00002fd5,0x0000010e,0x000400f6, +0x00001165,0x00001149,0x00000000,0x000400fa, +0x00001148,0x00001149,0x00001165,0x000200f8, +0x00001149,0x00060041,0x0000001a,0x0000114e, +0x00000fc8,0x00002ee5,0x00002fd5,0x0004003d, +0x00000019,0x0000114f,0x0000114e,0x00050082, +0x00000019,0x00001151,0x0000019a,0x00001144, +0x000500c4,0x00000019,0x00001152,0x0000114f, +0x00001151,0x0003003e,0x0000114e,0x00001152, +0x0004003d,0x00000019,0x00001159,0x0000114e, +0x0004003d,0x00000019,0x0000115d,0x0000114e, +0x000500c3,0x00000019,0x0000115f,0x0000115d, +0x00001144,0x000500c5,0x00000019,0x00001160, +0x00001159,0x0000115f,0x0003003e,0x0000114e, +0x00001160,0x00050080,0x00000019,0x00001164, +0x00002fd5,0x000000c4,0x000200f9,0x00001145, +0x000200f8,0x00001165,0x0003003e,0x00000fdf, +0x00000211,0x00050041,0x0000001a,0x00001167, +0x00000fdf,0x00002eaf,0x0004003d,0x00000019, +0x00001168,0x00001167,0x00050080,0x00000019, +0x0000116d,0x00001168,0x00001143,0x00060041, +0x0000001a,0x00001170,0x00000fc8,0x00002ee5, +0x0000010e,0x0004003d,0x00000019,0x00001171, +0x00001170,0x00050082,0x00000019,0x00001173, +0x0000019a,0x0000116d,0x000500c4,0x00000019, +0x00001174,0x00001171,0x00001173,0x0003003e, +0x00001170,0x00001174,0x0004003d,0x00000019, +0x00001179,0x00001170,0x0004003d,0x00000019, +0x0000117c,0x00001170,0x000500c3,0x00000019, +0x0000117e,0x0000117c,0x0000116d,0x000500c5, +0x00000019,0x0000117f,0x00001179,0x0000117e, +0x0003003e,0x00001170,0x0000117f,0x000200f9, +0x00001181,0x000200f8,0x00001181,0x00050080, +0x00000019,0x00001183,0x00002ee5,0x000000c4, +0x000200f9,0x00001137,0x000200f8,0x00001184, +0x0003003e,0x00000fe0,0x00000211,0x00050041, +0x0000001a,0x00001186,0x00000fe0,0x00002eaf, +0x0004003d,0x00000019,0x00001187,0x00001186, +0x000500aa,0x000000d0,0x00001188,0x00001187, +0x0000006a,0x000300f7,0x00001196,0x00000000, +0x000400fa,0x00001188,0x00001189,0x00001196, +0x000200f8,0x00001189,0x000200f9,0x0000118a, +0x000200f8,0x0000118a,0x000700f5,0x00000019, +0x00002ef0,0x0000006a,0x00001189,0x00001194, +0x0000118f,0x000500b1,0x000000d0,0x0000118e, +0x00002ef0,0x0000107d,0x000400f6,0x00001195, +0x0000118f,0x00000000,0x000400fa,0x0000118e, +0x0000118f,0x00001195,0x000200f8,0x0000118f, +0x00060041,0x0000001a,0x00001191,0x00000fc8, +0x00002ef0,0x0000010e,0x0003003e,0x00001191, +0x00000315,0x00050080,0x00000019,0x00001194, +0x00002ef0,0x000000c4,0x000200f9,0x0000118a, +0x000200f8,0x00001195,0x000200f9,0x00001196, +0x000200f8,0x00001196,0x000300f7,0x000011a1, +0x00000000,0x000400fa,0x00001065,0x0000119c, +0x0000119d,0x000200f8,0x0000119c,0x000200f9, +0x000011a1,0x000200f8,0x0000119d,0x000600a9, +0x00000019,0x000011a0,0x000010ca,0x000001da, +0x000000ef,0x000200f9,0x000011a1,0x000200f8, +0x000011a1,0x000700f5,0x00000019,0x00002ef3, +0x0000010e,0x0000119c,0x000011a0,0x0000119d, +0x000300f7,0x000011aa,0x00000000,0x000400fa, +0x0000107f,0x000011a5,0x000011a6,0x000200f8, +0x000011a5,0x000200f9,0x000011aa,0x000200f8, +0x000011a6,0x000600a9,0x00000019,0x000011a9, +0x00001081,0x000000ef,0x0000006a,0x000200f9, +0x000011aa,0x000200f8,0x000011aa,0x000700f5, +0x00000019,0x00002ef5,0x0000010e,0x000011a5, +0x000011a9,0x000011a6,0x000200f9,0x000011ac, +0x000200f8,0x000011ac,0x000700f5,0x00000006, +0x00002f41,0x00002f46,0x000011aa,0x00002fd1, +0x000011fb,0x000700f5,0x00000019,0x00002ef6, +0x0000006a,0x000011aa,0x000011fd,0x000011fb, +0x000500b1,0x000000d0,0x000011af,0x00002ef6, +0x000001da,0x000400f6,0x000011fe,0x000011fb, +0x00000000,0x000400fa,0x000011af,0x000011b0, +0x000011fe,0x000200f8,0x000011b0,0x000200f9, +0x000011b1,0x000200f8,0x000011b1,0x000700f5, +0x00000006,0x00002fd1,0x00002f41,0x000011b0, +0x00001479,0x000011f7,0x000700f5,0x00000019, +0x00002fb7,0x0000006a,0x000011b0,0x000011f9, +0x000011f7,0x000500b1,0x000000d0,0x000011b4, +0x00002fb7,0x000001da,0x000400f6,0x000011fa, +0x000011f7,0x00000000,0x000400fa,0x000011b4, +0x000011b5,0x000011fa,0x000200f8,0x000011b5, +0x000500aa,0x000000d0,0x000011b7,0x00002eba, +0x000000c4,0x000300f7,0x000011d9,0x00000000, +0x000400fa,0x000011b7,0x000011b8,0x000011be, +0x000200f8,0x000011b8,0x000500c5,0x00000019, +0x000011bb,0x00002ef6,0x00002fb7,0x000500ab, +0x000000d0,0x000011bc,0x000011bb,0x0000006a, +0x000600a9,0x00000019,0x000011bd,0x000011bc, +0x0000006a,0x0000034c,0x000200f9,0x000011d9, +0x000200f8,0x000011be,0x000500aa,0x000000d0, +0x000011c0,0x00002eba,0x0000010e,0x000300f7, +0x000011d7,0x00000000,0x000400fa,0x000011c0, +0x000011c1,0x000011cc,0x000200f8,0x000011c1, +0x00050084,0x00000019,0x000011c3,0x00002f1e, +0x0000035b,0x00050084,0x00000019,0x000011c5, +0x00002ef6,0x000001da,0x00050080,0x00000019, +0x000011c6,0x000011c3,0x000011c5,0x00050080, +0x00000019,0x000011c8,0x000011c6,0x00002fb7, +0x0003003e,0x00000feb,0x00000359,0x00050041, +0x00000007,0x000011c9,0x00000feb,0x000011c8, +0x0004003d,0x00000006,0x000011ca,0x000011c9, +0x0004007c,0x00000019,0x000011cb,0x000011ca, +0x000200f9,0x000011d7,0x000200f8,0x000011cc, +0x00050084,0x00000019,0x000011ce,0x00002f1e, +0x0000035b,0x00050084,0x00000019,0x000011d0, +0x00002ef6,0x000001da,0x00050080,0x00000019, +0x000011d1,0x000011ce,0x000011d0,0x00050080, +0x00000019,0x000011d3,0x000011d1,0x00002fb7, +0x0003003e,0x00000fec,0x00000368,0x00050041, +0x00000007,0x000011d4,0x00000fec,0x000011d3, +0x0004003d,0x00000006,0x000011d5,0x000011d4, +0x0004007c,0x00000019,0x000011d6,0x000011d5, +0x000200f9,0x000011d7,0x000200f8,0x000011d7, +0x000700f5,0x00000019,0x00002fbb,0x000011cb, +0x000011c1,0x000011d6,0x000011cc,0x000200f9, +0x000011d9,0x000200f8,0x000011d9,0x000700f5, +0x00000019,0x00002fbc,0x000011bd,0x000011b8, +0x00002fbb,0x000011d7,0x000300f7,0x000011e5, +0x00000000,0x000400fa,0x00001065,0x000011e0, +0x000011e1,0x000200f8,0x000011e0,0x000200f9, +0x000011e5,0x000200f8,0x000011e1,0x000600a9, +0x00000019,0x000011e4,0x000010ca,0x000001da, +0x000000ef,0x000200f9,0x000011e5,0x000200f8, +0x000011e5,0x000700f5,0x00000019,0x00002fc2, +0x0000010e,0x000011e0,0x000011e4,0x000011e1, +0x000500c7,0x00000019,0x000011e8,0x00002fbc, +0x0000034c,0x000500ab,0x000000d0,0x000011e9, +0x000011e8,0x0000006a,0x000300f7,0x000011ed, +0x00000000,0x000400fa,0x000011e9,0x000011ea, +0x000011ed,0x000200f8,0x000011ea,0x00050082, +0x00000019,0x000011ec,0x00002fc2,0x000000c4, +0x000200f9,0x000011ed,0x000200f8,0x000011ed, +0x000700f5,0x00000019,0x00002fcb,0x00002fc2, +0x000011e5,0x000011ec,0x000011ea,0x00050084, +0x00000019,0x000011ef,0x00002ef6,0x000001da, +0x00050080,0x00000019,0x000011f1,0x000011ef, +0x00002fb7,0x0004007c,0x00000006,0x000011f3, +0x00002fcb,0x000200f9,0x0000145e,0x000200f8, +0x0000145e,0x000700f5,0x00000006,0x00002fd3, +0x00000138,0x000011ed,0x00001472,0x00001463, +0x000700f5,0x00000006,0x00002fcc,0x00000138, +0x000011ed,0x00001475,0x00001463,0x000500b0, +0x000000d0,0x00001462,0x00002fcc,0x000011f3, +0x000400f6,0x00001476,0x00001463,0x00000000, +0x000400fa,0x00001462,0x00001463,0x00001476, +0x000200f8,0x00001463,0x00050080,0x00000006, +0x00001466,0x00002fd1,0x00002fcc,0x000500c2, +0x00000006,0x00001468,0x00001466,0x00000084, +0x00050041,0x00000007,0x00001469,0x0000015e, +0x00001468,0x0004003d,0x00000006,0x0000146a, +0x00001469,0x000500c7,0x00000006,0x0000146c, +0x00001466,0x00000080,0x000500c2,0x00000006, +0x0000146d,0x0000146a,0x0000146c,0x000500c7, +0x00000006,0x0000146e,0x0000146d,0x00000071, +0x000500c4,0x00000006,0x00001470,0x0000146e, +0x00002fcc,0x000500c5,0x00000006,0x00001472, +0x00002fd3,0x00001470,0x00050080,0x00000006, +0x00001475,0x00002fcc,0x000000c4,0x000200f9, +0x0000145e,0x000200f8,0x00001476,0x00050080, +0x00000006,0x00001479,0x00002fd1,0x000011f3, +0x0004007c,0x00000019,0x000011f5,0x00002fd3, +0x00050041,0x0000001a,0x000011f6,0x00000fef, +0x000011f1,0x0003003e,0x000011f6,0x000011f5, +0x000200f9,0x000011f7,0x000200f8,0x000011f7, +0x00050080,0x00000019,0x000011f9,0x00002fb7, +0x000000c4,0x000200f9,0x000011b1,0x000200f8, +0x000011fa,0x000200f9,0x000011fb,0x000200f8, +0x000011fb,0x00050080,0x00000019,0x000011fd, +0x00002ef6,0x000000c4,0x000200f9,0x000011ac, +0x000200f8,0x000011fe,0x000200f9,0x000011ff, +0x000200f8,0x000011ff,0x000700f5,0x00000019, +0x00002ef7,0x0000006a,0x000011fe,0x00001324, +0x00001322,0x000700f5,0x00000006,0x00002f40, +0x00002f41,0x000011fe,0x00002f3f,0x00001322, +0x000500b1,0x000000d0,0x00001202,0x00002ef7, +0x000001da,0x000400f6,0x00001325,0x00001322, +0x00000000,0x000400fa,0x00001202,0x00001203, +0x00001325,0x000200f8,0x00001203,0x000200f9, +0x00001204,0x000200f8,0x00001204,0x000700f5, +0x00000006,0x00002f3f,0x00002f40,0x00001203, +0x0000318c,0x0000131e,0x000700f5,0x00000019, +0x00002ef8,0x0000006a,0x00001203,0x00001320, +0x0000131e,0x000500b1,0x000000d0,0x00001207, +0x00002ef8,0x000001da,0x000400f6,0x00001321, +0x0000131e,0x00000000,0x000400fa,0x00001207, +0x00001208,0x00001321,0x000200f8,0x00001208, +0x000500aa,0x000000d0,0x0000120a,0x00002eba, +0x000000c4,0x000300f7,0x0000122c,0x00000000, +0x000400fa,0x0000120a,0x0000120b,0x00001211, +0x000200f8,0x0000120b,0x000500c5,0x00000019, +0x0000120e,0x00002ef7,0x00002ef8,0x000500ab, +0x000000d0,0x0000120f,0x0000120e,0x0000006a, +0x000600a9,0x00000019,0x00001210,0x0000120f, +0x0000006a,0x0000034c,0x000200f9,0x0000122c, +0x000200f8,0x00001211,0x000500aa,0x000000d0, +0x00001213,0x00002eba,0x0000010e,0x000300f7, +0x0000122a,0x00000000,0x000400fa,0x00001213, +0x00001214,0x0000121f,0x000200f8,0x00001214, +0x00050084,0x00000019,0x00001216,0x00002f1e, +0x0000035b,0x00050084,0x00000019,0x00001218, +0x00002ef7,0x000001da,0x00050080,0x00000019, +0x00001219,0x00001216,0x00001218,0x00050080, +0x00000019,0x0000121b,0x00001219,0x00002ef8, +0x0003003e,0x00000ff6,0x00000359,0x00050041, +0x00000007,0x0000121c,0x00000ff6,0x0000121b, +0x0004003d,0x00000006,0x0000121d,0x0000121c, +0x0004007c,0x00000019,0x0000121e,0x0000121d, +0x000200f9,0x0000122a,0x000200f8,0x0000121f, +0x00050084,0x00000019,0x00001221,0x00002f1e, +0x0000035b,0x00050084,0x00000019,0x00001223, +0x00002ef7,0x000001da,0x00050080,0x00000019, +0x00001224,0x00001221,0x00001223,0x00050080, +0x00000019,0x00001226,0x00001224,0x00002ef8, +0x0003003e,0x00000ff7,0x00000368,0x00050041, +0x00000007,0x00001227,0x00000ff7,0x00001226, +0x0004003d,0x00000006,0x00001228,0x00001227, +0x0004007c,0x00000019,0x00001229,0x00001228, +0x000200f9,0x0000122a,0x000200f8,0x0000122a, +0x000700f5,0x00000019,0x00002f2d,0x0000121e, +0x00001214,0x00001229,0x0000121f,0x000200f9, +0x0000122c,0x000200f8,0x0000122c,0x000700f5, +0x00000019,0x00002f2e,0x00001210,0x0000120b, +0x00002f2d,0x0000122a,0x000500c7,0x00000019, +0x0000122f,0x00002f2e,0x0000010e,0x00050084, +0x00000019,0x00001231,0x00002ef7,0x000001da, +0x00050080,0x00000019,0x00001233,0x00001231, +0x00002ef8,0x00050041,0x0000001a,0x00001234, +0x00000fef,0x00001233,0x0004003d,0x00000019, +0x00001235,0x00001234,0x000500aa,0x000000d0, +0x00001237,0x00002ef3,0x000000ef,0x000300f7, +0x00001249,0x00000000,0x000400fa,0x00001237, +0x00001238,0x0000123c,0x000200f8,0x00001238, +0x0003003e,0x00000ffc,0x000003e8,0x00050041, +0x0000001a,0x0000123a,0x00000ffc,0x00001235, +0x0004003d,0x00000019,0x0000123b,0x0000123a, +0x000200f9,0x00001249,0x000200f8,0x0000123c, +0x000500aa,0x000000d0,0x0000123e,0x00002ef3, +0x0000010e,0x000300f7,0x00001247,0x00000000, +0x000400fa,0x0000123e,0x0000123f,0x00001243, +0x000200f8,0x0000123f,0x0003003e,0x00000ffe, +0x000003fa,0x00050041,0x0000001a,0x00001241, +0x00000ffe,0x00001235,0x0004003d,0x00000019, +0x00001242,0x00001241,0x000200f9,0x00001247, +0x000200f8,0x00001243,0x0003003e,0x00000fff, +0x00000409,0x00050041,0x0000001a,0x00001245, +0x00000fff,0x00001235,0x0004003d,0x00000019, +0x00001246,0x00001245,0x000200f9,0x00001247, +0x000200f8,0x00001247,0x000700f5,0x00000019, +0x00002f33,0x00001242,0x0000123f,0x00001246, +0x00001243,0x000200f9,0x00001249,0x000200f8, +0x00001249,0x000700f5,0x00000019,0x00002f34, +0x0000123b,0x00001238,0x00002f33,0x00001247, +0x000500aa,0x000000d0,0x0000124c,0x00002ef5, +0x0000006a,0x000300f7,0x000012f3,0x00000000, +0x000400fa,0x0000124c,0x0000124d,0x0000127a, +0x000200f8,0x0000124d,0x00050084,0x00000019, +0x0000124f,0x0000122f,0x000000ef,0x00050080, +0x00000019,0x00001252,0x0000124f,0x000000c4, +0x00060041,0x0000001a,0x00001253,0x00000fc8, +0x0000124f,0x0000006a,0x0004003d,0x00000019, +0x00001254,0x00001253,0x00060041,0x0000001a, +0x00001255,0x00000fc8,0x00001252,0x0000006a, +0x0004003d,0x00000019,0x00001256,0x00001255, +0x00050082,0x00000019,0x0000147f,0x00000174, +0x00002f34,0x00050084,0x00000019,0x00001480, +0x00001254,0x0000147f,0x00050084,0x00000019, +0x00001483,0x00001256,0x00002f34,0x00050080, +0x00000019,0x00001484,0x00001480,0x00001483, +0x00050080,0x00000019,0x00001485,0x00001484, +0x0000017c,0x000500c3,0x00000019,0x00001486, +0x00001485,0x0000017e,0x00060041,0x0000001a, +0x0000125e,0x00000fc8,0x0000124f,0x000000c4, +0x0004003d,0x00000019,0x0000125f,0x0000125e, +0x00060041,0x0000001a,0x00001260,0x00000fc8, +0x00001252,0x000000c4,0x0004003d,0x00000019, +0x00001261,0x00001260,0x00050084,0x00000019, +0x0000148c,0x0000125f,0x0000147f,0x00050084, +0x00000019,0x0000148f,0x00001261,0x00002f34, +0x00050080,0x00000019,0x00001490,0x0000148c, +0x0000148f,0x00050080,0x00000019,0x00001491, +0x00001490,0x0000017c,0x000500c3,0x00000019, +0x00001492,0x00001491,0x0000017e,0x00060041, +0x0000001a,0x00001269,0x00000fc8,0x0000124f, +0x000000ef,0x0004003d,0x00000019,0x0000126a, +0x00001269,0x00060041,0x0000001a,0x0000126b, +0x00000fc8,0x00001252,0x000000ef,0x0004003d, +0x00000019,0x0000126c,0x0000126b,0x00050084, +0x00000019,0x00001498,0x0000126a,0x0000147f, +0x00050084,0x00000019,0x0000149b,0x0000126c, +0x00002f34,0x00050080,0x00000019,0x0000149c, +0x00001498,0x0000149b,0x00050080,0x00000019, +0x0000149d,0x0000149c,0x0000017c,0x000500c3, +0x00000019,0x0000149e,0x0000149d,0x0000017e, +0x00060041,0x0000001a,0x00001274,0x00000fc8, +0x0000124f,0x0000010e,0x0004003d,0x00000019, +0x00001275,0x00001274,0x00060041,0x0000001a, +0x00001276,0x00000fc8,0x00001252,0x0000010e, +0x0004003d,0x00000019,0x00001277,0x00001276, +0x00050084,0x00000019,0x000014a4,0x00001275, +0x0000147f,0x00050084,0x00000019,0x000014a7, +0x00001277,0x00002f34,0x00050080,0x00000019, +0x000014a8,0x000014a4,0x000014a7,0x00050080, +0x00000019,0x000014a9,0x000014a8,0x0000017c, +0x000500c3,0x00000019,0x000014aa,0x000014a9, +0x0000017e,0x000200f9,0x000012f3,0x000200f8, +0x0000127a,0x000500c5,0x00000019,0x0000127d, +0x00002ef7,0x00002ef8,0x000500ab,0x000000d0, +0x0000127e,0x0000127d,0x0000006a,0x000300f7, +0x00001286,0x00000000,0x000400fa,0x0000127e, +0x0000127f,0x00001282,0x000200f8,0x0000127f, +0x0004007c,0x00000006,0x00001281,0x00002ef5, +0x000200f9,0x00001286,0x000200f8,0x00001282, +0x00050082,0x00000019,0x00001284,0x00002ef5, +0x000000c4,0x0004007c,0x00000006,0x00001285, +0x00001284,0x000200f9,0x00001286,0x000200f8, +0x00001286,0x000700f5,0x00000006,0x00002f39, +0x00001281,0x0000127f,0x00001285,0x00001282, +0x000200f9,0x000014b0,0x000200f8,0x000014b0, +0x000700f5,0x00000006,0x00002f4d,0x00000138, +0x00001286,0x000014c4,0x000014b5,0x000700f5, +0x00000006,0x00002f3a,0x00000138,0x00001286, +0x000014c7,0x000014b5,0x000500b0,0x000000d0, +0x000014b4,0x00002f3a,0x00002f39,0x000400f6, +0x000014c8,0x000014b5,0x00000000,0x000400fa, +0x000014b4,0x000014b5,0x000014c8,0x000200f8, +0x000014b5,0x00050080,0x00000006,0x000014b8, +0x00002f3f,0x00002f3a,0x000500c2,0x00000006, +0x000014ba,0x000014b8,0x00000084,0x00050041, +0x00000007,0x000014bb,0x0000015e,0x000014ba, +0x0004003d,0x00000006,0x000014bc,0x000014bb, +0x000500c7,0x00000006,0x000014be,0x000014b8, +0x00000080,0x000500c2,0x00000006,0x000014bf, +0x000014bc,0x000014be,0x000500c7,0x00000006, +0x000014c0,0x000014bf,0x00000071,0x000500c4, +0x00000006,0x000014c2,0x000014c0,0x00002f3a, +0x000500c5,0x00000006,0x000014c4,0x00002f4d, +0x000014c2,0x00050080,0x00000006,0x000014c7, +0x00002f3a,0x000000c4,0x000200f9,0x000014b0, +0x000200f8,0x000014c8,0x00050080,0x00000006, +0x000014cb,0x00002f3f,0x00002f39,0x0004007c, +0x00000019,0x00001289,0x00002f4d,0x000500aa, +0x000000d0,0x0000128b,0x00002ef5,0x000000ef, +0x000300f7,0x00001294,0x00000000,0x000400fa, +0x0000128b,0x0000128c,0x00001290,0x000200f8, +0x0000128c,0x0003003e,0x00001015,0x000003e8, +0x00050041,0x0000001a,0x0000128e,0x00001015, +0x00001289,0x0004003d,0x00000019,0x0000128f, +0x0000128e,0x000200f9,0x00001294,0x000200f8, +0x00001290,0x0003003e,0x00001016,0x000003fa, +0x00050041,0x0000001a,0x00001292,0x00001016, +0x00001289,0x0004003d,0x00000019,0x00001293, +0x00001292,0x000200f9,0x00001294,0x000200f8, +0x00001294,0x000700f5,0x00000019,0x00002f4e, +0x0000128f,0x0000128c,0x00001293,0x00001290, +0x000500aa,0x000000d0,0x00001297,0x00002f5e, +0x0000006a,0x000300f7,0x000012f2,0x00000000, +0x000400fa,0x00001297,0x00001298,0x000012c5, +0x000200f8,0x00001298,0x00050084,0x00000019, +0x0000129a,0x0000122f,0x000000ef,0x00050080, +0x00000019,0x0000129d,0x0000129a,0x000000c4, +0x00060041,0x0000001a,0x0000129e,0x00000fc8, +0x0000129a,0x0000006a,0x0004003d,0x00000019, +0x0000129f,0x0000129e,0x00060041,0x0000001a, +0x000012a0,0x00000fc8,0x0000129d,0x0000006a, +0x0004003d,0x00000019,0x000012a1,0x000012a0, +0x00050082,0x00000019,0x000014d1,0x00000174, +0x00002f34,0x00050084,0x00000019,0x000014d2, +0x0000129f,0x000014d1,0x00050084,0x00000019, +0x000014d5,0x000012a1,0x00002f34,0x00050080, +0x00000019,0x000014d6,0x000014d2,0x000014d5, +0x00050080,0x00000019,0x000014d7,0x000014d6, +0x0000017c,0x000500c3,0x00000019,0x000014d8, +0x000014d7,0x0000017e,0x00060041,0x0000001a, +0x000012a9,0x00000fc8,0x0000129a,0x000000c4, +0x0004003d,0x00000019,0x000012aa,0x000012a9, +0x00060041,0x0000001a,0x000012ab,0x00000fc8, +0x0000129d,0x000000c4,0x0004003d,0x00000019, +0x000012ac,0x000012ab,0x00050084,0x00000019, +0x000014de,0x000012aa,0x000014d1,0x00050084, +0x00000019,0x000014e1,0x000012ac,0x00002f34, +0x00050080,0x00000019,0x000014e2,0x000014de, +0x000014e1,0x00050080,0x00000019,0x000014e3, +0x000014e2,0x0000017c,0x000500c3,0x00000019, +0x000014e4,0x000014e3,0x0000017e,0x00060041, +0x0000001a,0x000012b4,0x00000fc8,0x0000129a, +0x000000ef,0x0004003d,0x00000019,0x000012b5, +0x000012b4,0x00060041,0x0000001a,0x000012b6, +0x00000fc8,0x0000129d,0x000000ef,0x0004003d, +0x00000019,0x000012b7,0x000012b6,0x00050084, +0x00000019,0x000014ea,0x000012b5,0x000014d1, +0x00050084,0x00000019,0x000014ed,0x000012b7, +0x00002f34,0x00050080,0x00000019,0x000014ee, +0x000014ea,0x000014ed,0x00050080,0x00000019, +0x000014ef,0x000014ee,0x0000017c,0x000500c3, +0x00000019,0x000014f0,0x000014ef,0x0000017e, +0x00060041,0x0000001a,0x000012bf,0x00000fc8, +0x0000129a,0x0000010e,0x0004003d,0x00000019, +0x000012c0,0x000012bf,0x00060041,0x0000001a, +0x000012c1,0x00000fc8,0x0000129d,0x0000010e, +0x0004003d,0x00000019,0x000012c2,0x000012c1, +0x00050082,0x00000019,0x000014f5,0x00000174, +0x00002f4e,0x00050084,0x00000019,0x000014f6, +0x000012c0,0x000014f5,0x00050084,0x00000019, +0x000014f9,0x000012c2,0x00002f4e,0x00050080, +0x00000019,0x000014fa,0x000014f6,0x000014f9, +0x00050080,0x00000019,0x000014fb,0x000014fa, +0x0000017c,0x000500c3,0x00000019,0x000014fc, +0x000014fb,0x0000017e,0x000200f9,0x000012f2, +0x000200f8,0x000012c5,0x00050084,0x00000019, +0x000012c7,0x0000122f,0x000000ef,0x00050080, +0x00000019,0x000012ca,0x000012c7,0x000000c4, +0x00060041,0x0000001a,0x000012cb,0x00000fc8, +0x000012c7,0x0000006a,0x0004003d,0x00000019, +0x000012cc,0x000012cb,0x00060041,0x0000001a, +0x000012cd,0x00000fc8,0x000012ca,0x0000006a, +0x0004003d,0x00000019,0x000012ce,0x000012cd, +0x00050082,0x00000019,0x00001501,0x00000174, +0x00002f4e,0x00050084,0x00000019,0x00001502, +0x000012cc,0x00001501,0x00050084,0x00000019, +0x00001505,0x000012ce,0x00002f4e,0x00050080, +0x00000019,0x00001506,0x00001502,0x00001505, +0x00050080,0x00000019,0x00001507,0x00001506, +0x0000017c,0x000500c3,0x00000019,0x00001508, +0x00001507,0x0000017e,0x00060041,0x0000001a, +0x000012d6,0x00000fc8,0x000012c7,0x000000c4, +0x0004003d,0x00000019,0x000012d7,0x000012d6, +0x00060041,0x0000001a,0x000012d8,0x00000fc8, +0x000012ca,0x000000c4,0x0004003d,0x00000019, +0x000012d9,0x000012d8,0x00050084,0x00000019, +0x0000150e,0x000012d7,0x00001501,0x00050084, +0x00000019,0x00001511,0x000012d9,0x00002f4e, +0x00050080,0x00000019,0x00001512,0x0000150e, +0x00001511,0x00050080,0x00000019,0x00001513, +0x00001512,0x0000017c,0x000500c3,0x00000019, +0x00001514,0x00001513,0x0000017e,0x00060041, +0x0000001a,0x000012e1,0x00000fc8,0x000012c7, +0x000000ef,0x0004003d,0x00000019,0x000012e2, +0x000012e1,0x00060041,0x0000001a,0x000012e3, +0x00000fc8,0x000012ca,0x000000ef,0x0004003d, +0x00000019,0x000012e4,0x000012e3,0x00050084, +0x00000019,0x0000151a,0x000012e2,0x00001501, +0x00050084,0x00000019,0x0000151d,0x000012e4, +0x00002f4e,0x00050080,0x00000019,0x0000151e, +0x0000151a,0x0000151d,0x00050080,0x00000019, +0x0000151f,0x0000151e,0x0000017c,0x000500c3, +0x00000019,0x00001520,0x0000151f,0x0000017e, +0x00060041,0x0000001a,0x000012ec,0x00000fc8, +0x000012c7,0x0000010e,0x0004003d,0x00000019, +0x000012ed,0x000012ec,0x00060041,0x0000001a, +0x000012ee,0x00000fc8,0x000012ca,0x0000010e, +0x0004003d,0x00000019,0x000012ef,0x000012ee, +0x00050082,0x00000019,0x00001525,0x00000174, +0x00002f34,0x00050084,0x00000019,0x00001526, +0x000012ed,0x00001525,0x00050084,0x00000019, +0x00001529,0x000012ef,0x00002f34,0x00050080, +0x00000019,0x0000152a,0x00001526,0x00001529, +0x00050080,0x00000019,0x0000152b,0x0000152a, +0x0000017c,0x000500c3,0x00000019,0x0000152c, +0x0000152b,0x0000017e,0x000200f9,0x000012f2, +0x000200f8,0x000012f2,0x000700f5,0x00000019, +0x00002f9a,0x000014d8,0x00001298,0x00001508, +0x000012c5,0x000700f5,0x00000019,0x00002f98, +0x000014e4,0x00001298,0x00001514,0x000012c5, +0x000700f5,0x00000019,0x00002f96,0x000014f0, +0x00001298,0x00001520,0x000012c5,0x000700f5, +0x00000019,0x00002f94,0x000014fc,0x00001298, +0x0000152c,0x000012c5,0x000200f9,0x000012f3, +0x000200f8,0x000012f3,0x000700f5,0x00000006, +0x0000318c,0x00002f3f,0x0000124d,0x000014cb, +0x000012f2,0x000700f5,0x00000019,0x00002f99, +0x00001486,0x0000124d,0x00002f9a,0x000012f2, +0x000700f5,0x00000019,0x00002f97,0x00001492, +0x0000124d,0x00002f98,0x000012f2,0x000700f5, +0x00000019,0x00002f95,0x0000149e,0x0000124d, +0x00002f96,0x000012f2,0x000700f5,0x00000019, +0x00002f93,0x000014aa,0x0000124d,0x00002f94, +0x000012f2,0x000500aa,0x000000d0,0x000012f5, +0x00002f7d,0x000000c4,0x000300f7,0x0000130a, +0x00000000,0x000400fa,0x000012f5,0x000012f6, +0x000012fa,0x000200f8,0x000012f6,0x000200f9, +0x0000130a,0x000200f8,0x000012fa,0x000500aa, +0x000000d0,0x000012fc,0x00002f7d,0x000000ef, +0x000300f7,0x00001309,0x00000000,0x000400fa, +0x000012fc,0x000012fd,0x00001301,0x000200f8, +0x000012fd,0x000200f9,0x00001309,0x000200f8, +0x00001301,0x000500aa,0x000000d0,0x00001303, +0x00002f7d,0x0000010e,0x000600a9,0x00000019, +0x000031c6,0x00001303,0x00002f95,0x00002f93, +0x000600a9,0x00000019,0x000031c7,0x00001303, +0x00002f93,0x00002f95,0x000200f9,0x00001309, +0x000200f8,0x00001309,0x000700f5,0x00000019, +0x00002fb5,0x00002f97,0x000012fd,0x000031c6, +0x00001301,0x000700f5,0x00000019,0x00002fb2, +0x00002f95,0x000012fd,0x000031c7,0x00001301, +0x000600a9,0x00000019,0x000031c8,0x000012fc, +0x00002f93,0x00002f97,0x000200f9,0x0000130a, +0x000200f8,0x0000130a,0x000700f5,0x00000019, +0x00002fb4,0x00002f99,0x000012f6,0x00002fb5, +0x00001309,0x000700f5,0x00000019,0x00002fb1, +0x00002f95,0x000012f6,0x00002fb2,0x00001309, +0x000700f5,0x00000019,0x00002fae,0x00002f97, +0x000012f6,0x000031c8,0x00001309,0x000600a9, +0x00000019,0x000031c9,0x000012f5,0x00002f93, +0x00002f99,0x0004007c,0x00000006,0x00001310, +0x000031c9,0x0004007c,0x00000006,0x00001312, +0x00002fae,0x000500c4,0x00000006,0x00001313, +0x00001312,0x00000031,0x000500c5,0x00000006, +0x00001314,0x00001310,0x00001313,0x0004007c, +0x00000006,0x00001316,0x00002fb1,0x000500c4, +0x00000006,0x00001317,0x00001316,0x00000049, +0x000500c5,0x00000006,0x00001318,0x00001314, +0x00001317,0x0004007c,0x00000006,0x0000131a, +0x00002fb4,0x000500c4,0x00000006,0x0000131b, +0x0000131a,0x00000512,0x000500c5,0x00000006, +0x0000131c,0x00001318,0x0000131b,0x00050041, +0x00000007,0x0000131d,0x0000004c,0x00001233, +0x0003003e,0x0000131d,0x0000131c,0x000200f9, +0x0000131e,0x000200f8,0x0000131e,0x00050080, +0x00000019,0x00001320,0x00002ef8,0x000000c4, +0x000200f9,0x00001204,0x000200f8,0x00001321, +0x000200f9,0x00001322,0x000200f8,0x00001322, +0x00050080,0x00000019,0x00001324,0x00002ef7, +0x000000c4,0x000200f9,0x000011ff,0x000200f8, +0x00001325,0x000200f9,0x00001326,0x000200f8, +0x00001326,0x000200f9,0x00000ed0,0x000200f8, +0x00000ed0,0x000200f9,0x00000ed1,0x000200f8, +0x00000ed1,0x000700f5,0x00000006,0x00002fe9, +0x00000138,0x00000ed0,0x00000ef2,0x00000ef0, +0x000500b0,0x000000d0,0x00000ed4,0x00002fe9, +0x000000aa,0x000400f6,0x00000ef3,0x00000ef0, +0x00000000,0x000400fa,0x00000ed4,0x00000ed5, +0x00000ef3,0x000200f8,0x00000ed5,0x000200f9, +0x00000ed6,0x000200f8,0x00000ed6,0x000700f5, +0x00000006,0x00002fea,0x00000138,0x00000ed5, +0x00000eee,0x00000eda,0x000500b0,0x000000d0, +0x00000ed9,0x00002fea,0x000000aa,0x000400f6, +0x00000eef,0x00000eda,0x00000000,0x000400fa, +0x00000ed9,0x00000eda,0x00000eef,0x000200f8, +0x00000eda,0x00050084,0x00000006,0x00000edc, +0x00002d87,0x000000aa,0x00050080,0x00000006, +0x00000ede,0x00000edc,0x00002fe9,0x00050084, +0x00000006,0x00000edf,0x00000ede,0x00000031, +0x00050084,0x00000006,0x00000ee1,0x00002eaa, +0x000000aa,0x00050080,0x00000006,0x00000ee3, +0x00000ee1,0x00002fea,0x00050080,0x00000006, +0x00000ee4,0x00000edf,0x00000ee3,0x00050084, +0x00000006,0x00000ee6,0x00002fe9,0x000000aa, +0x00050080,0x00000006,0x00000ee8,0x00000ee6, +0x00002fea,0x00050041,0x00000007,0x00000ee9, +0x0000004c,0x00000ee8,0x0004003d,0x00000006, +0x00000eea,0x00000ee9,0x00050041,0x00000007, +0x00000eeb,0x0000005b,0x00000ee4,0x0003003e, +0x00000eeb,0x00000eea,0x00050080,0x00000006, +0x00000eee,0x00002fea,0x000000c4,0x000200f9, +0x00000ed6,0x000200f8,0x00000eef,0x000200f9, +0x00000ef0,0x000200f8,0x00000ef0,0x00050080, +0x00000006,0x00000ef2,0x00002fe9,0x000000c4, +0x000200f9,0x00000ed1,0x000200f8,0x00000ef3, +0x000200f9,0x00000e2f,0x000200f8,0x00000e2f, +0x00050080,0x00000006,0x00000e56,0x00002eaa, +0x000000c4,0x000200f9,0x00000e2c,0x000200f8, +0x00000e2e,0x000200f9,0x00000e27,0x000200f8, +0x00000e27,0x00050080,0x00000006,0x00000e58, +0x00002d87,0x000000c4,0x000200f9,0x00000e24, +0x000200f8,0x00000e26,0x00050041,0x00000db7, +0x00000e59,0x00000db6,0x000001dd,0x0004003d, +0x00000006,0x00000e5a,0x00000e59,0x000500ab, +0x000000d0,0x00000e5b,0x00000e5a,0x00000138, +0x000300f7,0x00000e5d,0x00000000,0x000400fa, +0x00000e5b,0x00000e5c,0x00000e5f,0x000200f8, +0x00000e5c,0x00050041,0x00000007,0x0000159c, +0x0000052f,0x0000006a,0x0003003e,0x0000159c, +0x00000138,0x00050041,0x00000007,0x0000159d, +0x0000052f,0x000000c4,0x0003003e,0x0000159d, +0x00000138,0x00050041,0x00000007,0x0000159e, +0x0000052f,0x000000ef,0x0003003e,0x0000159e, +0x00000138,0x00050041,0x00000007,0x0000159f, +0x0000052f,0x0000010e,0x0003003e,0x0000159f, +0x00000138,0x000200f9,0x0000174e,0x000200f8, +0x0000174e,0x000700f5,0x00000019,0x00002dcf, +0x0000006a,0x00000e5c,0x0000176b,0x00001769, +0x000500b1,0x000000d0,0x00001752,0x00002dcf, +0x000005f3,0x000400f6,0x0000176c,0x00001769, +0x00000000,0x000400fa,0x00001752,0x00001753, +0x0000176c,0x000200f8,0x00001753,0x0004007c, +0x00000006,0x00001756,0x00002dcf,0x000500c4, +0x00000006,0x00001757,0x00000071,0x00001756, +0x000500c7,0x00000006,0x00001758,0x00000833, +0x00001757,0x000500ab,0x000000d0,0x00001759, +0x00001758,0x00000138,0x000300f7,0x00001768, +0x00000000,0x000400fa,0x00001759,0x0000175a, +0x00001768,0x000200f8,0x0000175a,0x000500c3, +0x00000019,0x0000175f,0x00002dcf,0x000001dd, +0x000500c7,0x00000019,0x00001761,0x00002dcf, +0x00000533,0x0004007c,0x00000006,0x00001762, +0x00001761,0x000500c4,0x00000006,0x00001763, +0x00000071,0x00001762,0x00050041,0x00000007, +0x00001764,0x0000052f,0x0000175f,0x0004003d, +0x00000006,0x00001765,0x00001764,0x000500c5, +0x00000006,0x00001766,0x00001765,0x00001763, +0x0003003e,0x00001764,0x00001766,0x000200f9, +0x00001768,0x000200f8,0x00001768,0x000200f9, +0x00001769,0x000200f8,0x00001769,0x00050080, +0x00000019,0x0000176b,0x00002dcf,0x000000c4, +0x000200f9,0x0000174e,0x000200f8,0x0000176c, +0x000200f9,0x00001770,0x000200f8,0x00001770, +0x000700f5,0x00000019,0x00002dd0,0x0000006a, +0x0000176c,0x0000178d,0x0000178b,0x000500b1, +0x000000d0,0x00001774,0x00002dd0,0x000001da, +0x000400f6,0x0000178e,0x0000178b,0x00000000, +0x000400fa,0x00001774,0x00001775,0x0000178e, +0x000200f8,0x00001775,0x0004007c,0x00000006, +0x00001778,0x00002dd0,0x000500c4,0x00000006, +0x00001779,0x00000071,0x00001778,0x000500c7, +0x00000006,0x0000177a,0x000006a4,0x00001779, +0x000500ab,0x000000d0,0x0000177b,0x0000177a, +0x00000138,0x000300f7,0x0000178a,0x00000000, +0x000400fa,0x0000177b,0x0000177c,0x0000178a, +0x000200f8,0x0000177c,0x00050080,0x00000019, +0x0000177f,0x00000400,0x00002dd0,0x000500c3, +0x00000019,0x00001781,0x0000177f,0x000001dd, +0x000500c7,0x00000019,0x00001783,0x0000177f, +0x00000533,0x0004007c,0x00000006,0x00001784, +0x00001783,0x000500c4,0x00000006,0x00001785, +0x00000071,0x00001784,0x00050041,0x00000007, +0x00001786,0x0000052f,0x00001781,0x0004003d, +0x00000006,0x00001787,0x00001786,0x000500c5, +0x00000006,0x00001788,0x00001787,0x00001785, +0x0003003e,0x00001786,0x00001788,0x000200f9, +0x0000178a,0x000200f8,0x0000178a,0x000200f9, +0x0000178b,0x000200f8,0x0000178b,0x00050080, +0x00000019,0x0000178d,0x00002dd0,0x000000c4, +0x000200f9,0x00001770,0x000200f8,0x0000178e, +0x000200f9,0x000015a2,0x000200f8,0x000015a2, +0x000700f5,0x00000019,0x00002dd3,0x0000006a, +0x0000178e,0x000030ec,0x000015d3,0x000700f5, +0x00000019,0x00002dd2,0x0000006a,0x0000178e, +0x000030e9,0x000015d3,0x000700f5,0x00000019, +0x00002dd1,0x0000006a,0x0000178e,0x000015a8, +0x000015d3,0x000700f5,0x00000019,0x00002ea4, +0x00000560,0x0000178e,0x00002ea3,0x000015d3, +0x000500b1,0x000000d0,0x000015a5,0x00002dd1, +0x00000174,0x000400f6,0x000015d6,0x000015d3, +0x00000000,0x000400fa,0x000015a5,0x000015a6, +0x000015d6,0x000200f8,0x000015a6,0x00050080, +0x00000019,0x000015a8,0x00002dd1,0x000000c4, +0x000200f9,0x000015a9,0x000200f8,0x000015a9, +0x000700f5,0x00000019,0x00002ea3,0x00002ea4, +0x000015a6,0x000031ca,0x000015cf,0x000700f5, +0x00000019,0x00002e9e,0x000015a8,0x000015a6, +0x000015d1,0x000015cf,0x000700f5,0x00000019, +0x000030ec,0x00002dd3,0x000015a6,0x000031cb, +0x000015cf,0x000700f5,0x00000019,0x000030e9, +0x00002dd2,0x000015a6,0x000031cc,0x000015cf, +0x000500b1,0x000000d0,0x000015ac,0x00002e9e, +0x00000174,0x000400f6,0x000015d2,0x000015cf, +0x00000000,0x000400fa,0x000015ac,0x000015ad, +0x000015d2,0x000200f8,0x000015ad,0x000200f9, +0x000015ae,0x000200f8,0x000015ae,0x000700f5, +0x00000019,0x00002ea1,0x0000006a,0x000015ad, +0x000015c2,0x000015b2,0x000700f5,0x00000006, +0x00002ea0,0x00000138,0x000015ad,0x000015c5, +0x000015b2,0x000500b0,0x000000d0,0x000015b1, +0x00002ea0,0x00000147,0x000400f6,0x000015c6, +0x000015b2,0x00000000,0x000400fa,0x000015b1, +0x000015b2,0x000015c6,0x000200f8,0x000015b2, +0x0004007c,0x00000006,0x000015b4,0x00002dd1, +0x00050041,0x00000007,0x00001792,0x0000005b, +0x000015b4,0x0004003d,0x00000006,0x00001793, +0x00001792,0x00050084,0x00000006,0x00001795, +0x00002ea0,0x00000031,0x000500c2,0x00000006, +0x00001796,0x00001793,0x00001795,0x000500c7, +0x00000006,0x00001797,0x00001796,0x00000054, +0x0004007c,0x00000019,0x000015b7,0x00001797, +0x0004007c,0x00000006,0x000015b9,0x00002e9e, +0x00050041,0x00000007,0x0000179b,0x0000005b, +0x000015b9,0x0004003d,0x00000006,0x0000179c, +0x0000179b,0x000500c2,0x00000006,0x0000179f, +0x0000179c,0x00001795,0x000500c7,0x00000006, +0x000017a0,0x0000179f,0x00000054,0x0004007c, +0x00000019,0x000015bc,0x000017a0,0x00050082, +0x00000019,0x000015bd,0x000015b7,0x000015bc, +0x00050084,0x00000019,0x000015c0,0x000015bd, +0x000015bd,0x00050080,0x00000019,0x000015c2, +0x00002ea1,0x000015c0,0x00050080,0x00000006, +0x000015c5,0x00002ea0,0x000000c4,0x000200f9, +0x000015ae,0x000200f8,0x000015c6,0x000500ad, +0x000000d0,0x000015c9,0x00002ea1,0x00002ea3, +0x000600a9,0x00000019,0x000031ca,0x000015c9, +0x00002ea1,0x00002ea3,0x000600a9,0x00000019, +0x000031cb,0x000015c9,0x00002e9e,0x000030ec, +0x000600a9,0x00000019,0x000031cc,0x000015c9, +0x00002dd1,0x000030e9,0x000200f9,0x000015cf, +0x000200f8,0x000015cf,0x00050080,0x00000019, +0x000015d1,0x00002e9e,0x000000c4,0x000200f9, +0x000015a9,0x000200f8,0x000015d2,0x000200f9, +0x000015d3,0x000200f8,0x000015d3,0x000200f9, +0x000015a2,0x000200f8,0x000015d6,0x0004007c, +0x00000006,0x000015d8,0x00002dd2,0x00050041, +0x00000007,0x000017a4,0x0000005b,0x000015d8, +0x0004003d,0x00000006,0x000017a5,0x000017a4, +0x000500c2,0x00000006,0x000017a8,0x000017a5, +0x00000138,0x000500c7,0x00000006,0x000017a9, +0x000017a8,0x00000054,0x0004003d,0x00000006, +0x000017ae,0x000017a4,0x000500c2,0x00000006, +0x000017b1,0x000017ae,0x00000031,0x000500c7, +0x00000006,0x000017b2,0x000017b1,0x00000054, +0x00050080,0x00000006,0x000015dd,0x000017a9, +0x000017b2,0x0004003d,0x00000006,0x000017b7, +0x000017a4,0x000500c2,0x00000006,0x000017ba, +0x000017b7,0x00000049,0x000500c7,0x00000006, +0x000017bb,0x000017ba,0x00000054,0x00050080, +0x00000006,0x000015e1,0x000015dd,0x000017bb, +0x0004007c,0x00000019,0x000015e2,0x000015e1, +0x0004007c,0x00000006,0x000015e4,0x00002dd3, +0x00050041,0x00000007,0x000017bf,0x0000005b, +0x000015e4,0x0004003d,0x00000006,0x000017c0, +0x000017bf,0x000500c2,0x00000006,0x000017c3, +0x000017c0,0x00000138,0x000500c7,0x00000006, +0x000017c4,0x000017c3,0x00000054,0x0004003d, +0x00000006,0x000017c9,0x000017bf,0x000500c2, +0x00000006,0x000017cc,0x000017c9,0x00000031, +0x000500c7,0x00000006,0x000017cd,0x000017cc, +0x00000054,0x00050080,0x00000006,0x000015e9, +0x000017c4,0x000017cd,0x0004003d,0x00000006, +0x000017d2,0x000017bf,0x000500c2,0x00000006, +0x000017d5,0x000017d2,0x00000049,0x000500c7, +0x00000006,0x000017d6,0x000017d5,0x00000054, +0x00050080,0x00000006,0x000015ed,0x000015e9, +0x000017d6,0x0004007c,0x00000019,0x000015ee, +0x000015ed,0x000500af,0x000000d0,0x000015f1, +0x000015ee,0x000015e2,0x000600a9,0x00000019, +0x000015f4,0x000015f1,0x00002dd2,0x00002dd3, +0x000600a9,0x00000019,0x000015fa,0x000015f1, +0x00002dd3,0x00002dd2,0x000200f9,0x000015fb, +0x000200f8,0x000015fb,0x000700f5,0x00000019, +0x00002dd6,0x0000006a,0x000015d6,0x000031ce, +0x000015ff,0x000700f5,0x00000019,0x00002dd5, +0x00000315,0x000015d6,0x000031cd,0x000015ff, +0x000700f5,0x00000019,0x00002dd4,0x0000006a, +0x000015d6,0x00001612,0x000015ff,0x000500b1, +0x000000d0,0x000015fe,0x00002dd4,0x00000174, +0x000400f6,0x00001613,0x000015ff,0x00000000, +0x000400fa,0x000015fe,0x000015ff,0x00001613, +0x000200f8,0x000015ff,0x0004007c,0x00000006, +0x00001601,0x00002dd4,0x00050041,0x00000007, +0x000017da,0x0000005b,0x00001601,0x0004003d, +0x00000006,0x000017db,0x000017da,0x000500c2, +0x00000006,0x000017de,0x000017db,0x00000512, +0x000500c7,0x00000006,0x000017df,0x000017de, +0x00000054,0x0004007c,0x00000019,0x00001603, +0x000017df,0x000500b1,0x000000d0,0x00001606, +0x00001603,0x00002dd5,0x000600a9,0x00000019, +0x000031cd,0x00001606,0x00001603,0x00002dd5, +0x000500ad,0x000000d0,0x0000160c,0x00001603, +0x00002dd6,0x000600a9,0x00000019,0x000031ce, +0x0000160c,0x00001603,0x00002dd6,0x00050080, +0x00000019,0x00001612,0x00002dd4,0x000000c4, +0x000200f9,0x000015fb,0x000200f8,0x00001613, +0x0004007c,0x00000006,0x00001615,0x000015f4, +0x00050041,0x00000007,0x000017e3,0x0000005b, +0x00001615,0x0004003d,0x00000006,0x000017e4, +0x000017e3,0x000500c2,0x00000006,0x000017e7, +0x000017e4,0x00000138,0x000500c7,0x00000006, +0x000017e8,0x000017e7,0x00000054,0x0004007c, +0x00000019,0x00001617,0x000017e8,0x0004003d, +0x00000006,0x000017ed,0x000017e3,0x000500c2, +0x00000006,0x000017f0,0x000017ed,0x00000031, +0x000500c7,0x00000006,0x000017f1,0x000017f0, +0x00000054,0x0004007c,0x00000019,0x0000161b, +0x000017f1,0x0004003d,0x00000006,0x000017f6, +0x000017e3,0x000500c2,0x00000006,0x000017f9, +0x000017f6,0x00000049,0x000500c7,0x00000006, +0x000017fa,0x000017f9,0x00000054,0x0004007c, +0x00000019,0x0000161f,0x000017fa,0x00070050, +0x000001fd,0x00001621,0x00001617,0x0000161b, +0x0000161f,0x00002dd5,0x0003003e,0x00001555, +0x00001621,0x0004007c,0x00000006,0x00001623, +0x000015fa,0x00050041,0x00000007,0x000017fe, +0x0000005b,0x00001623,0x0004003d,0x00000006, +0x000017ff,0x000017fe,0x000500c2,0x00000006, +0x00001802,0x000017ff,0x00000138,0x000500c7, +0x00000006,0x00001803,0x00001802,0x00000054, +0x0004007c,0x00000019,0x00001625,0x00001803, +0x0004003d,0x00000006,0x00001808,0x000017fe, +0x000500c2,0x00000006,0x0000180b,0x00001808, +0x00000031,0x000500c7,0x00000006,0x0000180c, +0x0000180b,0x00000054,0x0004007c,0x00000019, +0x00001629,0x0000180c,0x0004003d,0x00000006, +0x00001811,0x000017fe,0x000500c2,0x00000006, +0x00001814,0x00001811,0x00000049,0x000500c7, +0x00000006,0x00001815,0x00001814,0x00000054, +0x0004007c,0x00000019,0x0000162d,0x00001815, +0x00070050,0x000001fd,0x0000162f,0x00001625, +0x00001629,0x0000162d,0x00002dd6,0x0003003e, +0x0000155c,0x0000162f,0x00050041,0x0000001a, +0x00001630,0x00001555,0x0000006a,0x0004003d, +0x00000019,0x00001631,0x00001630,0x000500b1, +0x000000d0,0x0000181a,0x00001631,0x0000006a, +0x000600a9,0x00000019,0x000031cf,0x0000181a, +0x0000006a,0x00001631,0x000500ad,0x000000d0, +0x0000181e,0x000031cf,0x00000315,0x000600a9, +0x00000019,0x000031d0,0x0000181e,0x00000315, +0x000031cf,0x0003003e,0x00001816,0x00000826, +0x00050041,0x00000007,0x00001822,0x00001816, +0x000031d0,0x0004003d,0x00000006,0x00001823, +0x00001822,0x0004007c,0x00000019,0x00001824, +0x00001823,0x00050041,0x0000001a,0x00001633, +0x0000155c,0x0000006a,0x0004003d,0x00000019, +0x00001634,0x00001633,0x000500b1,0x000000d0, +0x00001829,0x00001634,0x0000006a,0x000600a9, +0x00000019,0x000031d1,0x00001829,0x0000006a, +0x00001634,0x000500ad,0x000000d0,0x0000182d, +0x000031d1,0x00000315,0x000600a9,0x00000019, +0x000031d2,0x0000182d,0x00000315,0x000031d1, +0x0003003e,0x00001825,0x00000826,0x00050041, +0x00000007,0x00001831,0x00001825,0x000031d2, +0x0004003d,0x00000006,0x00001832,0x00001831, +0x0004007c,0x00000019,0x00001833,0x00001832, +0x00050041,0x0000001a,0x00001636,0x00001555, +0x000000c4,0x0004003d,0x00000019,0x00001637, +0x00001636,0x000500b1,0x000000d0,0x00001838, +0x00001637,0x0000006a,0x000600a9,0x00000019, +0x000031d3,0x00001838,0x0000006a,0x00001637, +0x000500ad,0x000000d0,0x0000183c,0x000031d3, +0x00000315,0x000600a9,0x00000019,0x000031d4, +0x0000183c,0x00000315,0x000031d3,0x0003003e, +0x00001834,0x00000826,0x00050041,0x00000007, +0x00001840,0x00001834,0x000031d4,0x0004003d, +0x00000006,0x00001841,0x00001840,0x0004007c, +0x00000019,0x00001842,0x00001841,0x00050041, +0x0000001a,0x00001639,0x0000155c,0x000000c4, +0x0004003d,0x00000019,0x0000163a,0x00001639, +0x000500b1,0x000000d0,0x00001847,0x0000163a, +0x0000006a,0x000600a9,0x00000019,0x000031d5, +0x00001847,0x0000006a,0x0000163a,0x000500ad, +0x000000d0,0x0000184b,0x000031d5,0x00000315, +0x000600a9,0x00000019,0x000031d6,0x0000184b, +0x00000315,0x000031d5,0x0003003e,0x00001843, +0x00000826,0x00050041,0x00000007,0x0000184f, +0x00001843,0x000031d6,0x0004003d,0x00000006, +0x00001850,0x0000184f,0x0004007c,0x00000019, +0x00001851,0x00001850,0x00050041,0x0000001a, +0x0000163c,0x00001555,0x000000ef,0x0004003d, +0x00000019,0x0000163d,0x0000163c,0x000500b1, +0x000000d0,0x00001856,0x0000163d,0x0000006a, +0x000600a9,0x00000019,0x000031d7,0x00001856, +0x0000006a,0x0000163d,0x000500ad,0x000000d0, +0x0000185a,0x000031d7,0x00000315,0x000600a9, +0x00000019,0x000031d8,0x0000185a,0x00000315, +0x000031d7,0x0003003e,0x00001852,0x00000826, +0x00050041,0x00000007,0x0000185e,0x00001852, +0x000031d8,0x0004003d,0x00000006,0x0000185f, +0x0000185e,0x0004007c,0x00000019,0x00001860, +0x0000185f,0x00050041,0x0000001a,0x0000163f, +0x0000155c,0x000000ef,0x0004003d,0x00000019, +0x00001640,0x0000163f,0x000500b1,0x000000d0, +0x00001865,0x00001640,0x0000006a,0x000600a9, +0x00000019,0x000031d9,0x00001865,0x0000006a, +0x00001640,0x000500ad,0x000000d0,0x00001869, +0x000031d9,0x00000315,0x000600a9,0x00000019, +0x000031da,0x00001869,0x00000315,0x000031d9, +0x0003003e,0x00001861,0x00000826,0x00050041, +0x00000007,0x0000186d,0x00001861,0x000031da, +0x0004003d,0x00000006,0x0000186e,0x0000186d, +0x0004007c,0x00000019,0x0000186f,0x0000186e, +0x00050041,0x0000001a,0x00001642,0x00001555, +0x0000010e,0x0004003d,0x00000019,0x00001643, +0x00001642,0x000500b1,0x000000d0,0x00001874, +0x00001643,0x0000006a,0x000600a9,0x00000019, +0x000031db,0x00001874,0x0000006a,0x00001643, +0x000500ad,0x000000d0,0x00001878,0x000031db, +0x00000315,0x000600a9,0x00000019,0x000031dc, +0x00001878,0x00000315,0x000031db,0x0003003e, +0x00001870,0x00000826,0x00050041,0x00000007, +0x0000187c,0x00001870,0x000031dc,0x0004003d, +0x00000006,0x0000187d,0x0000187c,0x0004007c, +0x00000019,0x0000187e,0x0000187d,0x00050041, +0x0000001a,0x00001645,0x0000155c,0x0000010e, +0x0004003d,0x00000019,0x00001646,0x00001645, +0x000500b1,0x000000d0,0x00001883,0x00001646, +0x0000006a,0x000600a9,0x00000019,0x000031dd, +0x00001883,0x0000006a,0x00001646,0x000500ad, +0x000000d0,0x00001887,0x000031dd,0x00000315, +0x000600a9,0x00000019,0x000031de,0x00001887, +0x00000315,0x000031dd,0x0003003e,0x0000187f, +0x00000826,0x00050041,0x00000007,0x0000188b, +0x0000187f,0x000031de,0x0004003d,0x00000006, +0x0000188c,0x0000188b,0x0004007c,0x00000019, +0x0000188d,0x0000188c,0x000b0050,0x00000032, +0x00001648,0x00001824,0x00001833,0x00001842, +0x00001851,0x00001860,0x0000186f,0x0000187e, +0x0000188d,0x0003003e,0x00001563,0x00001648, +0x00050041,0x0000001a,0x00001649,0x00001563, +0x0000006a,0x0004003d,0x00000019,0x0000164a, +0x00001649,0x0003003e,0x0000156d,0x00000920, +0x00050041,0x00000007,0x0000164b,0x0000156d, +0x0000164a,0x0004003d,0x00000006,0x0000164c, +0x0000164b,0x0004007c,0x00000019,0x0000164d, +0x0000164c,0x00050041,0x0000001a,0x0000164e, +0x00001563,0x000000ef,0x0004003d,0x00000019, +0x0000164f,0x0000164e,0x0003003e,0x0000156e, +0x00000920,0x00050041,0x00000007,0x00001650, +0x0000156e,0x0000164f,0x0004003d,0x00000006, +0x00001651,0x00001650,0x0004007c,0x00000019, +0x00001652,0x00001651,0x00050080,0x00000019, +0x00001653,0x0000164d,0x00001652,0x00050041, +0x0000001a,0x00001654,0x00001563,0x000001da, +0x0004003d,0x00000019,0x00001655,0x00001654, +0x0003003e,0x0000156f,0x00000920,0x00050041, +0x00000007,0x00001656,0x0000156f,0x00001655, +0x0004003d,0x00000006,0x00001657,0x00001656, +0x0004007c,0x00000019,0x00001658,0x00001657, +0x00050080,0x00000019,0x00001659,0x00001653, +0x00001658,0x00050041,0x0000001a,0x0000165a, +0x00001563,0x000000c4,0x0004003d,0x00000019, +0x0000165b,0x0000165a,0x0003003e,0x00001571, +0x00000920,0x00050041,0x00000007,0x0000165c, +0x00001571,0x0000165b,0x0004003d,0x00000006, +0x0000165d,0x0000165c,0x0004007c,0x00000019, +0x0000165e,0x0000165d,0x00050041,0x0000001a, +0x0000165f,0x00001563,0x0000010e,0x0004003d, +0x00000019,0x00001660,0x0000165f,0x0003003e, +0x00001572,0x00000920,0x00050041,0x00000007, +0x00001661,0x00001572,0x00001660,0x0004003d, +0x00000006,0x00001662,0x00001661,0x0004007c, +0x00000019,0x00001663,0x00001662,0x00050080, +0x00000019,0x00001664,0x0000165e,0x00001663, +0x00050041,0x0000001a,0x00001665,0x00001563, +0x000001dd,0x0004003d,0x00000019,0x00001666, +0x00001665,0x0003003e,0x00001573,0x00000920, +0x00050041,0x00000007,0x00001667,0x00001573, +0x00001666,0x0004003d,0x00000006,0x00001668, +0x00001667,0x0004007c,0x00000019,0x00001669, +0x00001668,0x00050080,0x00000019,0x0000166a, +0x00001664,0x00001669,0x000500b1,0x000000d0, +0x0000166d,0x0000166a,0x00001659,0x000600a9, +0x00000019,0x0000166e,0x0000166d,0x000000c4, +0x0000006a,0x000500ab,0x000000d0,0x00001670, +0x0000166e,0x0000006a,0x000300f7,0x00001688, +0x00000000,0x000400fa,0x00001670,0x00001671, +0x00001688,0x000200f8,0x00001671,0x000200f9, +0x00001672,0x000200f8,0x00001672,0x000700f5, +0x00000019,0x00002de7,0x0000006a,0x00001671, +0x00001686,0x00001676,0x000500b1,0x000000d0, +0x00001675,0x00002de7,0x0000019a,0x000400f6, +0x00001687,0x00001676,0x00000000,0x000400fa, +0x00001675,0x00001676,0x00001687,0x000200f8, +0x00001676,0x00050041,0x0000001a,0x00001678, +0x00001563,0x00002de7,0x0004003d,0x00000019, +0x00001679,0x00001678,0x00050080,0x00000019, +0x0000167c,0x00002de7,0x000000c4,0x00050041, +0x0000001a,0x0000167d,0x00001563,0x0000167c, +0x0004003d,0x00000019,0x0000167e,0x0000167d, +0x0003003e,0x00001678,0x0000167e,0x0003003e, +0x0000167d,0x00001679,0x00050080,0x00000019, +0x00001686,0x00002de7,0x000000ef,0x000200f9, +0x00001672,0x000200f8,0x00001687,0x000200f9, +0x00001688,0x000200f8,0x00001688,0x0004003d, +0x00000032,0x00001689,0x00001563,0x0003003e, +0x00001577,0x00001689,0x00050041,0x0000001a, +0x000018a8,0x00001577,0x0000006a,0x0004003d, +0x00000019,0x000018a9,0x000018a8,0x000500c3, +0x00000019,0x000018aa,0x000018a9,0x000001da, +0x00050041,0x0000001a,0x000018ab,0x00001577, +0x000000c4,0x0004003d,0x00000019,0x000018ac, +0x000018ab,0x000500c3,0x00000019,0x000018ad, +0x000018ac,0x000001da,0x00050084,0x00000019, +0x000018ae,0x0000010e,0x000018ad,0x00050080, +0x00000019,0x000018af,0x000018aa,0x000018ae, +0x00050041,0x0000001a,0x000018b0,0x00001577, +0x000000ef,0x0004003d,0x00000019,0x000018b1, +0x000018b0,0x000500c3,0x00000019,0x000018b2, +0x000018b1,0x000001da,0x00050084,0x00000019, +0x000018b3,0x000003f4,0x000018b2,0x00050080, +0x00000019,0x000018b4,0x000018af,0x000018b3, +0x00050041,0x0000001a,0x000018b5,0x00001577, +0x0000010e,0x0004003d,0x00000019,0x000018b6, +0x000018b5,0x000500c3,0x00000019,0x000018b7, +0x000018b6,0x000001da,0x00050084,0x00000019, +0x000018b8,0x000003f6,0x000018b7,0x00050080, +0x00000019,0x000018b9,0x000018b4,0x000018b8, +0x00050041,0x0000001a,0x000018ba,0x00001577, +0x000001da,0x0004003d,0x00000019,0x000018bb, +0x000018ba,0x000500c3,0x00000019,0x000018bc, +0x000018bb,0x000001da,0x00050084,0x00000019, +0x000018bd,0x00000787,0x000018bc,0x00050080, +0x00000019,0x000018be,0x000018b9,0x000018bd, +0x0003003e,0x00001890,0x00000774,0x00050041, +0x00000007,0x000018bf,0x00001890,0x000018be, +0x0004003d,0x00000006,0x000018c0,0x000018bf, +0x0004007c,0x00000019,0x000018c1,0x000018c0, +0x000200f9,0x000018c2,0x000200f8,0x000018c2, +0x000700f5,0x00000019,0x00002de8,0x0000006a, +0x00001688,0x000018d4,0x000018d2,0x000500b1, +0x000000d0,0x000018c5,0x00002de8,0x000001dd, +0x000400f6,0x000018d5,0x000018d2,0x00000000, +0x000400fa,0x000018c5,0x000018c6,0x000018d5, +0x000200f8,0x000018c6,0x0003003e,0x00001892, +0x0000079e,0x00050041,0x0000001a,0x000018c9, +0x00001892,0x00002de8,0x0004003d,0x00000019, +0x000018ca,0x000018c9,0x00050080,0x00000019, +0x000018cb,0x00000401,0x000018ca,0x00050041, +0x0000001a,0x000018cd,0x00001577,0x00002de8, +0x0004003d,0x00000019,0x000018ce,0x000018cd, +0x000500c7,0x00000019,0x000018cf,0x000018ce, +0x000007a8,0x0004007c,0x00000006,0x000018d0, +0x000018cf,0x000200f9,0x0000192a,0x000200f8, +0x0000192a,0x000700f5,0x00000019,0x00002e98, +0x0000006a,0x000018c6,0x00001947,0x00001945, +0x000500b1,0x000000d0,0x0000192e,0x00002e98, +0x000001da,0x000400f6,0x00001948,0x00001945, +0x00000000,0x000400fa,0x0000192e,0x0000192f, +0x00001948,0x000200f8,0x0000192f,0x0004007c, +0x00000006,0x00001932,0x00002e98,0x000500c4, +0x00000006,0x00001933,0x00000071,0x00001932, +0x000500c7,0x00000006,0x00001934,0x000018d0, +0x00001933,0x000500ab,0x000000d0,0x00001935, +0x00001934,0x00000138,0x000300f7,0x00001944, +0x00000000,0x000400fa,0x00001935,0x00001936, +0x00001944,0x000200f8,0x00001936,0x00050080, +0x00000019,0x00001939,0x000018cb,0x00002e98, +0x000500c3,0x00000019,0x0000193b,0x00001939, +0x000001dd,0x000500c7,0x00000019,0x0000193d, +0x00001939,0x00000533,0x0004007c,0x00000006, +0x0000193e,0x0000193d,0x000500c4,0x00000006, +0x0000193f,0x00000071,0x0000193e,0x00050041, +0x00000007,0x00001940,0x0000052f,0x0000193b, +0x0004003d,0x00000006,0x00001941,0x00001940, +0x000500c5,0x00000006,0x00001942,0x00001941, +0x0000193f,0x0003003e,0x00001940,0x00001942, +0x000200f9,0x00001944,0x000200f8,0x00001944, +0x000200f9,0x00001945,0x000200f8,0x00001945, +0x00050080,0x00000019,0x00001947,0x00002e98, +0x000000c4,0x000200f9,0x0000192a,0x000200f8, +0x00001948,0x000200f9,0x000018d2,0x000200f8, +0x000018d2,0x00050080,0x00000019,0x000018d4, +0x00002de8,0x000000c4,0x000200f9,0x000018c2, +0x000200f8,0x000018d5,0x000200f9,0x000018d6, +0x000200f8,0x000018d6,0x000700f5,0x00000019, +0x00002de9,0x0000006a,0x000018d5,0x000018ea, +0x000018e8,0x000500b1,0x000000d0,0x000018d9, +0x00002de9,0x0000019a,0x000400f6,0x000018eb, +0x000018e8,0x00000000,0x000400fa,0x000018d9, +0x000018da,0x000018eb,0x000200f8,0x000018da, +0x000500c3,0x00000019,0x000018dd,0x000018c1, +0x00002de9,0x000500c7,0x00000019,0x000018de, +0x000018dd,0x000000c4,0x000500ab,0x000000d0, +0x000018df,0x000018de,0x0000006a,0x000300f7, +0x000018e7,0x00000000,0x000400fa,0x000018df, +0x000018e0,0x000018e7,0x000200f8,0x000018e0, +0x0003003e,0x00001897,0x000007c3,0x00050041, +0x0000001a,0x000018e3,0x00001897,0x00002de9, +0x0004003d,0x00000019,0x000018e4,0x000018e3, +0x00050080,0x00000019,0x000018e5,0x00000401, +0x000018e4,0x000200f9,0x0000194c,0x000200f8, +0x0000194c,0x000700f5,0x00000019,0x00002e94, +0x0000006a,0x000018e0,0x00001969,0x00001967, +0x000500b1,0x000000d0,0x00001950,0x00002e94, +0x000000c4,0x000400f6,0x0000196a,0x00001967, +0x00000000,0x000400fa,0x00001950,0x00001951, +0x0000196a,0x000200f8,0x00001951,0x0004007c, +0x00000006,0x00001954,0x00002e94,0x000500c4, +0x00000006,0x00001955,0x00000071,0x00001954, +0x000500c7,0x00000006,0x00001956,0x00000071, +0x00001955,0x000500ab,0x000000d0,0x00001957, +0x00001956,0x00000138,0x000300f7,0x00001966, +0x00000000,0x000400fa,0x00001957,0x00001958, +0x00001966,0x000200f8,0x00001958,0x00050080, +0x00000019,0x0000195b,0x000018e5,0x00002e94, +0x000500c3,0x00000019,0x0000195d,0x0000195b, +0x000001dd,0x000500c7,0x00000019,0x0000195f, +0x0000195b,0x00000533,0x0004007c,0x00000006, +0x00001960,0x0000195f,0x000500c4,0x00000006, +0x00001961,0x00000071,0x00001960,0x00050041, +0x00000007,0x00001962,0x0000052f,0x0000195d, +0x0004003d,0x00000006,0x00001963,0x00001962, +0x000500c5,0x00000006,0x00001964,0x00001963, +0x00001961,0x0003003e,0x00001962,0x00001964, +0x000200f9,0x00001966,0x000200f8,0x00001966, +0x000200f9,0x00001967,0x000200f8,0x00001967, +0x00050080,0x00000019,0x00001969,0x00002e94, +0x000000c4,0x000200f9,0x0000194c,0x000200f8, +0x0000196a,0x000200f9,0x000018e7,0x000200f8, +0x000018e7,0x000200f9,0x000018e8,0x000200f8, +0x000018e8,0x00050080,0x00000019,0x000018ea, +0x00002de9,0x000000c4,0x000200f9,0x000018d6, +0x000200f8,0x000018eb,0x00050041,0x0000001a, +0x000018ec,0x00001577,0x000001dd,0x0004003d, +0x00000019,0x000018ed,0x000018ec,0x000500c3, +0x00000019,0x000018ee,0x000018ed,0x000001da, +0x00050041,0x0000001a,0x000018ef,0x00001577, +0x0000017e,0x0004003d,0x00000019,0x000018f0, +0x000018ef,0x000500c3,0x00000019,0x000018f1, +0x000018f0,0x000001da,0x00050084,0x00000019, +0x000018f2,0x0000010e,0x000018f1,0x00050080, +0x00000019,0x000018f3,0x000018ee,0x000018f2, +0x00050041,0x0000001a,0x000018f4,0x00001577, +0x000001c5,0x0004003d,0x00000019,0x000018f5, +0x000018f4,0x000500c3,0x00000019,0x000018f6, +0x000018f5,0x000001da,0x00050084,0x00000019, +0x000018f7,0x000003f4,0x000018f6,0x00050080, +0x00000019,0x000018f8,0x000018f3,0x000018f7, +0x0003003e,0x0000189c,0x000007d2,0x00050041, +0x00000007,0x000018f9,0x0000189c,0x000018f8, +0x0004003d,0x00000006,0x000018fa,0x000018f9, +0x0004007c,0x00000019,0x000018fb,0x000018fa, +0x000200f9,0x000018fc,0x000200f8,0x000018fc, +0x000700f5,0x00000019,0x00002dea,0x0000006a, +0x000018eb,0x0000190f,0x0000190d,0x000500b1, +0x000000d0,0x000018ff,0x00002dea,0x0000010e, +0x000400f6,0x00001910,0x0000190d,0x00000000, +0x000400fa,0x000018ff,0x00001900,0x00001910, +0x000200f8,0x00001900,0x0003003e,0x0000189e, +0x0000079e,0x00050041,0x0000001a,0x00001903, +0x0000189e,0x00002dea,0x0004003d,0x00000019, +0x00001904,0x00001903,0x00050080,0x00000019, +0x00001905,0x000007cf,0x00001904,0x00050080, +0x00000019,0x00001907,0x000001dd,0x00002dea, +0x00050041,0x0000001a,0x00001908,0x00001577, +0x00001907,0x0004003d,0x00000019,0x00001909, +0x00001908,0x000500c7,0x00000019,0x0000190a, +0x00001909,0x000007a8,0x0004007c,0x00000006, +0x0000190b,0x0000190a,0x000200f9,0x0000196e, +0x000200f8,0x0000196e,0x000700f5,0x00000019, +0x00002e8f,0x0000006a,0x00001900,0x0000198b, +0x00001989,0x000500b1,0x000000d0,0x00001972, +0x00002e8f,0x000001da,0x000400f6,0x0000198c, +0x00001989,0x00000000,0x000400fa,0x00001972, +0x00001973,0x0000198c,0x000200f8,0x00001973, +0x0004007c,0x00000006,0x00001976,0x00002e8f, +0x000500c4,0x00000006,0x00001977,0x00000071, +0x00001976,0x000500c7,0x00000006,0x00001978, +0x0000190b,0x00001977,0x000500ab,0x000000d0, +0x00001979,0x00001978,0x00000138,0x000300f7, +0x00001988,0x00000000,0x000400fa,0x00001979, +0x0000197a,0x00001988,0x000200f8,0x0000197a, +0x00050080,0x00000019,0x0000197d,0x00001905, +0x00002e8f,0x000500c3,0x00000019,0x0000197f, +0x0000197d,0x000001dd,0x000500c7,0x00000019, +0x00001981,0x0000197d,0x00000533,0x0004007c, +0x00000006,0x00001982,0x00001981,0x000500c4, +0x00000006,0x00001983,0x00000071,0x00001982, +0x00050041,0x00000007,0x00001984,0x0000052f, +0x0000197f,0x0004003d,0x00000006,0x00001985, +0x00001984,0x000500c5,0x00000006,0x00001986, +0x00001985,0x00001983,0x0003003e,0x00001984, +0x00001986,0x000200f9,0x00001988,0x000200f8, +0x00001988,0x000200f9,0x00001989,0x000200f8, +0x00001989,0x00050080,0x00000019,0x0000198b, +0x00002e8f,0x000000c4,0x000200f9,0x0000196e, +0x000200f8,0x0000198c,0x000200f9,0x0000190d, +0x000200f8,0x0000190d,0x00050080,0x00000019, +0x0000190f,0x00002dea,0x000000c4,0x000200f9, +0x000018fc,0x000200f8,0x00001910,0x000200f9, +0x00001911,0x000200f8,0x00001911,0x000700f5, +0x00000019,0x00002deb,0x0000006a,0x00001910, +0x00001925,0x00001923,0x000500b1,0x000000d0, +0x00001914,0x00002deb,0x000001dd,0x000400f6, +0x00001926,0x00001923,0x00000000,0x000400fa, +0x00001914,0x00001915,0x00001926,0x000200f8, +0x00001915,0x000500c3,0x00000019,0x00001918, +0x000018fb,0x00002deb,0x000500c7,0x00000019, +0x00001919,0x00001918,0x000000c4,0x000500ab, +0x000000d0,0x0000191a,0x00001919,0x0000006a, +0x000300f7,0x00001922,0x00000000,0x000400fa, +0x0000191a,0x0000191b,0x00001922,0x000200f8, +0x0000191b,0x0003003e,0x000018a3,0x000007c3, +0x00050041,0x0000001a,0x0000191e,0x000018a3, +0x00002deb,0x0004003d,0x00000019,0x0000191f, +0x0000191e,0x00050080,0x00000019,0x00001920, +0x000007cf,0x0000191f,0x000200f9,0x00001990, +0x000200f8,0x00001990,0x000700f5,0x00000019, +0x00002e8b,0x0000006a,0x0000191b,0x000019ad, +0x000019ab,0x000500b1,0x000000d0,0x00001994, +0x00002e8b,0x000000c4,0x000400f6,0x000019ae, +0x000019ab,0x00000000,0x000400fa,0x00001994, +0x00001995,0x000019ae,0x000200f8,0x00001995, +0x0004007c,0x00000006,0x00001998,0x00002e8b, +0x000500c4,0x00000006,0x00001999,0x00000071, +0x00001998,0x000500c7,0x00000006,0x0000199a, +0x00000071,0x00001999,0x000500ab,0x000000d0, +0x0000199b,0x0000199a,0x00000138,0x000300f7, +0x000019aa,0x00000000,0x000400fa,0x0000199b, +0x0000199c,0x000019aa,0x000200f8,0x0000199c, +0x00050080,0x00000019,0x0000199f,0x00001920, +0x00002e8b,0x000500c3,0x00000019,0x000019a1, +0x0000199f,0x000001dd,0x000500c7,0x00000019, +0x000019a3,0x0000199f,0x00000533,0x0004007c, +0x00000006,0x000019a4,0x000019a3,0x000500c4, +0x00000006,0x000019a5,0x00000071,0x000019a4, +0x00050041,0x00000007,0x000019a6,0x0000052f, +0x000019a1,0x0004003d,0x00000006,0x000019a7, +0x000019a6,0x000500c5,0x00000006,0x000019a8, +0x000019a7,0x000019a5,0x0003003e,0x000019a6, +0x000019a8,0x000200f9,0x000019aa,0x000200f8, +0x000019aa,0x000200f9,0x000019ab,0x000200f8, +0x000019ab,0x00050080,0x00000019,0x000019ad, +0x00002e8b,0x000000c4,0x000200f9,0x00001990, +0x000200f8,0x000019ae,0x000200f9,0x00001922, +0x000200f8,0x00001922,0x000200f9,0x00001923, +0x000200f8,0x00001923,0x00050080,0x00000019, +0x00001925,0x00002deb,0x000000c4,0x000200f9, +0x00001911,0x000200f8,0x00001926,0x000200f9, +0x000019b2,0x000200f8,0x000019b2,0x000700f5, +0x00000019,0x00002dec,0x0000006a,0x00001926, +0x000019cf,0x000019cd,0x000500b1,0x000000d0, +0x000019b6,0x00002dec,0x000000ef,0x000400f6, +0x000019d0,0x000019cd,0x00000000,0x000400fa, +0x000019b6,0x000019b7,0x000019d0,0x000200f8, +0x000019b7,0x0004007c,0x00000006,0x000019ba, +0x00002dec,0x000500c4,0x00000006,0x000019bb, +0x00000071,0x000019ba,0x000500c7,0x00000006, +0x000019bc,0x00000147,0x000019bb,0x000500ab, +0x000000d0,0x000019bd,0x000019bc,0x00000138, +0x000300f7,0x000019cc,0x00000000,0x000400fa, +0x000019bd,0x000019be,0x000019cc,0x000200f8, +0x000019be,0x00050080,0x00000019,0x000019c1, +0x0000096f,0x00002dec,0x000500c3,0x00000019, +0x000019c3,0x000019c1,0x000001dd,0x000500c7, +0x00000019,0x000019c5,0x000019c1,0x00000533, +0x0004007c,0x00000006,0x000019c6,0x000019c5, +0x000500c4,0x00000006,0x000019c7,0x00000071, +0x000019c6,0x00050041,0x00000007,0x000019c8, +0x0000052f,0x000019c3,0x0004003d,0x00000006, +0x000019c9,0x000019c8,0x000500c5,0x00000006, +0x000019ca,0x000019c9,0x000019c7,0x0003003e, +0x000019c8,0x000019ca,0x000200f9,0x000019cc, +0x000200f8,0x000019cc,0x000200f9,0x000019cd, +0x000200f8,0x000019cd,0x00050080,0x00000019, +0x000019cf,0x00002dec,0x000000c4,0x000200f9, +0x000019b2,0x000200f8,0x000019d0,0x000200f9, +0x0000168c,0x000200f8,0x0000168c,0x000700f5, +0x00000019,0x00002e3f,0x0000006a,0x000019d0, +0x000016a2,0x00001690,0x000700f5,0x00000006, +0x00002ded,0x00000138,0x000019d0,0x000016a5, +0x00001690,0x000500b0,0x000000d0,0x0000168f, +0x00002ded,0x00000147,0x000400f6,0x000016a6, +0x00001690,0x00000000,0x000400fa,0x0000168f, +0x00001690,0x000016a6,0x000200f8,0x00001690, +0x00050041,0x0000001a,0x00001693,0x0000155c, +0x00002ded,0x0004003d,0x00000019,0x00001694, +0x00001693,0x00050041,0x0000001a,0x00001696, +0x00001555,0x00002ded,0x0004003d,0x00000019, +0x00001697,0x00001696,0x00050082,0x00000019, +0x00001698,0x00001694,0x00001697,0x00050041, +0x0000001a,0x00001699,0x0000157d,0x00002ded, +0x0003003e,0x00001699,0x00001698,0x0004003d, +0x00000019,0x0000169c,0x00001699,0x0004003d, +0x00000019,0x0000169f,0x00001699,0x00050084, +0x00000019,0x000016a0,0x0000169c,0x0000169f, +0x00050080,0x00000019,0x000016a2,0x00002e3f, +0x000016a0,0x00050080,0x00000006,0x000016a5, +0x00002ded,0x000000c4,0x000200f9,0x0000168c, +0x000200f8,0x000016a6,0x00050082,0x00000019, +0x000016a9,0x00002dd6,0x00002dd5,0x000200f9, +0x000016aa,0x000200f8,0x000016aa,0x000700f5, +0x00000019,0x00002e1e,0x0000006a,0x000016a6, +0x00001749,0x00001747,0x000500b1,0x000000d0, +0x000016ad,0x00002e1e,0x0000035b,0x000400f6, +0x0000174a,0x00001747,0x00000000,0x000400fa, +0x000016ad,0x000016ae,0x0000174a,0x000200f8, +0x000016ae,0x000200f9,0x000016af,0x000200f8, +0x000016af,0x000700f5,0x00000b07,0x00002e21, +0x00000b0a,0x000016ae,0x00001716,0x00001717, +0x000700f5,0x00000b07,0x00002e20,0x00000b0a, +0x000016ae,0x0000170b,0x00001717,0x000700f5, +0x00000019,0x00002e1f,0x0000006a,0x000016ae, +0x00001719,0x00001717,0x000500b1,0x000000d0, +0x000016b2,0x00002e1f,0x00000174,0x000400f6, +0x0000171a,0x00001717,0x00000000,0x000400fa, +0x000016b2,0x000016b3,0x0000171a,0x000200f8, +0x000016b3,0x000500aa,0x000000d0,0x000016b5, +0x00002e3f,0x0000006a,0x000300f7,0x000016df, +0x00000000,0x000400fa,0x000016b5,0x000016b6, +0x000016b7,0x000200f8,0x000016b6,0x000200f9, +0x000016df,0x000200f8,0x000016b7,0x000200f9, +0x000016b8,0x000200f8,0x000016b8,0x000700f5, +0x00000019,0x00002e4b,0x0000006a,0x000016b7, +0x000016cb,0x000016bc,0x000700f5,0x00000006, +0x00002e4a,0x00000138,0x000016b7,0x000016ce, +0x000016bc,0x000500b0,0x000000d0,0x000016bb, +0x00002e4a,0x00000147,0x000400f6,0x000016cf, +0x000016bc,0x00000000,0x000400fa,0x000016bb, +0x000016bc,0x000016cf,0x000200f8,0x000016bc, +0x0004007c,0x00000006,0x000016be,0x00002e1f, +0x00050041,0x00000007,0x000019d4,0x0000005b, +0x000016be,0x0004003d,0x00000006,0x000019d5, +0x000019d4,0x00050084,0x00000006,0x000019d7, +0x00002e4a,0x00000031,0x000500c2,0x00000006, +0x000019d8,0x000019d5,0x000019d7,0x000500c7, +0x00000006,0x000019d9,0x000019d8,0x00000054, +0x0004007c,0x00000019,0x000016c1,0x000019d9, +0x00050041,0x0000001a,0x000016c3,0x00001555, +0x00002e4a,0x0004003d,0x00000019,0x000016c4, +0x000016c3,0x00050082,0x00000019,0x000016c5, +0x000016c1,0x000016c4,0x00050041,0x0000001a, +0x000016c7,0x0000157d,0x00002e4a,0x0004003d, +0x00000019,0x000016c8,0x000016c7,0x00050084, +0x00000019,0x000016c9,0x000016c5,0x000016c8, +0x00050080,0x00000019,0x000016cb,0x00002e4b, +0x000016c9,0x00050080,0x00000006,0x000016ce, +0x00002e4a,0x000000c4,0x000200f9,0x000016b8, +0x000200f8,0x000016cf,0x0004006f,0x00000b07, +0x000016d1,0x00002e4b,0x0004006f,0x00000b07, +0x000016d3,0x00002e3f,0x00050088,0x00000b07, +0x000016d4,0x000016d1,0x000016d3,0x000500b8, +0x000000d0,0x000016d6,0x000016d4,0x00000b0a, +0x000600a9,0x00000b07,0x000031df,0x000016d6, +0x00000b0a,0x000016d4,0x000500ba,0x000000d0, +0x000016da,0x000031df,0x00000b40,0x000600a9, +0x00000b07,0x000031e0,0x000016da,0x00000b40, +0x000031df,0x00050085,0x00000b07,0x000016de, +0x000031e0,0x00000d38,0x000200f9,0x000016df, +0x000200f8,0x000016df,0x000700f5,0x00000b07, +0x00002e66,0x00000b0a,0x000016b6,0x000016de, +0x000016cf,0x000500aa,0x000000d0,0x000016e1, +0x000016a9,0x0000006a,0x000300f7,0x000016f8, +0x00000000,0x000400fa,0x000016e1,0x000016e2, +0x000016e3,0x000200f8,0x000016e2,0x000200f9, +0x000016f8,0x000200f8,0x000016e3,0x0004007c, +0x00000006,0x000016e5,0x00002e1f,0x00050041, +0x00000007,0x000019dd,0x0000005b,0x000016e5, +0x0004003d,0x00000006,0x000019de,0x000019dd, +0x000500c2,0x00000006,0x000019e1,0x000019de, +0x00000512,0x000500c7,0x00000006,0x000019e2, +0x000019e1,0x00000054,0x0004007c,0x00000019, +0x000016e7,0x000019e2,0x00050082,0x00000019, +0x000016e9,0x000016e7,0x00002dd5,0x0004006f, +0x00000b07,0x000016ea,0x000016e9,0x0004006f, +0x00000b07,0x000016ec,0x000016a9,0x00050088, +0x00000b07,0x000016ed,0x000016ea,0x000016ec, +0x000500b8,0x000000d0,0x000016ef,0x000016ed, +0x00000b0a,0x000600a9,0x00000b07,0x000031e1, +0x000016ef,0x00000b0a,0x000016ed,0x000500ba, +0x000000d0,0x000016f3,0x000031e1,0x00000b40, +0x000600a9,0x00000b07,0x000031e2,0x000016f3, +0x00000b40,0x000031e1,0x00050085,0x00000b07, +0x000016f7,0x000031e2,0x00000d38,0x000200f9, +0x000016f8,0x000200f8,0x000016f8,0x000700f5, +0x00000b07,0x00002e69,0x00000b0a,0x000016e2, +0x000016f7,0x000016e3,0x000300f7,0x00001700, +0x00000000,0x000400fa,0x00001670,0x000016fb, +0x00001700,0x000200f8,0x000016fb,0x00050083, +0x00000b07,0x000016fd,0x00000d38,0x00002e66, +0x00050083,0x00000b07,0x000016ff,0x00000d38, +0x00002e69,0x000200f9,0x00001700,0x000200f8, +0x00001700,0x000700f5,0x00000b07,0x00002e7f, +0x00002e69,0x000016f8,0x000016ff,0x000016fb, +0x000700f5,0x00000b07,0x00002e76,0x00002e66, +0x000016f8,0x000016fd,0x000016fb,0x00050084, +0x00000019,0x00001702,0x00002e1e,0x00000174, +0x00050080,0x00000019,0x00001704,0x00001702, +0x00002e1f,0x0003003e,0x0000158d,0x00000b66, +0x00050041,0x0000001a,0x00001705,0x0000158d, +0x00001704,0x0004003d,0x00000019,0x00001706, +0x00001705,0x0004006f,0x00000b07,0x00001707, +0x00001706,0x0008000c,0x00000b07,0x0000170b, +0x00000001,0x00000032,0x00001707,0x00002e76, +0x00002e20,0x0003003e,0x0000158e,0x00000b66, +0x00050041,0x0000001a,0x00001710,0x0000158e, +0x00001704,0x0004003d,0x00000019,0x00001711, +0x00001710,0x0004006f,0x00000b07,0x00001712, +0x00001711,0x0008000c,0x00000b07,0x00001716, +0x00000001,0x00000032,0x00001712,0x00002e7f, +0x00002e21,0x000200f9,0x00001717,0x000200f8, +0x00001717,0x00050080,0x00000019,0x00001719, +0x00002e1f,0x000000c4,0x000200f9,0x000016af, +0x000200f8,0x0000171a,0x0008000c,0x00000b07, +0x0000171d,0x00000001,0x00000032,0x00002e20, +0x000031c5,0x00000b7a,0x0006000c,0x00000b07, +0x0000171e,0x00000001,0x00000008,0x0000171d, +0x0004006e,0x00000019,0x0000171f,0x0000171e, +0x0008000c,0x00000b07,0x00001722,0x00000001, +0x00000032,0x00002e21,0x000031c5,0x00000b7a, +0x0006000c,0x00000b07,0x00001723,0x00000001, +0x00000008,0x00001722,0x0004006e,0x00000019, +0x00001724,0x00001723,0x000500b1,0x000000d0, +0x00001726,0x0000171f,0x0000006a,0x000600a9, +0x00000019,0x000031e3,0x00001726,0x0000006a, +0x0000171f,0x000500ad,0x000000d0,0x0000172a, +0x000031e3,0x0000010e,0x000600a9,0x00000019, +0x000031e4,0x0000172a,0x0000010e,0x000031e3, +0x000500b1,0x000000d0,0x0000172e,0x00001724, +0x0000006a,0x000600a9,0x00000019,0x000031e5, +0x0000172e,0x0000006a,0x00001724,0x000500ad, +0x000000d0,0x00001732,0x000031e5,0x0000010e, +0x000600a9,0x00000019,0x000031e6,0x00001732, +0x0000010e,0x000031e5,0x00050084,0x00000019, +0x00001736,0x000000ef,0x00002e1e,0x00050080, +0x00000019,0x00001737,0x00001736,0x000000c4, +0x00050084,0x00000019,0x00001738,0x00001737, +0x000000ef,0x00050082,0x00000019,0x00001739, +0x0000034c,0x00001738,0x0004007c,0x00000006, +0x0000173b,0x000031e4,0x000200f9,0x000019e7, +0x000200f8,0x000019e7,0x000700f5,0x00000006, +0x00002e2f,0x00000138,0x0000171a,0x000019f9, +0x000019ec,0x000700f5,0x00000019,0x00002e2e, +0x0000006a,0x0000171a,0x000019fc,0x000019ec, +0x000500b1,0x000000d0,0x000019eb,0x00002e2e, +0x000000ef,0x000400f6,0x000019fd,0x000019ec, +0x00000000,0x000400fa,0x000019eb,0x000019ec, +0x000019fd,0x000200f8,0x000019ec,0x0004007c, +0x00000006,0x000019ef,0x00002e2e,0x000500c2, +0x00000006,0x000019f0,0x0000173b,0x000019ef, +0x000500c7,0x00000006,0x000019f1,0x000019f0, +0x00000071,0x00050082,0x00000019,0x000019f5, +0x000000c4,0x00002e2e,0x0004007c,0x00000006, +0x000019f6,0x000019f5,0x000500c4,0x00000006, +0x000019f7,0x000019f1,0x000019f6,0x000500c5, +0x00000006,0x000019f9,0x00002e2f,0x000019f7, +0x00050080,0x00000019,0x000019fc,0x00002e2e, +0x000000c4,0x000200f9,0x000019e7,0x000200f8, +0x000019fd,0x000200f9,0x00001a02,0x000200f8, +0x00001a02,0x000700f5,0x00000019,0x00002e30, +0x0000006a,0x000019fd,0x00001a1f,0x00001a1d, +0x000500b1,0x000000d0,0x00001a06,0x00002e30, +0x000000ef,0x000400f6,0x00001a20,0x00001a1d, +0x00000000,0x000400fa,0x00001a06,0x00001a07, +0x00001a20,0x000200f8,0x00001a07,0x0004007c, +0x00000006,0x00001a0a,0x00002e30,0x000500c4, +0x00000006,0x00001a0b,0x00000071,0x00001a0a, +0x000500c7,0x00000006,0x00001a0c,0x00002e2f, +0x00001a0b,0x000500ab,0x000000d0,0x00001a0d, +0x00001a0c,0x00000138,0x000300f7,0x00001a1c, +0x00000000,0x000400fa,0x00001a0d,0x00001a0e, +0x00001a1c,0x000200f8,0x00001a0e,0x00050080, +0x00000019,0x00001a11,0x00001739,0x00002e30, +0x000500c3,0x00000019,0x00001a13,0x00001a11, +0x000001dd,0x000500c7,0x00000019,0x00001a15, +0x00001a11,0x00000533,0x0004007c,0x00000006, +0x00001a16,0x00001a15,0x000500c4,0x00000006, +0x00001a17,0x00000071,0x00001a16,0x00050041, +0x00000007,0x00001a18,0x0000052f,0x00001a13, +0x0004003d,0x00000006,0x00001a19,0x00001a18, +0x000500c5,0x00000006,0x00001a1a,0x00001a19, +0x00001a17,0x0003003e,0x00001a18,0x00001a1a, +0x000200f9,0x00001a1c,0x000200f8,0x00001a1c, +0x000200f9,0x00001a1d,0x000200f8,0x00001a1d, +0x00050080,0x00000019,0x00001a1f,0x00002e30, +0x000000c4,0x000200f9,0x00001a02,0x000200f8, +0x00001a20,0x00050080,0x00000019,0x00001740, +0x00001736,0x000000ef,0x00050084,0x00000019, +0x00001741,0x00001740,0x000000ef,0x00050082, +0x00000019,0x00001742,0x0000034c,0x00001741, +0x0004007c,0x00000006,0x00001744,0x000031e6, +0x000200f9,0x00001a25,0x000200f8,0x00001a25, +0x000700f5,0x00000006,0x00002e37,0x00000138, +0x00001a20,0x00001a37,0x00001a2a,0x000700f5, +0x00000019,0x00002e36,0x0000006a,0x00001a20, +0x00001a3a,0x00001a2a,0x000500b1,0x000000d0, +0x00001a29,0x00002e36,0x000000ef,0x000400f6, +0x00001a3b,0x00001a2a,0x00000000,0x000400fa, +0x00001a29,0x00001a2a,0x00001a3b,0x000200f8, +0x00001a2a,0x0004007c,0x00000006,0x00001a2d, +0x00002e36,0x000500c2,0x00000006,0x00001a2e, +0x00001744,0x00001a2d,0x000500c7,0x00000006, +0x00001a2f,0x00001a2e,0x00000071,0x00050082, +0x00000019,0x00001a33,0x000000c4,0x00002e36, +0x0004007c,0x00000006,0x00001a34,0x00001a33, +0x000500c4,0x00000006,0x00001a35,0x00001a2f, +0x00001a34,0x000500c5,0x00000006,0x00001a37, +0x00002e37,0x00001a35,0x00050080,0x00000019, +0x00001a3a,0x00002e36,0x000000c4,0x000200f9, +0x00001a25,0x000200f8,0x00001a3b,0x000200f9, +0x00001a40,0x000200f8,0x00001a40,0x000700f5, +0x00000019,0x00002e38,0x0000006a,0x00001a3b, +0x00001a5d,0x00001a5b,0x000500b1,0x000000d0, +0x00001a44,0x00002e38,0x000000ef,0x000400f6, +0x00001a5e,0x00001a5b,0x00000000,0x000400fa, +0x00001a44,0x00001a45,0x00001a5e,0x000200f8, +0x00001a45,0x0004007c,0x00000006,0x00001a48, +0x00002e38,0x000500c4,0x00000006,0x00001a49, +0x00000071,0x00001a48,0x000500c7,0x00000006, +0x00001a4a,0x00002e37,0x00001a49,0x000500ab, +0x000000d0,0x00001a4b,0x00001a4a,0x00000138, +0x000300f7,0x00001a5a,0x00000000,0x000400fa, +0x00001a4b,0x00001a4c,0x00001a5a,0x000200f8, +0x00001a4c,0x00050080,0x00000019,0x00001a4f, +0x00001742,0x00002e38,0x000500c3,0x00000019, +0x00001a51,0x00001a4f,0x000001dd,0x000500c7, +0x00000019,0x00001a53,0x00001a4f,0x00000533, +0x0004007c,0x00000006,0x00001a54,0x00001a53, +0x000500c4,0x00000006,0x00001a55,0x00000071, +0x00001a54,0x00050041,0x00000007,0x00001a56, +0x0000052f,0x00001a51,0x0004003d,0x00000006, +0x00001a57,0x00001a56,0x000500c5,0x00000006, +0x00001a58,0x00001a57,0x00001a55,0x0003003e, +0x00001a56,0x00001a58,0x000200f9,0x00001a5a, +0x000200f8,0x00001a5a,0x000200f9,0x00001a5b, +0x000200f8,0x00001a5b,0x00050080,0x00000019, +0x00001a5d,0x00002e38,0x000000c4,0x000200f9, +0x00001a40,0x000200f8,0x00001a5e,0x000200f9, +0x00001747,0x000200f8,0x00001747,0x00050080, +0x00000019,0x00001749,0x00002e1e,0x000000c4, +0x000200f9,0x000016aa,0x000200f8,0x0000174a, +0x000200f9,0x00000e5d,0x000200f8,0x00000e5f, +0x00050041,0x00000007,0x00001aae,0x0000052f, +0x0000006a,0x0003003e,0x00001aae,0x00000138, +0x00050041,0x00000007,0x00001aaf,0x0000052f, +0x000000c4,0x0003003e,0x00001aaf,0x00000138, +0x00050041,0x00000007,0x00001ab0,0x0000052f, +0x000000ef,0x0003003e,0x00001ab0,0x00000138, +0x00050041,0x00000007,0x00001ab1,0x0000052f, +0x0000010e,0x0003003e,0x00001ab1,0x00000138, +0x000200f9,0x00001ab2,0x000200f8,0x00001ab2, +0x000700f5,0x00000019,0x00002d8a,0x0000006a, +0x00000e5f,0x000030e0,0x00001ae3,0x000700f5, +0x00000019,0x00002d89,0x0000006a,0x00000e5f, +0x000030dd,0x00001ae3,0x000700f5,0x00000019, +0x00002d88,0x0000006a,0x00000e5f,0x00001ab8, +0x00001ae3,0x000700f5,0x00000019,0x00002dcb, +0x00000560,0x00000e5f,0x00002dca,0x00001ae3, +0x000500b1,0x000000d0,0x00001ab5,0x00002d88, +0x00000174,0x000400f6,0x00001ae6,0x00001ae3, +0x00000000,0x000400fa,0x00001ab5,0x00001ab6, +0x00001ae6,0x000200f8,0x00001ab6,0x00050080, +0x00000019,0x00001ab8,0x00002d88,0x000000c4, +0x000200f9,0x00001ab9,0x000200f8,0x00001ab9, +0x000700f5,0x00000019,0x00002dca,0x00002dcb, +0x00001ab6,0x000031e7,0x00001adf,0x000700f5, +0x00000019,0x00002dc5,0x00001ab8,0x00001ab6, +0x00001ae1,0x00001adf,0x000700f5,0x00000019, +0x000030e0,0x00002d8a,0x00001ab6,0x000031e8, +0x00001adf,0x000700f5,0x00000019,0x000030dd, +0x00002d89,0x00001ab6,0x000031e9,0x00001adf, +0x000500b1,0x000000d0,0x00001abc,0x00002dc5, +0x00000174,0x000400f6,0x00001ae2,0x00001adf, +0x00000000,0x000400fa,0x00001abc,0x00001abd, +0x00001ae2,0x000200f8,0x00001abd,0x000200f9, +0x00001abe,0x000200f8,0x00001abe,0x000700f5, +0x00000019,0x00002dc8,0x0000006a,0x00001abd, +0x00001ad2,0x00001ac2,0x000700f5,0x00000006, +0x00002dc7,0x00000138,0x00001abd,0x00001ad5, +0x00001ac2,0x000500b0,0x000000d0,0x00001ac1, +0x00002dc7,0x00000147,0x000400f6,0x00001ad6, +0x00001ac2,0x00000000,0x000400fa,0x00001ac1, +0x00001ac2,0x00001ad6,0x000200f8,0x00001ac2, +0x0004007c,0x00000006,0x00001ac4,0x00002d88, +0x00050041,0x00000007,0x00001bb8,0x0000005b, +0x00001ac4,0x0004003d,0x00000006,0x00001bb9, +0x00001bb8,0x00050084,0x00000006,0x00001bbb, +0x00002dc7,0x00000031,0x000500c2,0x00000006, +0x00001bbc,0x00001bb9,0x00001bbb,0x000500c7, +0x00000006,0x00001bbd,0x00001bbc,0x00000054, +0x0004007c,0x00000019,0x00001ac7,0x00001bbd, +0x0004007c,0x00000006,0x00001ac9,0x00002dc5, +0x00050041,0x00000007,0x00001bc1,0x0000005b, +0x00001ac9,0x0004003d,0x00000006,0x00001bc2, +0x00001bc1,0x000500c2,0x00000006,0x00001bc5, +0x00001bc2,0x00001bbb,0x000500c7,0x00000006, +0x00001bc6,0x00001bc5,0x00000054,0x0004007c, +0x00000019,0x00001acc,0x00001bc6,0x00050082, +0x00000019,0x00001acd,0x00001ac7,0x00001acc, +0x00050084,0x00000019,0x00001ad0,0x00001acd, +0x00001acd,0x00050080,0x00000019,0x00001ad2, +0x00002dc8,0x00001ad0,0x00050080,0x00000006, +0x00001ad5,0x00002dc7,0x000000c4,0x000200f9, +0x00001abe,0x000200f8,0x00001ad6,0x000500ad, +0x000000d0,0x00001ad9,0x00002dc8,0x00002dca, +0x000600a9,0x00000019,0x000031e7,0x00001ad9, +0x00002dc8,0x00002dca,0x000600a9,0x00000019, +0x000031e8,0x00001ad9,0x00002dc5,0x000030e0, +0x000600a9,0x00000019,0x000031e9,0x00001ad9, +0x00002d88,0x000030dd,0x000200f9,0x00001adf, +0x000200f8,0x00001adf,0x00050080,0x00000019, +0x00001ae1,0x00002dc5,0x000000c4,0x000200f9, +0x00001ab9,0x000200f8,0x00001ae2,0x000200f9, +0x00001ae3,0x000200f8,0x00001ae3,0x000200f9, +0x00001ab2,0x000200f8,0x00001ae6,0x0004007c, +0x00000006,0x00001ae8,0x00002d89,0x00050041, +0x00000007,0x00001bca,0x0000005b,0x00001ae8, +0x0004003d,0x00000006,0x00001bcb,0x00001bca, +0x000500c2,0x00000006,0x00001bce,0x00001bcb, +0x00000138,0x000500c7,0x00000006,0x00001bcf, +0x00001bce,0x00000054,0x0004003d,0x00000006, +0x00001bd4,0x00001bca,0x000500c2,0x00000006, +0x00001bd7,0x00001bd4,0x00000031,0x000500c7, +0x00000006,0x00001bd8,0x00001bd7,0x00000054, +0x00050080,0x00000006,0x00001aed,0x00001bcf, +0x00001bd8,0x0004003d,0x00000006,0x00001bdd, +0x00001bca,0x000500c2,0x00000006,0x00001be0, +0x00001bdd,0x00000049,0x000500c7,0x00000006, +0x00001be1,0x00001be0,0x00000054,0x00050080, +0x00000006,0x00001af1,0x00001aed,0x00001be1, +0x0004007c,0x00000019,0x00001af2,0x00001af1, +0x0004007c,0x00000006,0x00001af4,0x00002d8a, +0x00050041,0x00000007,0x00001be5,0x0000005b, +0x00001af4,0x0004003d,0x00000006,0x00001be6, +0x00001be5,0x000500c2,0x00000006,0x00001be9, +0x00001be6,0x00000138,0x000500c7,0x00000006, +0x00001bea,0x00001be9,0x00000054,0x0004003d, +0x00000006,0x00001bef,0x00001be5,0x000500c2, +0x00000006,0x00001bf2,0x00001bef,0x00000031, +0x000500c7,0x00000006,0x00001bf3,0x00001bf2, +0x00000054,0x00050080,0x00000006,0x00001af9, +0x00001bea,0x00001bf3,0x0004003d,0x00000006, +0x00001bf8,0x00001be5,0x000500c2,0x00000006, +0x00001bfb,0x00001bf8,0x00000049,0x000500c7, +0x00000006,0x00001bfc,0x00001bfb,0x00000054, +0x00050080,0x00000006,0x00001afd,0x00001af9, +0x00001bfc,0x0004007c,0x00000019,0x00001afe, +0x00001afd,0x000500af,0x000000d0,0x00001b01, +0x00001afe,0x00001af2,0x000600a9,0x00000019, +0x00001b04,0x00001b01,0x00002d89,0x00002d8a, +0x000600a9,0x00000019,0x00001b0a,0x00001b01, +0x00002d8a,0x00002d89,0x000200f9,0x00001b0b, +0x000200f8,0x00001b0b,0x000700f5,0x00000006, +0x00002d8b,0x00000138,0x00001ae6,0x00001b20, +0x00001b0f,0x000500b0,0x000000d0,0x00001b0e, +0x00002d8b,0x00000147,0x000400f6,0x00001b21, +0x00001b0f,0x00000000,0x000400fa,0x00001b0e, +0x00001b0f,0x00001b21,0x000200f8,0x00001b0f, +0x0004007c,0x00000006,0x00001b12,0x00001b04, +0x00050041,0x00000007,0x00001c00,0x0000005b, +0x00001b12,0x0004003d,0x00000006,0x00001c01, +0x00001c00,0x00050084,0x00000006,0x00001c03, +0x00002d8b,0x00000031,0x000500c2,0x00000006, +0x00001c04,0x00001c01,0x00001c03,0x000500c7, +0x00000006,0x00001c05,0x00001c04,0x00000054, +0x0004007c,0x00000019,0x00001b15,0x00001c05, +0x00050041,0x0000001a,0x00001b16,0x00001a7c, +0x00002d8b,0x0003003e,0x00001b16,0x00001b15, +0x0004007c,0x00000006,0x00001b19,0x00001b0a, +0x00050041,0x00000007,0x00001c09,0x0000005b, +0x00001b19,0x0004003d,0x00000006,0x00001c0a, +0x00001c09,0x000500c2,0x00000006,0x00001c0d, +0x00001c0a,0x00001c03,0x000500c7,0x00000006, +0x00001c0e,0x00001c0d,0x00000054,0x0004007c, +0x00000019,0x00001b1c,0x00001c0e,0x00050041, +0x0000001a,0x00001b1d,0x00001a7f,0x00002d8b, +0x0003003e,0x00001b1d,0x00001b1c,0x00050080, +0x00000006,0x00001b20,0x00002d8b,0x000000c4, +0x000200f9,0x00001b0b,0x000200f8,0x00001b21, +0x000200f9,0x00001c12,0x000200f8,0x00001c12, +0x000700f5,0x00000019,0x00002d8c,0x0000006a, +0x00001b21,0x00001c2f,0x00001c2d,0x000500b1, +0x000000d0,0x00001c16,0x00002d8c,0x000005f3, +0x000400f6,0x00001c30,0x00001c2d,0x00000000, +0x000400fa,0x00001c16,0x00001c17,0x00001c30, +0x000200f8,0x00001c17,0x0004007c,0x00000006, +0x00001c1a,0x00002d8c,0x000500c4,0x00000006, +0x00001c1b,0x00000071,0x00001c1a,0x000500c7, +0x00000006,0x00001c1c,0x000005f4,0x00001c1b, +0x000500ab,0x000000d0,0x00001c1d,0x00001c1c, +0x00000138,0x000300f7,0x00001c2c,0x00000000, +0x000400fa,0x00001c1d,0x00001c1e,0x00001c2c, +0x000200f8,0x00001c1e,0x000500c3,0x00000019, +0x00001c23,0x00002d8c,0x000001dd,0x000500c7, +0x00000019,0x00001c25,0x00002d8c,0x00000533, +0x0004007c,0x00000006,0x00001c26,0x00001c25, +0x000500c4,0x00000006,0x00001c27,0x00000071, +0x00001c26,0x00050041,0x00000007,0x00001c28, +0x0000052f,0x00001c23,0x0004003d,0x00000006, +0x00001c29,0x00001c28,0x000500c5,0x00000006, +0x00001c2a,0x00001c29,0x00001c27,0x0003003e, +0x00001c28,0x00001c2a,0x000200f9,0x00001c2c, +0x000200f8,0x00001c2c,0x000200f9,0x00001c2d, +0x000200f8,0x00001c2d,0x00050080,0x00000019, +0x00001c2f,0x00002d8c,0x000000c4,0x000200f9, +0x00001c12,0x000200f8,0x00001c30,0x000200f9, +0x00001c34,0x000200f8,0x00001c34,0x000700f5, +0x00000019,0x00002d8d,0x0000006a,0x00001c30, +0x00001c51,0x00001c4f,0x000500b1,0x000000d0, +0x00001c38,0x00002d8d,0x000001da,0x000400f6, +0x00001c52,0x00001c4f,0x00000000,0x000400fa, +0x00001c38,0x00001c39,0x00001c52,0x000200f8, +0x00001c39,0x0004007c,0x00000006,0x00001c3c, +0x00002d8d,0x000500c4,0x00000006,0x00001c3d, +0x00000071,0x00001c3c,0x000500c7,0x00000006, +0x00001c3e,0x00000031,0x00001c3d,0x000500ab, +0x000000d0,0x00001c3f,0x00001c3e,0x00000138, +0x000300f7,0x00001c4e,0x00000000,0x000400fa, +0x00001c3f,0x00001c40,0x00001c4e,0x000200f8, +0x00001c40,0x00050080,0x00000019,0x00001c43, +0x00000400,0x00002d8d,0x000500c3,0x00000019, +0x00001c45,0x00001c43,0x000001dd,0x000500c7, +0x00000019,0x00001c47,0x00001c43,0x00000533, +0x0004007c,0x00000006,0x00001c48,0x00001c47, +0x000500c4,0x00000006,0x00001c49,0x00000071, +0x00001c48,0x00050041,0x00000007,0x00001c4a, +0x0000052f,0x00001c45,0x0004003d,0x00000006, +0x00001c4b,0x00001c4a,0x000500c5,0x00000006, +0x00001c4c,0x00001c4b,0x00001c49,0x0003003e, +0x00001c4a,0x00001c4c,0x000200f9,0x00001c4e, +0x000200f8,0x00001c4e,0x000200f9,0x00001c4f, +0x000200f8,0x00001c4f,0x00050080,0x00000019, +0x00001c51,0x00002d8d,0x000000c4,0x000200f9, +0x00001c34,0x000200f8,0x00001c52,0x00050041, +0x0000001a,0x00001b24,0x00001a7c,0x0000006a, +0x0004003d,0x00000019,0x00001b25,0x00001b24, +0x0004007c,0x00000006,0x00001b26,0x00001b25, +0x000200f9,0x00001c56,0x000200f8,0x00001c56, +0x000700f5,0x00000019,0x00002d8e,0x0000006a, +0x00001c52,0x00001c73,0x00001c71,0x000500b1, +0x000000d0,0x00001c5a,0x00002d8e,0x0000019a, +0x000400f6,0x00001c74,0x00001c71,0x00000000, +0x000400fa,0x00001c5a,0x00001c5b,0x00001c74, +0x000200f8,0x00001c5b,0x0004007c,0x00000006, +0x00001c5e,0x00002d8e,0x000500c4,0x00000006, +0x00001c5f,0x00000071,0x00001c5e,0x000500c7, +0x00000006,0x00001c60,0x00001b26,0x00001c5f, +0x000500ab,0x000000d0,0x00001c61,0x00001c60, +0x00000138,0x000300f7,0x00001c70,0x00000000, +0x000400fa,0x00001c61,0x00001c62,0x00001c70, +0x000200f8,0x00001c62,0x00050080,0x00000019, +0x00001c65,0x00000401,0x00002d8e,0x000500c3, +0x00000019,0x00001c67,0x00001c65,0x000001dd, +0x000500c7,0x00000019,0x00001c69,0x00001c65, +0x00000533,0x0004007c,0x00000006,0x00001c6a, +0x00001c69,0x000500c4,0x00000006,0x00001c6b, +0x00000071,0x00001c6a,0x00050041,0x00000007, +0x00001c6c,0x0000052f,0x00001c67,0x0004003d, +0x00000006,0x00001c6d,0x00001c6c,0x000500c5, +0x00000006,0x00001c6e,0x00001c6d,0x00001c6b, +0x0003003e,0x00001c6c,0x00001c6e,0x000200f9, +0x00001c70,0x000200f8,0x00001c70,0x000200f9, +0x00001c71,0x000200f8,0x00001c71,0x00050080, +0x00000019,0x00001c73,0x00002d8e,0x000000c4, +0x000200f9,0x00001c56,0x000200f8,0x00001c74, +0x00050041,0x0000001a,0x00001b28,0x00001a7f, +0x0000006a,0x0004003d,0x00000019,0x00001b29, +0x00001b28,0x0004007c,0x00000006,0x00001b2a, +0x00001b29,0x000200f9,0x00001c78,0x000200f8, +0x00001c78,0x000700f5,0x00000019,0x00002d8f, +0x0000006a,0x00001c74,0x00001c95,0x00001c93, +0x000500b1,0x000000d0,0x00001c7c,0x00002d8f, +0x0000019a,0x000400f6,0x00001c96,0x00001c93, +0x00000000,0x000400fa,0x00001c7c,0x00001c7d, +0x00001c96,0x000200f8,0x00001c7d,0x0004007c, +0x00000006,0x00001c80,0x00002d8f,0x000500c4, +0x00000006,0x00001c81,0x00000071,0x00001c80, +0x000500c7,0x00000006,0x00001c82,0x00001b2a, +0x00001c81,0x000500ab,0x000000d0,0x00001c83, +0x00001c82,0x00000138,0x000300f7,0x00001c92, +0x00000000,0x000400fa,0x00001c83,0x00001c84, +0x00001c92,0x000200f8,0x00001c84,0x00050080, +0x00000019,0x00001c87,0x00000604,0x00002d8f, +0x000500c3,0x00000019,0x00001c89,0x00001c87, +0x000001dd,0x000500c7,0x00000019,0x00001c8b, +0x00001c87,0x00000533,0x0004007c,0x00000006, +0x00001c8c,0x00001c8b,0x000500c4,0x00000006, +0x00001c8d,0x00000071,0x00001c8c,0x00050041, +0x00000007,0x00001c8e,0x0000052f,0x00001c89, +0x0004003d,0x00000006,0x00001c8f,0x00001c8e, +0x000500c5,0x00000006,0x00001c90,0x00001c8f, +0x00001c8d,0x0003003e,0x00001c8e,0x00001c90, +0x000200f9,0x00001c92,0x000200f8,0x00001c92, +0x000200f9,0x00001c93,0x000200f8,0x00001c93, +0x00050080,0x00000019,0x00001c95,0x00002d8f, +0x000000c4,0x000200f9,0x00001c78,0x000200f8, +0x00001c96,0x00050041,0x0000001a,0x00001b2c, +0x00001a7c,0x000000c4,0x0004003d,0x00000019, +0x00001b2d,0x00001b2c,0x0004007c,0x00000006, +0x00001b2e,0x00001b2d,0x000200f9,0x00001c9a, +0x000200f8,0x00001c9a,0x000700f5,0x00000019, +0x00002d90,0x0000006a,0x00001c96,0x00001cb7, +0x00001cb5,0x000500b1,0x000000d0,0x00001c9e, +0x00002d90,0x0000019a,0x000400f6,0x00001cb8, +0x00001cb5,0x00000000,0x000400fa,0x00001c9e, +0x00001c9f,0x00001cb8,0x000200f8,0x00001c9f, +0x0004007c,0x00000006,0x00001ca2,0x00002d90, +0x000500c4,0x00000006,0x00001ca3,0x00000071, +0x00001ca2,0x000500c7,0x00000006,0x00001ca4, +0x00001b2e,0x00001ca3,0x000500ab,0x000000d0, +0x00001ca5,0x00001ca4,0x00000138,0x000300f7, +0x00001cb4,0x00000000,0x000400fa,0x00001ca5, +0x00001ca6,0x00001cb4,0x000200f8,0x00001ca6, +0x00050080,0x00000019,0x00001ca9,0x0000060c, +0x00002d90,0x000500c3,0x00000019,0x00001cab, +0x00001ca9,0x000001dd,0x000500c7,0x00000019, +0x00001cad,0x00001ca9,0x00000533,0x0004007c, +0x00000006,0x00001cae,0x00001cad,0x000500c4, +0x00000006,0x00001caf,0x00000071,0x00001cae, +0x00050041,0x00000007,0x00001cb0,0x0000052f, +0x00001cab,0x0004003d,0x00000006,0x00001cb1, +0x00001cb0,0x000500c5,0x00000006,0x00001cb2, +0x00001cb1,0x00001caf,0x0003003e,0x00001cb0, +0x00001cb2,0x000200f9,0x00001cb4,0x000200f8, +0x00001cb4,0x000200f9,0x00001cb5,0x000200f8, +0x00001cb5,0x00050080,0x00000019,0x00001cb7, +0x00002d90,0x000000c4,0x000200f9,0x00001c9a, +0x000200f8,0x00001cb8,0x00050041,0x0000001a, +0x00001b30,0x00001a7f,0x000000c4,0x0004003d, +0x00000019,0x00001b31,0x00001b30,0x0004007c, +0x00000006,0x00001b32,0x00001b31,0x000200f9, +0x00001cbc,0x000200f8,0x00001cbc,0x000700f5, +0x00000019,0x00002d91,0x0000006a,0x00001cb8, +0x00001cd9,0x00001cd7,0x000500b1,0x000000d0, +0x00001cc0,0x00002d91,0x0000019a,0x000400f6, +0x00001cda,0x00001cd7,0x00000000,0x000400fa, +0x00001cc0,0x00001cc1,0x00001cda,0x000200f8, +0x00001cc1,0x0004007c,0x00000006,0x00001cc4, +0x00002d91,0x000500c4,0x00000006,0x00001cc5, +0x00000071,0x00001cc4,0x000500c7,0x00000006, +0x00001cc6,0x00001b32,0x00001cc5,0x000500ab, +0x000000d0,0x00001cc7,0x00001cc6,0x00000138, +0x000300f7,0x00001cd6,0x00000000,0x000400fa, +0x00001cc7,0x00001cc8,0x00001cd6,0x000200f8, +0x00001cc8,0x00050080,0x00000019,0x00001ccb, +0x00000614,0x00002d91,0x000500c3,0x00000019, +0x00001ccd,0x00001ccb,0x000001dd,0x000500c7, +0x00000019,0x00001ccf,0x00001ccb,0x00000533, +0x0004007c,0x00000006,0x00001cd0,0x00001ccf, +0x000500c4,0x00000006,0x00001cd1,0x00000071, +0x00001cd0,0x00050041,0x00000007,0x00001cd2, +0x0000052f,0x00001ccd,0x0004003d,0x00000006, +0x00001cd3,0x00001cd2,0x000500c5,0x00000006, +0x00001cd4,0x00001cd3,0x00001cd1,0x0003003e, +0x00001cd2,0x00001cd4,0x000200f9,0x00001cd6, +0x000200f8,0x00001cd6,0x000200f9,0x00001cd7, +0x000200f8,0x00001cd7,0x00050080,0x00000019, +0x00001cd9,0x00002d91,0x000000c4,0x000200f9, +0x00001cbc,0x000200f8,0x00001cda,0x00050041, +0x0000001a,0x00001b34,0x00001a7c,0x000000ef, +0x0004003d,0x00000019,0x00001b35,0x00001b34, +0x0004007c,0x00000006,0x00001b36,0x00001b35, +0x000200f9,0x00001cde,0x000200f8,0x00001cde, +0x000700f5,0x00000019,0x00002d92,0x0000006a, +0x00001cda,0x00001cfb,0x00001cf9,0x000500b1, +0x000000d0,0x00001ce2,0x00002d92,0x0000019a, +0x000400f6,0x00001cfc,0x00001cf9,0x00000000, +0x000400fa,0x00001ce2,0x00001ce3,0x00001cfc, +0x000200f8,0x00001ce3,0x0004007c,0x00000006, +0x00001ce6,0x00002d92,0x000500c4,0x00000006, +0x00001ce7,0x00000071,0x00001ce6,0x000500c7, +0x00000006,0x00001ce8,0x00001b36,0x00001ce7, +0x000500ab,0x000000d0,0x00001ce9,0x00001ce8, +0x00000138,0x000300f7,0x00001cf8,0x00000000, +0x000400fa,0x00001ce9,0x00001cea,0x00001cf8, +0x000200f8,0x00001cea,0x00050080,0x00000019, +0x00001ced,0x0000061c,0x00002d92,0x000500c3, +0x00000019,0x00001cef,0x00001ced,0x000001dd, +0x000500c7,0x00000019,0x00001cf1,0x00001ced, +0x00000533,0x0004007c,0x00000006,0x00001cf2, +0x00001cf1,0x000500c4,0x00000006,0x00001cf3, +0x00000071,0x00001cf2,0x00050041,0x00000007, +0x00001cf4,0x0000052f,0x00001cef,0x0004003d, +0x00000006,0x00001cf5,0x00001cf4,0x000500c5, +0x00000006,0x00001cf6,0x00001cf5,0x00001cf3, +0x0003003e,0x00001cf4,0x00001cf6,0x000200f9, +0x00001cf8,0x000200f8,0x00001cf8,0x000200f9, +0x00001cf9,0x000200f8,0x00001cf9,0x00050080, +0x00000019,0x00001cfb,0x00002d92,0x000000c4, +0x000200f9,0x00001cde,0x000200f8,0x00001cfc, +0x00050041,0x0000001a,0x00001b38,0x00001a7f, +0x000000ef,0x0004003d,0x00000019,0x00001b39, +0x00001b38,0x0004007c,0x00000006,0x00001b3a, +0x00001b39,0x000200f9,0x00001d00,0x000200f8, +0x00001d00,0x000700f5,0x00000019,0x00002d93, +0x0000006a,0x00001cfc,0x00001d1d,0x00001d1b, +0x000500b1,0x000000d0,0x00001d04,0x00002d93, +0x0000019a,0x000400f6,0x00001d1e,0x00001d1b, +0x00000000,0x000400fa,0x00001d04,0x00001d05, +0x00001d1e,0x000200f8,0x00001d05,0x0004007c, +0x00000006,0x00001d08,0x00002d93,0x000500c4, +0x00000006,0x00001d09,0x00000071,0x00001d08, +0x000500c7,0x00000006,0x00001d0a,0x00001b3a, +0x00001d09,0x000500ab,0x000000d0,0x00001d0b, +0x00001d0a,0x00000138,0x000300f7,0x00001d1a, +0x00000000,0x000400fa,0x00001d0b,0x00001d0c, +0x00001d1a,0x000200f8,0x00001d0c,0x00050080, +0x00000019,0x00001d0f,0x00000624,0x00002d93, +0x000500c3,0x00000019,0x00001d11,0x00001d0f, +0x000001dd,0x000500c7,0x00000019,0x00001d13, +0x00001d0f,0x00000533,0x0004007c,0x00000006, +0x00001d14,0x00001d13,0x000500c4,0x00000006, +0x00001d15,0x00000071,0x00001d14,0x00050041, +0x00000007,0x00001d16,0x0000052f,0x00001d11, +0x0004003d,0x00000006,0x00001d17,0x00001d16, +0x000500c5,0x00000006,0x00001d18,0x00001d17, +0x00001d15,0x0003003e,0x00001d16,0x00001d18, +0x000200f9,0x00001d1a,0x000200f8,0x00001d1a, +0x000200f9,0x00001d1b,0x000200f8,0x00001d1b, +0x00050080,0x00000019,0x00001d1d,0x00002d93, +0x000000c4,0x000200f9,0x00001d00,0x000200f8, +0x00001d1e,0x000200f9,0x00001b3c,0x000200f8, +0x00001b3c,0x000700f5,0x00000019,0x00002da5, +0x0000006a,0x00001d1e,0x00001b52,0x00001b40, +0x000700f5,0x00000006,0x00002d94,0x00000138, +0x00001d1e,0x00001b55,0x00001b40,0x000500b0, +0x000000d0,0x00001b3f,0x00002d94,0x00000147, +0x000400f6,0x00001b56,0x00001b40,0x00000000, +0x000400fa,0x00001b3f,0x00001b40,0x00001b56, +0x000200f8,0x00001b40,0x00050041,0x0000001a, +0x00001b43,0x00001a7f,0x00002d94,0x0004003d, +0x00000019,0x00001b44,0x00001b43,0x00050041, +0x0000001a,0x00001b46,0x00001a7c,0x00002d94, +0x0004003d,0x00000019,0x00001b47,0x00001b46, +0x00050082,0x00000019,0x00001b48,0x00001b44, +0x00001b47,0x00050041,0x0000001a,0x00001b49, +0x00001a9c,0x00002d94,0x0003003e,0x00001b49, +0x00001b48,0x0004003d,0x00000019,0x00001b4c, +0x00001b49,0x0004003d,0x00000019,0x00001b4f, +0x00001b49,0x00050084,0x00000019,0x00001b50, +0x00001b4c,0x00001b4f,0x00050080,0x00000019, +0x00001b52,0x00002da5,0x00001b50,0x00050080, +0x00000006,0x00001b55,0x00002d94,0x000000c4, +0x000200f9,0x00001b3c,0x000200f8,0x00001b56, +0x000200f9,0x00001b57,0x000200f8,0x00001b57, +0x000700f5,0x00000019,0x00002d95,0x0000006a, +0x00001b56,0x00001baa,0x00001bb1,0x000500b1, +0x000000d0,0x00001b5a,0x00002d95,0x0000035b, +0x000400f6,0x00001bb4,0x00001bb1,0x00000000, +0x000400fa,0x00001b5a,0x00001b5b,0x00001bb4, +0x000200f8,0x00001b5b,0x000200f9,0x00001b5c, +0x000200f8,0x00001b5c,0x000700f5,0x00000b07, +0x00002d97,0x00000b0a,0x00001b5b,0x00001b97, +0x00001b98,0x000700f5,0x00000019,0x00002d96, +0x0000006a,0x00001b5b,0x00001b9a,0x00001b98, +0x000500b1,0x000000d0,0x00001b5f,0x00002d96, +0x00000174,0x000400f6,0x00001b9b,0x00001b98, +0x00000000,0x000400fa,0x00001b5f,0x00001b60, +0x00001b9b,0x000200f8,0x00001b60,0x000500aa, +0x000000d0,0x00001b62,0x00002da5,0x0000006a, +0x000300f7,0x00001b8c,0x00000000,0x000400fa, +0x00001b62,0x00001b63,0x00001b64,0x000200f8, +0x00001b63,0x000200f9,0x00001b8c,0x000200f8, +0x00001b64,0x000200f9,0x00001b65,0x000200f8, +0x00001b65,0x000700f5,0x00000019,0x00002dac, +0x0000006a,0x00001b64,0x00001b78,0x00001b69, +0x000700f5,0x00000006,0x00002dab,0x00000138, +0x00001b64,0x00001b7b,0x00001b69,0x000500b0, +0x000000d0,0x00001b68,0x00002dab,0x00000147, +0x000400f6,0x00001b7c,0x00001b69,0x00000000, +0x000400fa,0x00001b68,0x00001b69,0x00001b7c, +0x000200f8,0x00001b69,0x0004007c,0x00000006, +0x00001b6b,0x00002d96,0x00050041,0x00000007, +0x00001d22,0x0000005b,0x00001b6b,0x0004003d, +0x00000006,0x00001d23,0x00001d22,0x00050084, +0x00000006,0x00001d25,0x00002dab,0x00000031, +0x000500c2,0x00000006,0x00001d26,0x00001d23, +0x00001d25,0x000500c7,0x00000006,0x00001d27, +0x00001d26,0x00000054,0x0004007c,0x00000019, +0x00001b6e,0x00001d27,0x00050041,0x0000001a, +0x00001b70,0x00001a7c,0x00002dab,0x0004003d, +0x00000019,0x00001b71,0x00001b70,0x00050082, +0x00000019,0x00001b72,0x00001b6e,0x00001b71, +0x00050041,0x0000001a,0x00001b74,0x00001a9c, +0x00002dab,0x0004003d,0x00000019,0x00001b75, +0x00001b74,0x00050084,0x00000019,0x00001b76, +0x00001b72,0x00001b75,0x00050080,0x00000019, +0x00001b78,0x00002dac,0x00001b76,0x00050080, +0x00000006,0x00001b7b,0x00002dab,0x000000c4, +0x000200f9,0x00001b65,0x000200f8,0x00001b7c, +0x0004006f,0x00000b07,0x00001b7e,0x00002dac, +0x0004006f,0x00000b07,0x00001b80,0x00002da5, +0x00050088,0x00000b07,0x00001b81,0x00001b7e, +0x00001b80,0x000500b8,0x000000d0,0x00001b83, +0x00001b81,0x00000b0a,0x000600a9,0x00000b07, +0x000031ea,0x00001b83,0x00000b0a,0x00001b81, +0x000500ba,0x000000d0,0x00001b87,0x000031ea, +0x00000b40,0x000600a9,0x00000b07,0x000031eb, +0x00001b87,0x00000b40,0x000031ea,0x00050085, +0x00000b07,0x00001b8b,0x000031eb,0x00000b45, +0x000200f9,0x00001b8c,0x000200f8,0x00001b8c, +0x000700f5,0x00000b07,0x00002db8,0x00000b0a, +0x00001b63,0x00001b8b,0x00001b7c,0x00050084, +0x00000019,0x00001b8e,0x00002d95,0x00000174, +0x00050080,0x00000019,0x00001b90,0x00001b8e, +0x00002d96,0x0003003e,0x00001aa6,0x00000b66, +0x00050041,0x0000001a,0x00001b91,0x00001aa6, +0x00001b90,0x0004003d,0x00000019,0x00001b92, +0x00001b91,0x0004006f,0x00000b07,0x00001b93, +0x00001b92,0x0008000c,0x00000b07,0x00001b97, +0x00000001,0x00000032,0x00001b93,0x00002db8, +0x00002d97,0x000200f9,0x00001b98,0x000200f8, +0x00001b98,0x00050080,0x00000019,0x00001b9a, +0x00002d96,0x000000c4,0x000200f9,0x00001b5c, +0x000200f8,0x00001b9b,0x0008000c,0x00000b07, +0x00001b9e,0x00000001,0x00000032,0x00002d97, +0x000031c5,0x00000b7a,0x0006000c,0x00000b07, +0x00001b9f,0x00000001,0x00000008,0x00001b9e, +0x0004006e,0x00000019,0x00001ba0,0x00001b9f, +0x000500b1,0x000000d0,0x00001ba2,0x00001ba0, +0x0000006a,0x000600a9,0x00000019,0x000031ec, +0x00001ba2,0x0000006a,0x00001ba0,0x000500ad, +0x000000d0,0x00001ba6,0x000031ec,0x000001c5, +0x000600a9,0x00000019,0x000031ed,0x00001ba6, +0x000001c5,0x000031ec,0x00050080,0x00000019, +0x00001baa,0x00002d95,0x000000c4,0x00050084, +0x00000019,0x00001bab,0x00001baa,0x0000010e, +0x00050082,0x00000019,0x00001bac,0x0000034c, +0x00001bab,0x0004007c,0x00000006,0x00001bae, +0x000031ed,0x000200f9,0x00001d2c,0x000200f8, +0x00001d2c,0x000700f5,0x00000006,0x00002d9e, +0x00000138,0x00001b9b,0x00001d3e,0x00001d31, +0x000700f5,0x00000019,0x00002d9d,0x0000006a, +0x00001b9b,0x00001d41,0x00001d31,0x000500b1, +0x000000d0,0x00001d30,0x00002d9d,0x0000010e, +0x000400f6,0x00001d42,0x00001d31,0x00000000, +0x000400fa,0x00001d30,0x00001d31,0x00001d42, +0x000200f8,0x00001d31,0x0004007c,0x00000006, +0x00001d34,0x00002d9d,0x000500c2,0x00000006, +0x00001d35,0x00001bae,0x00001d34,0x000500c7, +0x00000006,0x00001d36,0x00001d35,0x00000071, +0x00050082,0x00000019,0x00001d3a,0x000000ef, +0x00002d9d,0x0004007c,0x00000006,0x00001d3b, +0x00001d3a,0x000500c4,0x00000006,0x00001d3c, +0x00001d36,0x00001d3b,0x000500c5,0x00000006, +0x00001d3e,0x00002d9e,0x00001d3c,0x00050080, +0x00000019,0x00001d41,0x00002d9d,0x000000c4, +0x000200f9,0x00001d2c,0x000200f8,0x00001d42, +0x000200f9,0x00001d47,0x000200f8,0x00001d47, +0x000700f5,0x00000019,0x00002d9f,0x0000006a, +0x00001d42,0x00001d64,0x00001d62,0x000500b1, +0x000000d0,0x00001d4b,0x00002d9f,0x0000010e, +0x000400f6,0x00001d65,0x00001d62,0x00000000, +0x000400fa,0x00001d4b,0x00001d4c,0x00001d65, +0x000200f8,0x00001d4c,0x0004007c,0x00000006, +0x00001d4f,0x00002d9f,0x000500c4,0x00000006, +0x00001d50,0x00000071,0x00001d4f,0x000500c7, +0x00000006,0x00001d51,0x00002d9e,0x00001d50, +0x000500ab,0x000000d0,0x00001d52,0x00001d51, +0x00000138,0x000300f7,0x00001d61,0x00000000, +0x000400fa,0x00001d52,0x00001d53,0x00001d61, +0x000200f8,0x00001d53,0x00050080,0x00000019, +0x00001d56,0x00001bac,0x00002d9f,0x000500c3, +0x00000019,0x00001d58,0x00001d56,0x000001dd, +0x000500c7,0x00000019,0x00001d5a,0x00001d56, +0x00000533,0x0004007c,0x00000006,0x00001d5b, +0x00001d5a,0x000500c4,0x00000006,0x00001d5c, +0x00000071,0x00001d5b,0x00050041,0x00000007, +0x00001d5d,0x0000052f,0x00001d58,0x0004003d, +0x00000006,0x00001d5e,0x00001d5d,0x000500c5, +0x00000006,0x00001d5f,0x00001d5e,0x00001d5c, +0x0003003e,0x00001d5d,0x00001d5f,0x000200f9, +0x00001d61,0x000200f8,0x00001d61,0x000200f9, +0x00001d62,0x000200f8,0x00001d62,0x00050080, +0x00000019,0x00001d64,0x00002d9f,0x000000c4, +0x000200f9,0x00001d47,0x000200f8,0x00001d65, +0x000200f9,0x00001bb1,0x000200f8,0x00001bb1, +0x000200f9,0x00001b57,0x000200f8,0x00001bb4, +0x000200f9,0x00000e5d,0x000200f8,0x00000e5d, +0x000200f9,0x00000e16,0x000200f8,0x00000e61, +0x00050041,0x00000db7,0x00000e63,0x00000db6, +0x000001da,0x0004003d,0x00000006,0x00000e64, +0x00000e63,0x000500aa,0x000000d0,0x00000e65, +0x00000e64,0x00000138,0x000600a9,0x00000006, +0x00000e66,0x00000e65,0x000000d4,0x000000aa, +0x00050041,0x00000db7,0x00000e68,0x00000db6, +0x0000010e,0x0004003d,0x00000006,0x00000e69, +0x00000e68,0x00050041,0x00000db7,0x00000e6b, +0x00000db6,0x000000c4,0x0004003d,0x00000006, +0x00000e6c,0x00000e6b,0x00050084,0x00000006, +0x00000e6d,0x00000e02,0x00000e6c,0x00050080, +0x00000006,0x00000e6f,0x00000e6d,0x00000dff, +0x00050084,0x00000006,0x00000e71,0x00000e6f, +0x00000e66,0x00050080,0x00000006,0x00000e72, +0x00000e69,0x00000e71,0x000300f7,0x00000e77, +0x00000000,0x000400fa,0x00000e65,0x00000e76, +0x00000e7b,0x000200f8,0x00000e76,0x00060041, +0x0000006c,0x00001d77,0x00000069,0x0000006a, +0x00000e72,0x0004003d,0x00000006,0x00001d78, +0x00001d77,0x00050080,0x00000006,0x00001d7a, +0x00000e72,0x00000071,0x00060041,0x0000006c, +0x00001d7b,0x00000069,0x0000006a,0x00001d7a, +0x0004003d,0x00000006,0x00001d7c,0x00001d7b, +0x000500c7,0x00000006,0x00001d7e,0x00001d78, +0x00000077,0x000500c2,0x00000006,0x00001d80, +0x00001d78,0x00000049,0x000500c2,0x00000006, +0x00001d82,0x00001d7e,0x0000007e,0x000500c7, +0x00000006,0x00001d83,0x00001d82,0x00000080, +0x000500c2,0x00000006,0x00001d85,0x00001d7e, +0x00000084,0x000500c7,0x00000006,0x00001d86, +0x00001d85,0x00000086,0x000500c7,0x00000006, +0x00001d88,0x00001d7e,0x00000080,0x000500c2, +0x00000006,0x00001d8a,0x00001d80,0x0000007e, +0x000500c7,0x00000006,0x00001d8b,0x00001d8a, +0x00000080,0x000500c2,0x00000006,0x00001d8d, +0x00001d80,0x00000084,0x000500c7,0x00000006, +0x00001d8e,0x00001d8d,0x00000086,0x000500c7, +0x00000006,0x00001d90,0x00001d80,0x00000080, +0x00050084,0x00000006,0x00001d92,0x00001d83, +0x00000098,0x00050080,0x00000006,0x00001d93, +0x00001d92,0x0000009a,0x000500c2,0x00000006, +0x00001d94,0x00001d93,0x0000009c,0x00050084, +0x00000006,0x00001d96,0x00001d86,0x000000a0, +0x00050080,0x00000006,0x00001d97,0x00001d96, +0x000000a2,0x000500c2,0x00000006,0x00001d98, +0x00001d97,0x0000009c,0x00050084,0x00000006, +0x00001d9a,0x00001d88,0x00000098,0x00050080, +0x00000006,0x00001d9b,0x00001d9a,0x0000009a, +0x000500c2,0x00000006,0x00001d9c,0x00001d9b, +0x0000009c,0x000500c4,0x00000006,0x00001d9e, +0x00001d9c,0x00000049,0x000500c5,0x00000006, +0x00001d9f,0x000000ae,0x00001d9e,0x000500c4, +0x00000006,0x00001da1,0x00001d98,0x00000031, +0x000500c5,0x00000006,0x00001da2,0x00001d9f, +0x00001da1,0x000500c5,0x00000006,0x00001da4, +0x00001da2,0x00001d94,0x00050041,0x00000007, +0x00001da5,0x00001d73,0x0000006a,0x0003003e, +0x00001da5,0x00001da4,0x00050084,0x00000006, +0x00001da7,0x00001d8b,0x00000098,0x00050080, +0x00000006,0x00001da8,0x00001da7,0x0000009a, +0x000500c2,0x00000006,0x00001da9,0x00001da8, +0x0000009c,0x00050084,0x00000006,0x00001dab, +0x00001d8e,0x000000a0,0x00050080,0x00000006, +0x00001dac,0x00001dab,0x000000a2,0x000500c2, +0x00000006,0x00001dad,0x00001dac,0x0000009c, +0x00050084,0x00000006,0x00001daf,0x00001d90, +0x00000098,0x00050080,0x00000006,0x00001db0, +0x00001daf,0x0000009a,0x000500c2,0x00000006, +0x00001db1,0x00001db0,0x0000009c,0x000500c4, +0x00000006,0x00001db3,0x00001db1,0x00000049, +0x000500c5,0x00000006,0x00001db4,0x000000ae, +0x00001db3,0x000500c4,0x00000006,0x00001db6, +0x00001dad,0x00000031,0x000500c5,0x00000006, +0x00001db7,0x00001db4,0x00001db6,0x000500c5, +0x00000006,0x00001db9,0x00001db7,0x00001da9, +0x00050041,0x00000007,0x00001dba,0x00001d73, +0x000000c4,0x0003003e,0x00001dba,0x00001db9, +0x000500ac,0x000000d0,0x00001dbd,0x00001d7e, +0x00001d80,0x000300f7,0x00001e18,0x00000000, +0x000400fa,0x00001dbd,0x00001dbe,0x00001dfb, +0x000200f8,0x00001dbe,0x00050084,0x00000006, +0x00001dc0,0x000000d4,0x00001d83,0x00050080, +0x00000006,0x00001dc2,0x00001dc0,0x00001d8b, +0x00050084,0x00000006,0x00001dc3,0x00001dc2, +0x000000d9,0x00050080,0x00000006,0x00001dc4, +0x00001dc3,0x000000db,0x000500c2,0x00000006, +0x00001dc5,0x00001dc4,0x000000dd,0x00050084, +0x00000006,0x00001dc7,0x000000d4,0x00001d86, +0x00050080,0x00000006,0x00001dc9,0x00001dc7, +0x00001d8e,0x00050084,0x00000006,0x00001dca, +0x00001dc9,0x000000e3,0x00050080,0x00000006, +0x00001dcb,0x00001dca,0x000000e5,0x000500c2, +0x00000006,0x00001dcc,0x00001dcb,0x0000007e, +0x00050084,0x00000006,0x00001dce,0x000000d4, +0x00001d88,0x00050080,0x00000006,0x00001dd0, +0x00001dce,0x00001d90,0x00050084,0x00000006, +0x00001dd1,0x00001dd0,0x000000d9,0x00050080, +0x00000006,0x00001dd2,0x00001dd1,0x000000db, +0x000500c2,0x00000006,0x00001dd3,0x00001dd2, +0x000000dd,0x000500c4,0x00000006,0x00001dd5, +0x00001dd3,0x00000049,0x000500c5,0x00000006, +0x00001dd6,0x000000ae,0x00001dd5,0x000500c4, +0x00000006,0x00001dd8,0x00001dcc,0x00000031, +0x000500c5,0x00000006,0x00001dd9,0x00001dd6, +0x00001dd8,0x000500c5,0x00000006,0x00001ddb, +0x00001dd9,0x00001dc5,0x00050041,0x00000007, +0x00001ddc,0x00001d73,0x000000ef,0x0003003e, +0x00001ddc,0x00001ddb,0x00050084,0x00000006, +0x00001ddf,0x000000d4,0x00001d8b,0x00050080, +0x00000006,0x00001de0,0x00001d83,0x00001ddf, +0x00050084,0x00000006,0x00001de1,0x00001de0, +0x000000d9,0x00050080,0x00000006,0x00001de2, +0x00001de1,0x000000db,0x000500c2,0x00000006, +0x00001de3,0x00001de2,0x000000dd,0x00050084, +0x00000006,0x00001de6,0x000000d4,0x00001d8e, +0x00050080,0x00000006,0x00001de7,0x00001d86, +0x00001de6,0x00050084,0x00000006,0x00001de8, +0x00001de7,0x000000e3,0x00050080,0x00000006, +0x00001de9,0x00001de8,0x000000e5,0x000500c2, +0x00000006,0x00001dea,0x00001de9,0x0000007e, +0x00050084,0x00000006,0x00001ded,0x000000d4, +0x00001d90,0x00050080,0x00000006,0x00001dee, +0x00001d88,0x00001ded,0x00050084,0x00000006, +0x00001def,0x00001dee,0x000000d9,0x00050080, +0x00000006,0x00001df0,0x00001def,0x000000db, +0x000500c2,0x00000006,0x00001df1,0x00001df0, +0x000000dd,0x000500c4,0x00000006,0x00001df3, +0x00001df1,0x00000049,0x000500c5,0x00000006, +0x00001df4,0x000000ae,0x00001df3,0x000500c4, +0x00000006,0x00001df6,0x00001dea,0x00000031, +0x000500c5,0x00000006,0x00001df7,0x00001df4, +0x00001df6,0x000500c5,0x00000006,0x00001df9, +0x00001df7,0x00001de3,0x00050041,0x00000007, +0x00001dfa,0x00001d73,0x0000010e,0x0003003e, +0x00001dfa,0x00001df9,0x000200f9,0x00001e18, +0x000200f8,0x00001dfb,0x00050080,0x00000006, +0x00001dfe,0x00001d83,0x00001d8b,0x00050084, +0x00000006,0x00001dff,0x00001dfe,0x0000011c, +0x00050080,0x00000006,0x00001e00,0x00001dff, +0x0000011e,0x000500c2,0x00000006,0x00001e01, +0x00001e00,0x00000031,0x00050080,0x00000006, +0x00001e04,0x00001d86,0x00001d8e,0x00050084, +0x00000006,0x00001e05,0x00001e04,0x00000124, +0x00050080,0x00000006,0x00001e06,0x00001e05, +0x00000126,0x000500c2,0x00000006,0x00001e07, +0x00001e06,0x0000007e,0x00050080,0x00000006, +0x00001e0a,0x00001d88,0x00001d90,0x00050084, +0x00000006,0x00001e0b,0x00001e0a,0x0000011c, +0x00050080,0x00000006,0x00001e0c,0x00001e0b, +0x0000011e,0x000500c2,0x00000006,0x00001e0d, +0x00001e0c,0x00000031,0x000500c4,0x00000006, +0x00001e0f,0x00001e0d,0x00000049,0x000500c5, +0x00000006,0x00001e10,0x000000ae,0x00001e0f, +0x000500c4,0x00000006,0x00001e12,0x00001e07, +0x00000031,0x000500c5,0x00000006,0x00001e13, +0x00001e10,0x00001e12,0x000500c5,0x00000006, +0x00001e15,0x00001e13,0x00001e01,0x00050041, +0x00000007,0x00001e16,0x00001d73,0x000000ef, +0x0003003e,0x00001e16,0x00001e15,0x00050041, +0x00000007,0x00001e17,0x00001d73,0x0000010e, +0x0003003e,0x00001e17,0x00000138,0x000200f9, +0x00001e18,0x000200f8,0x00001e18,0x000200f9, +0x00001e19,0x000200f8,0x00001e19,0x000700f5, +0x00000006,0x00002cb6,0x00000138,0x00001e18, +0x00001e29,0x00001e1d,0x000500b0,0x000000d0, +0x00001e1c,0x00002cb6,0x00000049,0x000400f6, +0x00001e2a,0x00001e1d,0x00000000,0x000400fa, +0x00001e1c,0x00001e1d,0x00001e2a,0x000200f8, +0x00001e1d,0x00050084,0x00000006,0x00001e21, +0x00002cb6,0x000000d4,0x000500c2,0x00000006, +0x00001e22,0x00001d7c,0x00001e21,0x000500c7, +0x00000006,0x00001e23,0x00001e22,0x00000147, +0x00050041,0x00000007,0x00001e24,0x00001d73, +0x00001e23,0x0004003d,0x00000006,0x00001e25, +0x00001e24,0x00050041,0x00000007,0x00001e26, +0x0000004c,0x00002cb6,0x0003003e,0x00001e26, +0x00001e25,0x00050080,0x00000006,0x00001e29, +0x00002cb6,0x000000c4,0x000200f9,0x00001e19, +0x000200f8,0x00001e2a,0x000200f9,0x00000e77, +0x000200f8,0x00000e7b,0x000300f7,0x00002198, +0x00000000,0x000300fb,0x00000138,0x00001ea5, +0x000200f8,0x00001ea5,0x000200f9,0x00001ea6, +0x000200f8,0x00001ea6,0x000700f5,0x00000006, +0x00002b7c,0x00000138,0x00001ea5,0x00001eb4, +0x00001eaa,0x000500b0,0x000000d0,0x00001ea9, +0x00002b7c,0x000000aa,0x000400f6,0x00001eb5, +0x00001eaa,0x00000000,0x000400fa,0x00001ea9, +0x00001eaa,0x00001eb5,0x000200f8,0x00001eaa, +0x00050080,0x00000006,0x00001eae,0x00000e72, +0x00002b7c,0x00060041,0x0000006c,0x00001eaf, +0x00000069,0x0000006a,0x00001eae,0x0004003d, +0x00000006,0x00001eb0,0x00001eaf,0x00050041, +0x00000007,0x00001eb1,0x0000015e,0x00002b7c, +0x0003003e,0x00001eb1,0x00001eb0,0x00050080, +0x00000006,0x00001eb4,0x00002b7c,0x000000c4, +0x000200f9,0x00001ea6,0x000200f8,0x00001eb5, +0x000200f9,0x00001eb6,0x000200f8,0x00001eb6, +0x000700f5,0x00000006,0x00002b80,0x00000138, +0x00001eb5,0x00002b86,0x00001ebf,0x000700f5, +0x00000019,0x00002b7d,0x0000006a,0x00001eb5, +0x00001ec1,0x00001ebf,0x000400f6,0x00001ec3, +0x00001ebf,0x00000000,0x000200f9,0x00001eb7, +0x000200f8,0x00001eb7,0x000500b1,0x000000d0, +0x00001eb9,0x00002b7d,0x0000019a,0x000300f7, +0x00001ebd,0x00000000,0x000400fa,0x00001eb9, +0x00001eba,0x00001ebd,0x000200f8,0x00001eba, +0x000200f9,0x0000219e,0x000200f8,0x0000219e, +0x000700f5,0x00000006,0x00002b81,0x00000138, +0x00001eba,0x000021b2,0x000021a3,0x000700f5, +0x00000006,0x00002b7e,0x00000138,0x00001eba, +0x000021b5,0x000021a3,0x000500b0,0x000000d0, +0x000021a2,0x00002b7e,0x00000071,0x000400f6, +0x000021b6,0x000021a3,0x00000000,0x000400fa, +0x000021a2,0x000021a3,0x000021b6,0x000200f8, +0x000021a3,0x00050080,0x00000006,0x000021a6, +0x00002b80,0x00002b7e,0x000500c2,0x00000006, +0x000021a8,0x000021a6,0x00000084,0x00050041, +0x00000007,0x000021a9,0x0000015e,0x000021a8, +0x0004003d,0x00000006,0x000021aa,0x000021a9, +0x000500c7,0x00000006,0x000021ac,0x000021a6, +0x00000080,0x000500c2,0x00000006,0x000021ad, +0x000021aa,0x000021ac,0x000500c7,0x00000006, +0x000021ae,0x000021ad,0x00000071,0x000500c4, +0x00000006,0x000021b0,0x000021ae,0x00002b7e, +0x000500c5,0x00000006,0x000021b2,0x00002b81, +0x000021b0,0x00050080,0x00000006,0x000021b5, +0x00002b7e,0x000000c4,0x000200f9,0x0000219e, +0x000200f8,0x000021b6,0x00050080,0x00000006, +0x000021b9,0x00002b80,0x00000071,0x000500aa, +0x000000d0,0x00001ebc,0x00002b81,0x00000138, +0x000200f9,0x00001ebd,0x000200f8,0x00001ebd, +0x000700f5,0x00000006,0x00002b86,0x00002b80, +0x00001eb7,0x000021b9,0x000021b6,0x000700f5, +0x000000d0,0x00001ebe,0x00001eb9,0x00001eb7, +0x00001ebc,0x000021b6,0x000400fa,0x00001ebe, +0x00001ebf,0x00001ec3,0x000200f8,0x00001ebf, +0x00050080,0x00000019,0x00001ec1,0x00002b7d, +0x000000c4,0x000200f9,0x00001eb6,0x000200f8, +0x00001ec3,0x000500af,0x000000d0,0x00001ec5, +0x00002b7d,0x0000019a,0x000300f7,0x00001ed2, +0x00000000,0x000400fa,0x00001ec5,0x00001ec6, +0x00001ed2,0x000200f8,0x00001ec6,0x000200f9, +0x00001ec7,0x000200f8,0x00001ec7,0x000700f5, +0x00000006,0x00002cb5,0x00000138,0x00001ec6, +0x00001ed0,0x00001ecb,0x000500b0,0x000000d0, +0x00001eca,0x00002cb5,0x00000049,0x000400f6, +0x00001ed1,0x00001ecb,0x00000000,0x000400fa, +0x00001eca,0x00001ecb,0x00001ed1,0x000200f8, +0x00001ecb,0x00050041,0x00000007,0x00001ecd, +0x0000004c,0x00002cb5,0x0003003e,0x00001ecd, +0x00000138,0x00050080,0x00000006,0x00001ed0, +0x00002cb5,0x000000c4,0x000200f9,0x00001ec7, +0x000200f8,0x00001ed1,0x000200f9,0x00002198, +0x000200f8,0x00001ed2,0x000500aa,0x000000d0, +0x00001ed4,0x00002b7d,0x0000006a,0x000500aa, +0x000000d0,0x00001ed6,0x00002b7d,0x000000c4, +0x000500a6,0x000000d0,0x00001ed7,0x00001ed4, +0x00001ed6,0x000500aa,0x000000d0,0x00001ed9, +0x00002b7d,0x000000ef,0x000500a6,0x000000d0, +0x00001eda,0x00001ed7,0x00001ed9,0x000500aa, +0x000000d0,0x00001edc,0x00002b7d,0x0000010e, +0x000500a6,0x000000d0,0x00001edd,0x00001eda, +0x00001edc,0x000500aa,0x000000d0,0x00001edf, +0x00002b7d,0x000001c5,0x000500a6,0x000000d0, +0x00001ee0,0x00001edd,0x00001edf,0x000300f7, +0x00001eed,0x00000000,0x000400fa,0x00001ee0, +0x00001ee1,0x00001eed,0x000200f8,0x00001ee1, +0x000500a6,0x000000d0,0x00001ee6,0x00001ed4, +0x00001ed9,0x000600a9,0x00000019,0x00001ee7, +0x00001ee6,0x0000010e,0x000000ef,0x000600a9, +0x00000006,0x00001eea,0x00001ed4,0x000000aa, +0x0000009c,0x000200f9,0x000021c0,0x000200f8, +0x000021c0,0x000700f5,0x00000006,0x00002b87, +0x00000138,0x00001ee1,0x000021d4,0x000021c5, +0x000700f5,0x00000006,0x00002b84,0x00000138, +0x00001ee1,0x000021d7,0x000021c5,0x000500b0, +0x000000d0,0x000021c4,0x00002b84,0x00001eea, +0x000400f6,0x000021d8,0x000021c5,0x00000000, +0x000400fa,0x000021c4,0x000021c5,0x000021d8, +0x000200f8,0x000021c5,0x00050080,0x00000006, +0x000021c8,0x00002b86,0x00002b84,0x000500c2, +0x00000006,0x000021ca,0x000021c8,0x00000084, +0x00050041,0x00000007,0x000021cb,0x0000015e, +0x000021ca,0x0004003d,0x00000006,0x000021cc, +0x000021cb,0x000500c7,0x00000006,0x000021ce, +0x000021c8,0x00000080,0x000500c2,0x00000006, +0x000021cf,0x000021cc,0x000021ce,0x000500c7, +0x00000006,0x000021d0,0x000021cf,0x00000071, +0x000500c4,0x00000006,0x000021d2,0x000021d0, +0x00002b84,0x000500c5,0x00000006,0x000021d4, +0x00002b87,0x000021d2,0x00050080,0x00000006, +0x000021d7,0x00002b84,0x000000c4,0x000200f9, +0x000021c0,0x000200f8,0x000021d8,0x00050080, +0x00000006,0x000021db,0x00002b86,0x00001eea, +0x0004007c,0x00000019,0x00001eec,0x00002b87, +0x000200f9,0x00001eed,0x000200f8,0x00001eed, +0x000700f5,0x00000019,0x00002bec,0x0000006a, +0x00001ed2,0x00001eec,0x000021d8,0x000700f5, +0x00000006,0x00002b8e,0x00002b86,0x00001ed2, +0x000021db,0x000021d8,0x000700f5,0x00000019, +0x00002b88,0x000000c4,0x00001ed2,0x00001ee7, +0x000021d8,0x00050084,0x00000019,0x00001eef, +0x00002b88,0x000000ef,0x000500aa,0x000000d0, +0x00001ef1,0x00002b7d,0x000001da,0x000500aa, +0x000000d0,0x00001ef3,0x00002b7d,0x000001dd, +0x000500a6,0x000000d0,0x00001ef4,0x00001ef1, +0x00001ef3,0x000300f7,0x00001efe,0x00000000, +0x000400fa,0x00001ef4,0x00001ef5,0x00001efe, +0x000200f8,0x00001ef5,0x000200f9,0x000021e2, +0x000200f8,0x000021e2,0x000700f5,0x00000006, +0x00002b8f,0x00000138,0x00001ef5,0x000021f6, +0x000021e7,0x000700f5,0x00000006,0x00002b8c, +0x00000138,0x00001ef5,0x000021f9,0x000021e7, +0x000500b0,0x000000d0,0x000021e6,0x00002b8c, +0x000000d4,0x000400f6,0x000021fa,0x000021e7, +0x00000000,0x000400fa,0x000021e6,0x000021e7, +0x000021fa,0x000200f8,0x000021e7,0x00050080, +0x00000006,0x000021ea,0x00002b8e,0x00002b8c, +0x000500c2,0x00000006,0x000021ec,0x000021ea, +0x00000084,0x00050041,0x00000007,0x000021ed, +0x0000015e,0x000021ec,0x0004003d,0x00000006, +0x000021ee,0x000021ed,0x000500c7,0x00000006, +0x000021f0,0x000021ea,0x00000080,0x000500c2, +0x00000006,0x000021f1,0x000021ee,0x000021f0, +0x000500c7,0x00000006,0x000021f2,0x000021f1, +0x00000071,0x000500c4,0x00000006,0x000021f4, +0x000021f2,0x00002b8c,0x000500c5,0x00000006, +0x000021f6,0x00002b8f,0x000021f4,0x00050080, +0x00000006,0x000021f9,0x00002b8c,0x000000c4, +0x000200f9,0x000021e2,0x000200f8,0x000021fa, +0x00050080,0x00000006,0x000021fd,0x00002b8e, +0x000000d4,0x0004007c,0x00000019,0x00001ef7, +0x00002b8f,0x000300f7,0x00001efd,0x00000000, +0x000400fa,0x00001ef1,0x00001efa,0x00001efd, +0x000200f8,0x00001efa,0x000200f9,0x00002204, +0x000200f8,0x00002204,0x000700f5,0x00000006, +0x00002b93,0x00000138,0x00001efa,0x00002218, +0x00002209,0x000700f5,0x00000006,0x00002b91, +0x00000138,0x00001efa,0x0000221b,0x00002209, +0x000500b0,0x000000d0,0x00002208,0x00002b91, +0x00000071,0x000400f6,0x0000221c,0x00002209, +0x00000000,0x000400fa,0x00002208,0x00002209, +0x0000221c,0x000200f8,0x00002209,0x00050080, +0x00000006,0x0000220c,0x000021fd,0x00002b91, +0x000500c2,0x00000006,0x0000220e,0x0000220c, +0x00000084,0x00050041,0x00000007,0x0000220f, +0x0000015e,0x0000220e,0x0004003d,0x00000006, +0x00002210,0x0000220f,0x000500c7,0x00000006, +0x00002212,0x0000220c,0x00000080,0x000500c2, +0x00000006,0x00002213,0x00002210,0x00002212, +0x000500c7,0x00000006,0x00002214,0x00002213, +0x00000071,0x000500c4,0x00000006,0x00002216, +0x00002214,0x00002b91,0x000500c5,0x00000006, +0x00002218,0x00002b93,0x00002216,0x00050080, +0x00000006,0x0000221b,0x00002b91,0x000000c4, +0x000200f9,0x00002204,0x000200f8,0x0000221c, +0x00050080,0x00000006,0x0000221f,0x00002b8e, +0x00000147,0x0004007c,0x00000019,0x00001efc, +0x00002b93,0x000200f9,0x00001efd,0x000200f8, +0x00001efd,0x000700f5,0x00000019,0x00002c2f, +0x0000006a,0x000021fa,0x00001efc,0x0000221c, +0x000700f5,0x00000006,0x00002ba6,0x000021fd, +0x000021fa,0x0000221f,0x0000221c,0x000200f9, +0x00001efe,0x000200f8,0x00001efe,0x000700f5, +0x00000019,0x00002c4b,0x0000006a,0x00001eed, +0x00001ef7,0x00001efd,0x000700f5,0x00000019, +0x00002c2c,0x0000006a,0x00001eed,0x00002c2f, +0x00001efd,0x000700f5,0x00000006,0x00002ba5, +0x00002b8e,0x00001eed,0x00002ba6,0x00001efd, +0x000200f9,0x00001eff,0x000200f8,0x00001eff, +0x000700f5,0x00000006,0x00002ba4,0x00002ba5, +0x00001efe,0x00002cb2,0x00001f17,0x000700f5, +0x00000019,0x00002b94,0x0000006a,0x00001efe, +0x00001f19,0x00001f17,0x000500b1,0x000000d0, +0x00001f02,0x00002b94,0x0000010e,0x000400f6, +0x00001f1a,0x00001f17,0x00000000,0x000400fa, +0x00001f02,0x00001f03,0x00001f1a,0x000200f8, +0x00001f03,0x000200f9,0x00001f04,0x000200f8, +0x00001f04,0x000700f5,0x00000006,0x00002cb2, +0x00002ba4,0x00001f03,0x00002241,0x00001f13, +0x000700f5,0x00000019,0x00002cad,0x0000006a, +0x00001f03,0x00001f15,0x00001f13,0x000500b1, +0x000000d0,0x00001f08,0x00002cad,0x00001eef, +0x000400f6,0x00001f16,0x00001f13,0x00000000, +0x000400fa,0x00001f08,0x00001f09,0x00001f16, +0x000200f8,0x00001f09,0x0003003e,0x00001e3b, +0x00000203,0x00050041,0x0000001a,0x00001f0d, +0x00001e3b,0x00002b7d,0x0004003d,0x00000019, +0x00001f0e,0x00001f0d,0x0004007c,0x00000006, +0x00001f0f,0x00001f0e,0x000200f9,0x00002226, +0x000200f8,0x00002226,0x000700f5,0x00000006, +0x00002cb3,0x00000138,0x00001f09,0x0000223a, +0x0000222b,0x000700f5,0x00000006,0x00002cb0, +0x00000138,0x00001f09,0x0000223d,0x0000222b, +0x000500b0,0x000000d0,0x0000222a,0x00002cb0, +0x00001f0f,0x000400f6,0x0000223e,0x0000222b, +0x00000000,0x000400fa,0x0000222a,0x0000222b, +0x0000223e,0x000200f8,0x0000222b,0x00050080, +0x00000006,0x0000222e,0x00002cb2,0x00002cb0, +0x000500c2,0x00000006,0x00002230,0x0000222e, +0x00000084,0x00050041,0x00000007,0x00002231, +0x0000015e,0x00002230,0x0004003d,0x00000006, +0x00002232,0x00002231,0x000500c7,0x00000006, +0x00002234,0x0000222e,0x00000080,0x000500c2, +0x00000006,0x00002235,0x00002232,0x00002234, +0x000500c7,0x00000006,0x00002236,0x00002235, +0x00000071,0x000500c4,0x00000006,0x00002238, +0x00002236,0x00002cb0,0x000500c5,0x00000006, +0x0000223a,0x00002cb3,0x00002238,0x00050080, +0x00000006,0x0000223d,0x00002cb0,0x000000c4, +0x000200f9,0x00002226,0x000200f8,0x0000223e, +0x00050080,0x00000006,0x00002241,0x00002cb2, +0x00001f0f,0x0004007c,0x00000019,0x00001f11, +0x00002cb3,0x00060041,0x0000001a,0x00001f12, +0x00001e3a,0x00002cad,0x00002b94,0x0003003e, +0x00001f12,0x00001f11,0x000200f9,0x00001f13, +0x000200f8,0x00001f13,0x00050080,0x00000019, +0x00001f15,0x00002cad,0x000000c4,0x000200f9, +0x00001f04,0x000200f8,0x00001f16,0x000200f9, +0x00001f17,0x000200f8,0x00001f17,0x00050080, +0x00000019,0x00001f19,0x00002b94,0x000000c4, +0x000200f9,0x00001eff,0x000200f8,0x00001f1a, +0x0003003e,0x00001e3d,0x00000211,0x00050041, +0x0000001a,0x00001f1c,0x00001e3d,0x00002b7d, +0x0004003d,0x00000019,0x00001f1d,0x00001f1c, +0x000500ad,0x000000d0,0x00001f1e,0x00001f1d, +0x0000006a,0x000300f7,0x00001f32,0x00000000, +0x000400fa,0x00001f1e,0x00001f1f,0x00001f32, +0x000200f8,0x00001f1f,0x000200f9,0x00001f20, +0x000200f8,0x00001f20,0x000700f5,0x00000006, +0x00002ba7,0x00002ba4,0x00001f1f,0x00002263, +0x00001f2e,0x000700f5,0x00000019,0x00002b99, +0x0000006a,0x00001f1f,0x00001f30,0x00001f2e, +0x000500b1,0x000000d0,0x00001f24,0x00002b99, +0x00001eef,0x000400f6,0x00001f31,0x00001f2e, +0x00000000,0x000400fa,0x00001f24,0x00001f25, +0x00001f31,0x000200f8,0x00001f25,0x0003003e, +0x00001e3f,0x00000211,0x00050041,0x0000001a, +0x00001f28,0x00001e3f,0x00002b7d,0x0004003d, +0x00000019,0x00001f29,0x00001f28,0x0004007c, +0x00000006,0x00001f2a,0x00001f29,0x000200f9, +0x00002248,0x000200f8,0x00002248,0x000700f5, +0x00000006,0x00002cab,0x00000138,0x00001f25, +0x0000225c,0x0000224d,0x000700f5,0x00000006, +0x00002ca9,0x00000138,0x00001f25,0x0000225f, +0x0000224d,0x000500b0,0x000000d0,0x0000224c, +0x00002ca9,0x00001f2a,0x000400f6,0x00002260, +0x0000224d,0x00000000,0x000400fa,0x0000224c, +0x0000224d,0x00002260,0x000200f8,0x0000224d, +0x00050080,0x00000006,0x00002250,0x00002ba7, +0x00002ca9,0x000500c2,0x00000006,0x00002252, +0x00002250,0x00000084,0x00050041,0x00000007, +0x00002253,0x0000015e,0x00002252,0x0004003d, +0x00000006,0x00002254,0x00002253,0x000500c7, +0x00000006,0x00002256,0x00002250,0x00000080, +0x000500c2,0x00000006,0x00002257,0x00002254, +0x00002256,0x000500c7,0x00000006,0x00002258, +0x00002257,0x00000071,0x000500c4,0x00000006, +0x0000225a,0x00002258,0x00002ca9,0x000500c5, +0x00000006,0x0000225c,0x00002cab,0x0000225a, +0x00050080,0x00000006,0x0000225f,0x00002ca9, +0x000000c4,0x000200f9,0x00002248,0x000200f8, +0x00002260,0x00050080,0x00000006,0x00002263, +0x00002ba7,0x00001f2a,0x0004007c,0x00000019, +0x00001f2c,0x00002cab,0x00060041,0x0000001a, +0x00001f2d,0x00001e3a,0x00002b99,0x0000010e, +0x0003003e,0x00001f2d,0x00001f2c,0x000200f9, +0x00001f2e,0x000200f8,0x00001f2e,0x00050080, +0x00000019,0x00001f30,0x00002b99,0x000000c4, +0x000200f9,0x00001f20,0x000200f8,0x00001f31, +0x000200f9,0x00001f32,0x000200f8,0x00001f32, +0x000700f5,0x00000006,0x00002ba3,0x00002ba4, +0x00001f1a,0x00002ba7,0x00001f31,0x000500a6, +0x000000d0,0x00001f3a,0x00001ed7,0x00001edc, +0x000500aa,0x000000d0,0x00001f3c,0x00002b7d, +0x0000017e,0x000500a6,0x000000d0,0x00001f3d, +0x00001f3a,0x00001f3c,0x000500a6,0x000000d0, +0x00001f40,0x00001f3d,0x00001edf,0x000300f7, +0x00001fa8,0x00000000,0x000400fa,0x00001f40, +0x00001f41,0x00001fa8,0x000200f8,0x00001f41, +0x000200f9,0x00001f42,0x000200f8,0x00001f42, +0x000700f5,0x00000019,0x00002b9c,0x0000006a, +0x00001f41,0x00001f59,0x00001f57,0x000500b1, +0x000000d0,0x00001f46,0x00002b9c,0x00001eef, +0x000400f6,0x00001f5a,0x00001f57,0x00000000, +0x000400fa,0x00001f46,0x00001f47,0x00001f5a, +0x000200f8,0x00001f47,0x000200f9,0x00001f48, +0x000200f8,0x00001f48,0x000700f5,0x00000019, +0x00002ca7,0x0000006a,0x00001f47,0x00001f55, +0x00001f4c,0x000500b1,0x000000d0,0x00001f4b, +0x00002ca7,0x000001da,0x000400f6,0x00001f56, +0x00001f4c,0x00000000,0x000400fa,0x00001f4b, +0x00001f4c,0x00001f56,0x000200f8,0x00001f4c, +0x00060041,0x0000001a,0x00001f4f,0x00001e3a, +0x00002b9c,0x00002ca7,0x0004003d,0x00000019, +0x00001f50,0x00001f4f,0x000500c4,0x00000019, +0x00001f51,0x00001f50,0x000000c4,0x0003003e, +0x00001f4f,0x00001f51,0x00050080,0x00000019, +0x00001f55,0x00002ca7,0x000000c4,0x000200f9, +0x00001f48,0x000200f8,0x00001f56,0x000200f9, +0x00001f57,0x000200f8,0x00001f57,0x00050080, +0x00000019,0x00001f59,0x00002b9c,0x000000c4, +0x000200f9,0x00001f42,0x000200f8,0x00001f5a, +0x000300f7,0x00001fa7,0x00000000,0x000400fa, +0x00001ed6,0x00001f5d,0x00001f83,0x000200f8, +0x00001f5d,0x000200f9,0x0000226a,0x000200f8, +0x0000226a,0x000700f5,0x00000006,0x00002bae, +0x00000138,0x00001f5d,0x0000227e,0x0000226f, +0x000700f5,0x00000006,0x00002bac,0x00000138, +0x00001f5d,0x00002281,0x0000226f,0x000500b0, +0x000000d0,0x0000226e,0x00002bac,0x00000071, +0x000400f6,0x00002282,0x0000226f,0x00000000, +0x000400fa,0x0000226e,0x0000226f,0x00002282, +0x000200f8,0x0000226f,0x00050080,0x00000006, +0x00002272,0x00002ba3,0x00002bac,0x000500c2, +0x00000006,0x00002274,0x00002272,0x00000084, +0x00050041,0x00000007,0x00002275,0x0000015e, +0x00002274,0x0004003d,0x00000006,0x00002276, +0x00002275,0x000500c7,0x00000006,0x00002278, +0x00002272,0x00000080,0x000500c2,0x00000006, +0x00002279,0x00002276,0x00002278,0x000500c7, +0x00000006,0x0000227a,0x00002279,0x00000071, +0x000500c4,0x00000006,0x0000227c,0x0000227a, +0x00002bac,0x000500c5,0x00000006,0x0000227e, +0x00002bae,0x0000227c,0x00050080,0x00000006, +0x00002281,0x00002bac,0x000000c4,0x000200f9, +0x0000226a,0x000200f8,0x00002282,0x00050080, +0x00000006,0x00002285,0x00002ba3,0x00000071, +0x0004007c,0x00000019,0x00001f5f,0x00002bae, +0x000200f9,0x0000228c,0x000200f8,0x0000228c, +0x000700f5,0x00000006,0x00002bb1,0x00000138, +0x00002282,0x000022a0,0x00002291,0x000700f5, +0x00000006,0x00002baf,0x00000138,0x00002282, +0x000022a3,0x00002291,0x000500b0,0x000000d0, +0x00002290,0x00002baf,0x00000071,0x000400f6, +0x000022a4,0x00002291,0x00000000,0x000400fa, +0x00002290,0x00002291,0x000022a4,0x000200f8, +0x00002291,0x00050080,0x00000006,0x00002294, +0x00002285,0x00002baf,0x000500c2,0x00000006, +0x00002296,0x00002294,0x00000084,0x00050041, +0x00000007,0x00002297,0x0000015e,0x00002296, +0x0004003d,0x00000006,0x00002298,0x00002297, +0x000500c7,0x00000006,0x0000229a,0x00002294, +0x00000080,0x000500c2,0x00000006,0x0000229b, +0x00002298,0x0000229a,0x000500c7,0x00000006, +0x0000229c,0x0000229b,0x00000071,0x000500c4, +0x00000006,0x0000229e,0x0000229c,0x00002baf, +0x000500c5,0x00000006,0x000022a0,0x00002bb1, +0x0000229e,0x00050080,0x00000006,0x000022a3, +0x00002baf,0x000000c4,0x000200f9,0x0000228c, +0x000200f8,0x000022a4,0x00050080,0x00000006, +0x000022a7,0x00002ba3,0x000000d4,0x0004007c, +0x00000019,0x00001f61,0x00002bb1,0x000200f9, +0x00001f62,0x000200f8,0x00001f62,0x000700f5, +0x00000019,0x00002bb2,0x0000006a,0x000022a4, +0x00001f81,0x00001f66,0x000500b1,0x000000d0, +0x00001f65,0x00002bb2,0x0000010e,0x000400f6, +0x00001f82,0x00001f66,0x00000000,0x000400fa, +0x00001f65,0x00001f66,0x00001f82,0x000200f8, +0x00001f66,0x00060041,0x0000001a,0x00001f69, +0x00001e3a,0x0000006a,0x00002bb2,0x0004003d, +0x00000019,0x00001f6a,0x00001f69,0x000500c5, +0x00000019,0x00001f6b,0x00001f6a,0x00001f5f, +0x0003003e,0x00001f69,0x00001f6b,0x00060041, +0x0000001a,0x00001f6f,0x00001e3a,0x000000c4, +0x00002bb2,0x0004003d,0x00000019,0x00001f70, +0x00001f6f,0x000500c5,0x00000019,0x00001f71, +0x00001f70,0x00001f5f,0x0003003e,0x00001f6f, +0x00001f71,0x00060041,0x0000001a,0x00001f75, +0x00001e3a,0x000000ef,0x00002bb2,0x0004003d, +0x00000019,0x00001f76,0x00001f75,0x000500c5, +0x00000019,0x00001f77,0x00001f76,0x00001f61, +0x0003003e,0x00001f75,0x00001f77,0x00060041, +0x0000001a,0x00001f7b,0x00001e3a,0x0000010e, +0x00002bb2,0x0004003d,0x00000019,0x00001f7c, +0x00001f7b,0x000500c5,0x00000019,0x00001f7d, +0x00001f7c,0x00001f61,0x0003003e,0x00001f7b, +0x00001f7d,0x00050080,0x00000019,0x00001f81, +0x00002bb2,0x000000c4,0x000200f9,0x00001f62, +0x000200f8,0x00001f82,0x000200f9,0x00001fa7, +0x000200f8,0x00001f83,0x000500c4,0x00000019, +0x00001f86,0x000000c4,0x00002b7d,0x000500c7, +0x00000019,0x00001f87,0x0000022f,0x00001f86, +0x000500ab,0x000000d0,0x00001f88,0x00001f87, +0x0000006a,0x000300f7,0x00001fa6,0x00000000, +0x000400fa,0x00001f88,0x00001f89,0x00001fa6, +0x000200f8,0x00001f89,0x000200f9,0x00001f8a, +0x000200f8,0x00001f8a,0x000700f5,0x00000006, +0x00002ba1,0x00002ba3,0x00001f89,0x000022c9, +0x00001fa2,0x000700f5,0x00000019,0x00002b9e, +0x0000006a,0x00001f89,0x00001fa4,0x00001fa2, +0x000500b1,0x000000d0,0x00001f8e,0x00002b9e, +0x00001eef,0x000400f6,0x00001fa5,0x00001fa2, +0x00000000,0x000400fa,0x00001f8e,0x00001f8f, +0x00001fa5,0x000200f8,0x00001f8f,0x000200f9, +0x000022ae,0x000200f8,0x000022ae,0x000700f5, +0x00000006,0x00002ba8,0x00000138,0x00001f8f, +0x000022c2,0x000022b3,0x000700f5,0x00000006, +0x00002b9f,0x00000138,0x00001f8f,0x000022c5, +0x000022b3,0x000500b0,0x000000d0,0x000022b2, +0x00002b9f,0x00000071,0x000400f6,0x000022c6, +0x000022b3,0x00000000,0x000400fa,0x000022b2, +0x000022b3,0x000022c6,0x000200f8,0x000022b3, +0x00050080,0x00000006,0x000022b6,0x00002ba1, +0x00002b9f,0x000500c2,0x00000006,0x000022b8, +0x000022b6,0x00000084,0x00050041,0x00000007, +0x000022b9,0x0000015e,0x000022b8,0x0004003d, +0x00000006,0x000022ba,0x000022b9,0x000500c7, +0x00000006,0x000022bc,0x000022b6,0x00000080, +0x000500c2,0x00000006,0x000022bd,0x000022ba, +0x000022bc,0x000500c7,0x00000006,0x000022be, +0x000022bd,0x00000071,0x000500c4,0x00000006, +0x000022c0,0x000022be,0x00002b9f,0x000500c5, +0x00000006,0x000022c2,0x00002ba8,0x000022c0, +0x00050080,0x00000006,0x000022c5,0x00002b9f, +0x000000c4,0x000200f9,0x000022ae,0x000200f8, +0x000022c6,0x00050080,0x00000006,0x000022c9, +0x00002ba1,0x00000071,0x0004007c,0x00000019, +0x00001f91,0x00002ba8,0x000200f9,0x00001f92, +0x000200f8,0x00001f92,0x000700f5,0x00000019, +0x00002ba9,0x0000006a,0x000022c6,0x00001fa0, +0x00001f96,0x000500b1,0x000000d0,0x00001f95, +0x00002ba9,0x000001da,0x000400f6,0x00001fa1, +0x00001f96,0x00000000,0x000400fa,0x00001f95, +0x00001f96,0x00001fa1,0x000200f8,0x00001f96, +0x00060041,0x0000001a,0x00001f9a,0x00001e3a, +0x00002b9e,0x00002ba9,0x0004003d,0x00000019, +0x00001f9b,0x00001f9a,0x000500c5,0x00000019, +0x00001f9c,0x00001f9b,0x00001f91,0x0003003e, +0x00001f9a,0x00001f9c,0x00050080,0x00000019, +0x00001fa0,0x00002ba9,0x000000c4,0x000200f9, +0x00001f92,0x000200f8,0x00001fa1,0x000200f9, +0x00001fa2,0x000200f8,0x00001fa2,0x00050080, +0x00000019,0x00001fa4,0x00002b9e,0x000000c4, +0x000200f9,0x00001f8a,0x000200f8,0x00001fa5, +0x000200f9,0x00001fa6,0x000200f8,0x00001fa6, +0x000700f5,0x00000006,0x00002c17,0x00002ba3, +0x00001f83,0x00002ba1,0x00001fa5,0x000200f9, +0x00001fa7,0x000200f8,0x00001fa7,0x000700f5, +0x00000006,0x00002c15,0x000022a7,0x00001f82, +0x00002c17,0x00001fa6,0x000200f9,0x00001fa8, +0x000200f8,0x00001fa8,0x000700f5,0x00000006, +0x00002c14,0x00002ba3,0x00001f32,0x00002c15, +0x00001fa7,0x000200f9,0x00001fa9,0x000200f8, +0x00001fa9,0x000700f5,0x00000019,0x00002bb3, +0x0000006a,0x00001fa8,0x00001ff5,0x00001ff3, +0x000500b1,0x000000d0,0x00001fad,0x00002bb3, +0x00001eef,0x000400f6,0x00001ff6,0x00001ff3, +0x00000000,0x000400fa,0x00001fad,0x00001fae, +0x00001ff6,0x000200f8,0x00001fae,0x0003003e, +0x00001e4f,0x00000203,0x00050041,0x0000001a, +0x00001fb0,0x00001e4f,0x00002b7d,0x0004003d, +0x00000019,0x00001fb1,0x00001fb0,0x000500c3, +0x00000019,0x00001fb4,0x0000022f,0x00002b7d, +0x000500c7,0x00000019,0x00001fb5,0x00001fb4, +0x000000c4,0x00050080,0x00000019,0x00001fb6, +0x00001fb1,0x00001fb5,0x000200f9,0x00001fb7, +0x000200f8,0x00001fb7,0x000700f5,0x00000019, +0x00002ca3,0x0000006a,0x00001fae,0x00001fd6, +0x00001fbb,0x000500b1,0x000000d0,0x00001fba, +0x00002ca3,0x0000010e,0x000400f6,0x00001fd7, +0x00001fbb,0x00000000,0x000400fa,0x00001fba, +0x00001fbb,0x00001fd7,0x000200f8,0x00001fbb, +0x00060041,0x0000001a,0x00001fc0,0x00001e3a, +0x00002bb3,0x00002ca3,0x0004003d,0x00000019, +0x00001fc1,0x00001fc0,0x00050082,0x00000019, +0x00001fc3,0x0000019a,0x00001fb6,0x000500c4, +0x00000019,0x00001fc4,0x00001fc1,0x00001fc3, +0x0003003e,0x00001fc0,0x00001fc4,0x0004003d, +0x00000019,0x00001fcb,0x00001fc0,0x0004003d, +0x00000019,0x00001fcf,0x00001fc0,0x000500c3, +0x00000019,0x00001fd1,0x00001fcf,0x00001fb6, +0x000500c5,0x00000019,0x00001fd2,0x00001fcb, +0x00001fd1,0x0003003e,0x00001fc0,0x00001fd2, +0x00050080,0x00000019,0x00001fd6,0x00002ca3, +0x000000c4,0x000200f9,0x00001fb7,0x000200f8, +0x00001fd7,0x0003003e,0x00001e51,0x00000211, +0x00050041,0x0000001a,0x00001fd9,0x00001e51, +0x00002b7d,0x0004003d,0x00000019,0x00001fda, +0x00001fd9,0x00050080,0x00000019,0x00001fdf, +0x00001fda,0x00001fb5,0x00060041,0x0000001a, +0x00001fe2,0x00001e3a,0x00002bb3,0x0000010e, +0x0004003d,0x00000019,0x00001fe3,0x00001fe2, +0x00050082,0x00000019,0x00001fe5,0x0000019a, +0x00001fdf,0x000500c4,0x00000019,0x00001fe6, +0x00001fe3,0x00001fe5,0x0003003e,0x00001fe2, +0x00001fe6,0x0004003d,0x00000019,0x00001feb, +0x00001fe2,0x0004003d,0x00000019,0x00001fee, +0x00001fe2,0x000500c3,0x00000019,0x00001ff0, +0x00001fee,0x00001fdf,0x000500c5,0x00000019, +0x00001ff1,0x00001feb,0x00001ff0,0x0003003e, +0x00001fe2,0x00001ff1,0x000200f9,0x00001ff3, +0x000200f8,0x00001ff3,0x00050080,0x00000019, +0x00001ff5,0x00002bb3,0x000000c4,0x000200f9, +0x00001fa9,0x000200f8,0x00001ff6,0x0003003e, +0x00001e52,0x00000211,0x00050041,0x0000001a, +0x00001ff8,0x00001e52,0x00002b7d,0x0004003d, +0x00000019,0x00001ff9,0x00001ff8,0x000500aa, +0x000000d0,0x00001ffa,0x00001ff9,0x0000006a, +0x000300f7,0x00002008,0x00000000,0x000400fa, +0x00001ffa,0x00001ffb,0x00002008,0x000200f8, +0x00001ffb,0x000200f9,0x00001ffc,0x000200f8, +0x00001ffc,0x000700f5,0x00000019,0x00002bbe, +0x0000006a,0x00001ffb,0x00002006,0x00002001, +0x000500b1,0x000000d0,0x00002000,0x00002bbe, +0x00001eef,0x000400f6,0x00002007,0x00002001, +0x00000000,0x000400fa,0x00002000,0x00002001, +0x00002007,0x000200f8,0x00002001,0x00060041, +0x0000001a,0x00002003,0x00001e3a,0x00002bbe, +0x0000010e,0x0003003e,0x00002003,0x00000315, +0x00050080,0x00000019,0x00002006,0x00002bbe, +0x000000c4,0x000200f9,0x00001ffc,0x000200f8, +0x00002007,0x000200f9,0x00002008,0x000200f8, +0x00002008,0x000300f7,0x00002013,0x00000000, +0x000400fa,0x00001ed7,0x0000200e,0x0000200f, +0x000200f8,0x0000200e,0x000200f9,0x00002013, +0x000200f8,0x0000200f,0x000600a9,0x00000019, +0x00002012,0x00001f3c,0x000001da,0x000000ef, +0x000200f9,0x00002013,0x000200f8,0x00002013, +0x000700f5,0x00000019,0x00002bc1,0x0000010e, +0x0000200e,0x00002012,0x0000200f,0x000300f7, +0x0000201c,0x00000000,0x000400fa,0x00001ef1, +0x00002017,0x00002018,0x000200f8,0x00002017, +0x000200f9,0x0000201c,0x000200f8,0x00002018, +0x000600a9,0x00000019,0x0000201b,0x00001ef3, +0x000000ef,0x0000006a,0x000200f9,0x0000201c, +0x000200f8,0x0000201c,0x000700f5,0x00000019, +0x00002bc3,0x0000010e,0x00002017,0x0000201b, +0x00002018,0x000200f9,0x0000201e,0x000200f8, +0x0000201e,0x000700f5,0x00000006,0x00002c0f, +0x00002c14,0x0000201c,0x00002c9f,0x0000206d, +0x000700f5,0x00000019,0x00002bc4,0x0000006a, +0x0000201c,0x0000206f,0x0000206d,0x000500b1, +0x000000d0,0x00002021,0x00002bc4,0x000001da, +0x000400f6,0x00002070,0x0000206d,0x00000000, +0x000400fa,0x00002021,0x00002022,0x00002070, +0x000200f8,0x00002022,0x000200f9,0x00002023, +0x000200f8,0x00002023,0x000700f5,0x00000006, +0x00002c9f,0x00002c0f,0x00002022,0x000022eb, +0x00002069,0x000700f5,0x00000019,0x00002c85, +0x0000006a,0x00002022,0x0000206b,0x00002069, +0x000500b1,0x000000d0,0x00002026,0x00002c85, +0x000001da,0x000400f6,0x0000206c,0x00002069, +0x00000000,0x000400fa,0x00002026,0x00002027, +0x0000206c,0x000200f8,0x00002027,0x000500aa, +0x000000d0,0x00002029,0x00002b88,0x000000c4, +0x000300f7,0x0000204b,0x00000000,0x000400fa, +0x00002029,0x0000202a,0x00002030,0x000200f8, +0x0000202a,0x000500c5,0x00000019,0x0000202d, +0x00002bc4,0x00002c85,0x000500ab,0x000000d0, +0x0000202e,0x0000202d,0x0000006a,0x000600a9, +0x00000019,0x0000202f,0x0000202e,0x0000006a, +0x0000034c,0x000200f9,0x0000204b,0x000200f8, +0x00002030,0x000500aa,0x000000d0,0x00002032, +0x00002b88,0x0000010e,0x000300f7,0x00002049, +0x00000000,0x000400fa,0x00002032,0x00002033, +0x0000203e,0x000200f8,0x00002033,0x00050084, +0x00000019,0x00002035,0x00002bec,0x0000035b, +0x00050084,0x00000019,0x00002037,0x00002bc4, +0x000001da,0x00050080,0x00000019,0x00002038, +0x00002035,0x00002037,0x00050080,0x00000019, +0x0000203a,0x00002038,0x00002c85,0x0003003e, +0x00001e5d,0x00000359,0x00050041,0x00000007, +0x0000203b,0x00001e5d,0x0000203a,0x0004003d, +0x00000006,0x0000203c,0x0000203b,0x0004007c, +0x00000019,0x0000203d,0x0000203c,0x000200f9, +0x00002049,0x000200f8,0x0000203e,0x00050084, +0x00000019,0x00002040,0x00002bec,0x0000035b, +0x00050084,0x00000019,0x00002042,0x00002bc4, +0x000001da,0x00050080,0x00000019,0x00002043, +0x00002040,0x00002042,0x00050080,0x00000019, +0x00002045,0x00002043,0x00002c85,0x0003003e, +0x00001e5e,0x00000368,0x00050041,0x00000007, +0x00002046,0x00001e5e,0x00002045,0x0004003d, +0x00000006,0x00002047,0x00002046,0x0004007c, +0x00000019,0x00002048,0x00002047,0x000200f9, +0x00002049,0x000200f8,0x00002049,0x000700f5, +0x00000019,0x00002c89,0x0000203d,0x00002033, +0x00002048,0x0000203e,0x000200f9,0x0000204b, +0x000200f8,0x0000204b,0x000700f5,0x00000019, +0x00002c8a,0x0000202f,0x0000202a,0x00002c89, +0x00002049,0x000300f7,0x00002057,0x00000000, +0x000400fa,0x00001ed7,0x00002052,0x00002053, +0x000200f8,0x00002052,0x000200f9,0x00002057, +0x000200f8,0x00002053,0x000600a9,0x00000019, +0x00002056,0x00001f3c,0x000001da,0x000000ef, +0x000200f9,0x00002057,0x000200f8,0x00002057, +0x000700f5,0x00000019,0x00002c90,0x0000010e, +0x00002052,0x00002056,0x00002053,0x000500c7, +0x00000019,0x0000205a,0x00002c8a,0x0000034c, +0x000500ab,0x000000d0,0x0000205b,0x0000205a, +0x0000006a,0x000300f7,0x0000205f,0x00000000, +0x000400fa,0x0000205b,0x0000205c,0x0000205f, +0x000200f8,0x0000205c,0x00050082,0x00000019, +0x0000205e,0x00002c90,0x000000c4,0x000200f9, +0x0000205f,0x000200f8,0x0000205f,0x000700f5, +0x00000019,0x00002c99,0x00002c90,0x00002057, +0x0000205e,0x0000205c,0x00050084,0x00000019, +0x00002061,0x00002bc4,0x000001da,0x00050080, +0x00000019,0x00002063,0x00002061,0x00002c85, +0x0004007c,0x00000006,0x00002065,0x00002c99, +0x000200f9,0x000022d0,0x000200f8,0x000022d0, +0x000700f5,0x00000006,0x00002ca1,0x00000138, +0x0000205f,0x000022e4,0x000022d5,0x000700f5, +0x00000006,0x00002c9a,0x00000138,0x0000205f, +0x000022e7,0x000022d5,0x000500b0,0x000000d0, +0x000022d4,0x00002c9a,0x00002065,0x000400f6, +0x000022e8,0x000022d5,0x00000000,0x000400fa, +0x000022d4,0x000022d5,0x000022e8,0x000200f8, +0x000022d5,0x00050080,0x00000006,0x000022d8, +0x00002c9f,0x00002c9a,0x000500c2,0x00000006, +0x000022da,0x000022d8,0x00000084,0x00050041, +0x00000007,0x000022db,0x0000015e,0x000022da, +0x0004003d,0x00000006,0x000022dc,0x000022db, +0x000500c7,0x00000006,0x000022de,0x000022d8, +0x00000080,0x000500c2,0x00000006,0x000022df, +0x000022dc,0x000022de,0x000500c7,0x00000006, +0x000022e0,0x000022df,0x00000071,0x000500c4, +0x00000006,0x000022e2,0x000022e0,0x00002c9a, +0x000500c5,0x00000006,0x000022e4,0x00002ca1, +0x000022e2,0x00050080,0x00000006,0x000022e7, +0x00002c9a,0x000000c4,0x000200f9,0x000022d0, +0x000200f8,0x000022e8,0x00050080,0x00000006, +0x000022eb,0x00002c9f,0x00002065,0x0004007c, +0x00000019,0x00002067,0x00002ca1,0x00050041, +0x0000001a,0x00002068,0x00001e61,0x00002063, +0x0003003e,0x00002068,0x00002067,0x000200f9, +0x00002069,0x000200f8,0x00002069,0x00050080, +0x00000019,0x0000206b,0x00002c85,0x000000c4, +0x000200f9,0x00002023,0x000200f8,0x0000206c, +0x000200f9,0x0000206d,0x000200f8,0x0000206d, +0x00050080,0x00000019,0x0000206f,0x00002bc4, +0x000000c4,0x000200f9,0x0000201e,0x000200f8, +0x00002070,0x000200f9,0x00002071,0x000200f8, +0x00002071,0x000700f5,0x00000019,0x00002bc5, +0x0000006a,0x00002070,0x00002196,0x00002194, +0x000700f5,0x00000006,0x00002c0e,0x00002c0f, +0x00002070,0x00002c0d,0x00002194,0x000500b1, +0x000000d0,0x00002074,0x00002bc5,0x000001da, +0x000400f6,0x00002197,0x00002194,0x00000000, +0x000400fa,0x00002074,0x00002075,0x00002197, +0x000200f8,0x00002075,0x000200f9,0x00002076, +0x000200f8,0x00002076,0x000700f5,0x00000006, +0x00002c0d,0x00002c0e,0x00002075,0x00003052, +0x00002190,0x000700f5,0x00000019,0x00002bc6, +0x0000006a,0x00002075,0x00002192,0x00002190, +0x000500b1,0x000000d0,0x00002079,0x00002bc6, +0x000001da,0x000400f6,0x00002193,0x00002190, +0x00000000,0x000400fa,0x00002079,0x0000207a, +0x00002193,0x000200f8,0x0000207a,0x000500aa, +0x000000d0,0x0000207c,0x00002b88,0x000000c4, +0x000300f7,0x0000209e,0x00000000,0x000400fa, +0x0000207c,0x0000207d,0x00002083,0x000200f8, +0x0000207d,0x000500c5,0x00000019,0x00002080, +0x00002bc5,0x00002bc6,0x000500ab,0x000000d0, +0x00002081,0x00002080,0x0000006a,0x000600a9, +0x00000019,0x00002082,0x00002081,0x0000006a, +0x0000034c,0x000200f9,0x0000209e,0x000200f8, +0x00002083,0x000500aa,0x000000d0,0x00002085, +0x00002b88,0x0000010e,0x000300f7,0x0000209c, +0x00000000,0x000400fa,0x00002085,0x00002086, +0x00002091,0x000200f8,0x00002086,0x00050084, +0x00000019,0x00002088,0x00002bec,0x0000035b, +0x00050084,0x00000019,0x0000208a,0x00002bc5, +0x000001da,0x00050080,0x00000019,0x0000208b, +0x00002088,0x0000208a,0x00050080,0x00000019, +0x0000208d,0x0000208b,0x00002bc6,0x0003003e, +0x00001e68,0x00000359,0x00050041,0x00000007, +0x0000208e,0x00001e68,0x0000208d,0x0004003d, +0x00000006,0x0000208f,0x0000208e,0x0004007c, +0x00000019,0x00002090,0x0000208f,0x000200f9, +0x0000209c,0x000200f8,0x00002091,0x00050084, +0x00000019,0x00002093,0x00002bec,0x0000035b, +0x00050084,0x00000019,0x00002095,0x00002bc5, +0x000001da,0x00050080,0x00000019,0x00002096, +0x00002093,0x00002095,0x00050080,0x00000019, +0x00002098,0x00002096,0x00002bc6,0x0003003e, +0x00001e69,0x00000368,0x00050041,0x00000007, +0x00002099,0x00001e69,0x00002098,0x0004003d, +0x00000006,0x0000209a,0x00002099,0x0004007c, +0x00000019,0x0000209b,0x0000209a,0x000200f9, +0x0000209c,0x000200f8,0x0000209c,0x000700f5, +0x00000019,0x00002bfb,0x00002090,0x00002086, +0x0000209b,0x00002091,0x000200f9,0x0000209e, +0x000200f8,0x0000209e,0x000700f5,0x00000019, +0x00002bfc,0x00002082,0x0000207d,0x00002bfb, +0x0000209c,0x000500c7,0x00000019,0x000020a1, +0x00002bfc,0x0000010e,0x00050084,0x00000019, +0x000020a3,0x00002bc5,0x000001da,0x00050080, +0x00000019,0x000020a5,0x000020a3,0x00002bc6, +0x00050041,0x0000001a,0x000020a6,0x00001e61, +0x000020a5,0x0004003d,0x00000019,0x000020a7, +0x000020a6,0x000500aa,0x000000d0,0x000020a9, +0x00002bc1,0x000000ef,0x000300f7,0x000020bb, +0x00000000,0x000400fa,0x000020a9,0x000020aa, +0x000020ae,0x000200f8,0x000020aa,0x0003003e, +0x00001e6e,0x000003e8,0x00050041,0x0000001a, +0x000020ac,0x00001e6e,0x000020a7,0x0004003d, +0x00000019,0x000020ad,0x000020ac,0x000200f9, +0x000020bb,0x000200f8,0x000020ae,0x000500aa, +0x000000d0,0x000020b0,0x00002bc1,0x0000010e, +0x000300f7,0x000020b9,0x00000000,0x000400fa, +0x000020b0,0x000020b1,0x000020b5,0x000200f8, +0x000020b1,0x0003003e,0x00001e70,0x000003fa, +0x00050041,0x0000001a,0x000020b3,0x00001e70, +0x000020a7,0x0004003d,0x00000019,0x000020b4, +0x000020b3,0x000200f9,0x000020b9,0x000200f8, +0x000020b5,0x0003003e,0x00001e71,0x00000409, +0x00050041,0x0000001a,0x000020b7,0x00001e71, +0x000020a7,0x0004003d,0x00000019,0x000020b8, +0x000020b7,0x000200f9,0x000020b9,0x000200f8, +0x000020b9,0x000700f5,0x00000019,0x00002c01, +0x000020b4,0x000020b1,0x000020b8,0x000020b5, +0x000200f9,0x000020bb,0x000200f8,0x000020bb, +0x000700f5,0x00000019,0x00002c02,0x000020ad, +0x000020aa,0x00002c01,0x000020b9,0x000500aa, +0x000000d0,0x000020be,0x00002bc3,0x0000006a, +0x000300f7,0x00002165,0x00000000,0x000400fa, +0x000020be,0x000020bf,0x000020ec,0x000200f8, +0x000020bf,0x00050084,0x00000019,0x000020c1, +0x000020a1,0x000000ef,0x00050080,0x00000019, +0x000020c4,0x000020c1,0x000000c4,0x00060041, +0x0000001a,0x000020c5,0x00001e3a,0x000020c1, +0x0000006a,0x0004003d,0x00000019,0x000020c6, +0x000020c5,0x00060041,0x0000001a,0x000020c7, +0x00001e3a,0x000020c4,0x0000006a,0x0004003d, +0x00000019,0x000020c8,0x000020c7,0x00050082, +0x00000019,0x000022f1,0x00000174,0x00002c02, +0x00050084,0x00000019,0x000022f2,0x000020c6, +0x000022f1,0x00050084,0x00000019,0x000022f5, +0x000020c8,0x00002c02,0x00050080,0x00000019, +0x000022f6,0x000022f2,0x000022f5,0x00050080, +0x00000019,0x000022f7,0x000022f6,0x0000017c, +0x000500c3,0x00000019,0x000022f8,0x000022f7, +0x0000017e,0x00060041,0x0000001a,0x000020d0, +0x00001e3a,0x000020c1,0x000000c4,0x0004003d, +0x00000019,0x000020d1,0x000020d0,0x00060041, +0x0000001a,0x000020d2,0x00001e3a,0x000020c4, +0x000000c4,0x0004003d,0x00000019,0x000020d3, +0x000020d2,0x00050084,0x00000019,0x000022fe, +0x000020d1,0x000022f1,0x00050084,0x00000019, +0x00002301,0x000020d3,0x00002c02,0x00050080, +0x00000019,0x00002302,0x000022fe,0x00002301, +0x00050080,0x00000019,0x00002303,0x00002302, +0x0000017c,0x000500c3,0x00000019,0x00002304, +0x00002303,0x0000017e,0x00060041,0x0000001a, +0x000020db,0x00001e3a,0x000020c1,0x000000ef, +0x0004003d,0x00000019,0x000020dc,0x000020db, +0x00060041,0x0000001a,0x000020dd,0x00001e3a, +0x000020c4,0x000000ef,0x0004003d,0x00000019, +0x000020de,0x000020dd,0x00050084,0x00000019, +0x0000230a,0x000020dc,0x000022f1,0x00050084, +0x00000019,0x0000230d,0x000020de,0x00002c02, +0x00050080,0x00000019,0x0000230e,0x0000230a, +0x0000230d,0x00050080,0x00000019,0x0000230f, +0x0000230e,0x0000017c,0x000500c3,0x00000019, +0x00002310,0x0000230f,0x0000017e,0x00060041, +0x0000001a,0x000020e6,0x00001e3a,0x000020c1, +0x0000010e,0x0004003d,0x00000019,0x000020e7, +0x000020e6,0x00060041,0x0000001a,0x000020e8, +0x00001e3a,0x000020c4,0x0000010e,0x0004003d, +0x00000019,0x000020e9,0x000020e8,0x00050084, +0x00000019,0x00002316,0x000020e7,0x000022f1, +0x00050084,0x00000019,0x00002319,0x000020e9, +0x00002c02,0x00050080,0x00000019,0x0000231a, +0x00002316,0x00002319,0x00050080,0x00000019, +0x0000231b,0x0000231a,0x0000017c,0x000500c3, +0x00000019,0x0000231c,0x0000231b,0x0000017e, +0x000200f9,0x00002165,0x000200f8,0x000020ec, +0x000500c5,0x00000019,0x000020ef,0x00002bc5, +0x00002bc6,0x000500ab,0x000000d0,0x000020f0, +0x000020ef,0x0000006a,0x000300f7,0x000020f8, +0x00000000,0x000400fa,0x000020f0,0x000020f1, +0x000020f4,0x000200f8,0x000020f1,0x0004007c, +0x00000006,0x000020f3,0x00002bc3,0x000200f9, +0x000020f8,0x000200f8,0x000020f4,0x00050082, +0x00000019,0x000020f6,0x00002bc3,0x000000c4, +0x0004007c,0x00000006,0x000020f7,0x000020f6, +0x000200f9,0x000020f8,0x000200f8,0x000020f8, +0x000700f5,0x00000006,0x00002c07,0x000020f3, +0x000020f1,0x000020f7,0x000020f4,0x000200f9, +0x00002322,0x000200f8,0x00002322,0x000700f5, +0x00000006,0x00002c1b,0x00000138,0x000020f8, +0x00002336,0x00002327,0x000700f5,0x00000006, +0x00002c08,0x00000138,0x000020f8,0x00002339, +0x00002327,0x000500b0,0x000000d0,0x00002326, +0x00002c08,0x00002c07,0x000400f6,0x0000233a, +0x00002327,0x00000000,0x000400fa,0x00002326, +0x00002327,0x0000233a,0x000200f8,0x00002327, +0x00050080,0x00000006,0x0000232a,0x00002c0d, +0x00002c08,0x000500c2,0x00000006,0x0000232c, +0x0000232a,0x00000084,0x00050041,0x00000007, +0x0000232d,0x0000015e,0x0000232c,0x0004003d, +0x00000006,0x0000232e,0x0000232d,0x000500c7, +0x00000006,0x00002330,0x0000232a,0x00000080, +0x000500c2,0x00000006,0x00002331,0x0000232e, +0x00002330,0x000500c7,0x00000006,0x00002332, +0x00002331,0x00000071,0x000500c4,0x00000006, +0x00002334,0x00002332,0x00002c08,0x000500c5, +0x00000006,0x00002336,0x00002c1b,0x00002334, +0x00050080,0x00000006,0x00002339,0x00002c08, +0x000000c4,0x000200f9,0x00002322,0x000200f8, +0x0000233a,0x00050080,0x00000006,0x0000233d, +0x00002c0d,0x00002c07,0x0004007c,0x00000019, +0x000020fb,0x00002c1b,0x000500aa,0x000000d0, +0x000020fd,0x00002bc3,0x000000ef,0x000300f7, +0x00002106,0x00000000,0x000400fa,0x000020fd, +0x000020fe,0x00002102,0x000200f8,0x000020fe, +0x0003003e,0x00001e87,0x000003e8,0x00050041, +0x0000001a,0x00002100,0x00001e87,0x000020fb, +0x0004003d,0x00000019,0x00002101,0x00002100, +0x000200f9,0x00002106,0x000200f8,0x00002102, +0x0003003e,0x00001e88,0x000003fa,0x00050041, +0x0000001a,0x00002104,0x00001e88,0x000020fb, +0x0004003d,0x00000019,0x00002105,0x00002104, +0x000200f9,0x00002106,0x000200f8,0x00002106, +0x000700f5,0x00000019,0x00002c1c,0x00002101, +0x000020fe,0x00002105,0x00002102,0x000500aa, +0x000000d0,0x00002109,0x00002c2c,0x0000006a, +0x000300f7,0x00002164,0x00000000,0x000400fa, +0x00002109,0x0000210a,0x00002137,0x000200f8, +0x0000210a,0x00050084,0x00000019,0x0000210c, +0x000020a1,0x000000ef,0x00050080,0x00000019, +0x0000210f,0x0000210c,0x000000c4,0x00060041, +0x0000001a,0x00002110,0x00001e3a,0x0000210c, +0x0000006a,0x0004003d,0x00000019,0x00002111, +0x00002110,0x00060041,0x0000001a,0x00002112, +0x00001e3a,0x0000210f,0x0000006a,0x0004003d, +0x00000019,0x00002113,0x00002112,0x00050082, +0x00000019,0x00002343,0x00000174,0x00002c02, +0x00050084,0x00000019,0x00002344,0x00002111, +0x00002343,0x00050084,0x00000019,0x00002347, +0x00002113,0x00002c02,0x00050080,0x00000019, +0x00002348,0x00002344,0x00002347,0x00050080, +0x00000019,0x00002349,0x00002348,0x0000017c, +0x000500c3,0x00000019,0x0000234a,0x00002349, +0x0000017e,0x00060041,0x0000001a,0x0000211b, +0x00001e3a,0x0000210c,0x000000c4,0x0004003d, +0x00000019,0x0000211c,0x0000211b,0x00060041, +0x0000001a,0x0000211d,0x00001e3a,0x0000210f, +0x000000c4,0x0004003d,0x00000019,0x0000211e, +0x0000211d,0x00050084,0x00000019,0x00002350, +0x0000211c,0x00002343,0x00050084,0x00000019, +0x00002353,0x0000211e,0x00002c02,0x00050080, +0x00000019,0x00002354,0x00002350,0x00002353, +0x00050080,0x00000019,0x00002355,0x00002354, +0x0000017c,0x000500c3,0x00000019,0x00002356, +0x00002355,0x0000017e,0x00060041,0x0000001a, +0x00002126,0x00001e3a,0x0000210c,0x000000ef, +0x0004003d,0x00000019,0x00002127,0x00002126, +0x00060041,0x0000001a,0x00002128,0x00001e3a, +0x0000210f,0x000000ef,0x0004003d,0x00000019, +0x00002129,0x00002128,0x00050084,0x00000019, +0x0000235c,0x00002127,0x00002343,0x00050084, +0x00000019,0x0000235f,0x00002129,0x00002c02, +0x00050080,0x00000019,0x00002360,0x0000235c, +0x0000235f,0x00050080,0x00000019,0x00002361, +0x00002360,0x0000017c,0x000500c3,0x00000019, +0x00002362,0x00002361,0x0000017e,0x00060041, +0x0000001a,0x00002131,0x00001e3a,0x0000210c, +0x0000010e,0x0004003d,0x00000019,0x00002132, +0x00002131,0x00060041,0x0000001a,0x00002133, +0x00001e3a,0x0000210f,0x0000010e,0x0004003d, +0x00000019,0x00002134,0x00002133,0x00050082, +0x00000019,0x00002367,0x00000174,0x00002c1c, +0x00050084,0x00000019,0x00002368,0x00002132, +0x00002367,0x00050084,0x00000019,0x0000236b, +0x00002134,0x00002c1c,0x00050080,0x00000019, +0x0000236c,0x00002368,0x0000236b,0x00050080, +0x00000019,0x0000236d,0x0000236c,0x0000017c, +0x000500c3,0x00000019,0x0000236e,0x0000236d, +0x0000017e,0x000200f9,0x00002164,0x000200f8, +0x00002137,0x00050084,0x00000019,0x00002139, +0x000020a1,0x000000ef,0x00050080,0x00000019, +0x0000213c,0x00002139,0x000000c4,0x00060041, +0x0000001a,0x0000213d,0x00001e3a,0x00002139, +0x0000006a,0x0004003d,0x00000019,0x0000213e, +0x0000213d,0x00060041,0x0000001a,0x0000213f, +0x00001e3a,0x0000213c,0x0000006a,0x0004003d, +0x00000019,0x00002140,0x0000213f,0x00050082, +0x00000019,0x00002373,0x00000174,0x00002c1c, +0x00050084,0x00000019,0x00002374,0x0000213e, +0x00002373,0x00050084,0x00000019,0x00002377, +0x00002140,0x00002c1c,0x00050080,0x00000019, +0x00002378,0x00002374,0x00002377,0x00050080, +0x00000019,0x00002379,0x00002378,0x0000017c, +0x000500c3,0x00000019,0x0000237a,0x00002379, +0x0000017e,0x00060041,0x0000001a,0x00002148, +0x00001e3a,0x00002139,0x000000c4,0x0004003d, +0x00000019,0x00002149,0x00002148,0x00060041, +0x0000001a,0x0000214a,0x00001e3a,0x0000213c, +0x000000c4,0x0004003d,0x00000019,0x0000214b, +0x0000214a,0x00050084,0x00000019,0x00002380, +0x00002149,0x00002373,0x00050084,0x00000019, +0x00002383,0x0000214b,0x00002c1c,0x00050080, +0x00000019,0x00002384,0x00002380,0x00002383, +0x00050080,0x00000019,0x00002385,0x00002384, +0x0000017c,0x000500c3,0x00000019,0x00002386, +0x00002385,0x0000017e,0x00060041,0x0000001a, +0x00002153,0x00001e3a,0x00002139,0x000000ef, +0x0004003d,0x00000019,0x00002154,0x00002153, +0x00060041,0x0000001a,0x00002155,0x00001e3a, +0x0000213c,0x000000ef,0x0004003d,0x00000019, +0x00002156,0x00002155,0x00050084,0x00000019, +0x0000238c,0x00002154,0x00002373,0x00050084, +0x00000019,0x0000238f,0x00002156,0x00002c1c, +0x00050080,0x00000019,0x00002390,0x0000238c, +0x0000238f,0x00050080,0x00000019,0x00002391, +0x00002390,0x0000017c,0x000500c3,0x00000019, +0x00002392,0x00002391,0x0000017e,0x00060041, +0x0000001a,0x0000215e,0x00001e3a,0x00002139, +0x0000010e,0x0004003d,0x00000019,0x0000215f, +0x0000215e,0x00060041,0x0000001a,0x00002160, +0x00001e3a,0x0000213c,0x0000010e,0x0004003d, +0x00000019,0x00002161,0x00002160,0x00050082, +0x00000019,0x00002397,0x00000174,0x00002c02, +0x00050084,0x00000019,0x00002398,0x0000215f, +0x00002397,0x00050084,0x00000019,0x0000239b, +0x00002161,0x00002c02,0x00050080,0x00000019, +0x0000239c,0x00002398,0x0000239b,0x00050080, +0x00000019,0x0000239d,0x0000239c,0x0000017c, +0x000500c3,0x00000019,0x0000239e,0x0000239d, +0x0000017e,0x000200f9,0x00002164,0x000200f8, +0x00002164,0x000700f5,0x00000019,0x00002c68, +0x0000234a,0x0000210a,0x0000237a,0x00002137, +0x000700f5,0x00000019,0x00002c66,0x00002356, +0x0000210a,0x00002386,0x00002137,0x000700f5, +0x00000019,0x00002c64,0x00002362,0x0000210a, +0x00002392,0x00002137,0x000700f5,0x00000019, +0x00002c62,0x0000236e,0x0000210a,0x0000239e, +0x00002137,0x000200f9,0x00002165,0x000200f8, +0x00002165,0x000700f5,0x00000006,0x00003052, +0x00002c0d,0x000020bf,0x0000233d,0x00002164, +0x000700f5,0x00000019,0x00002c67,0x000022f8, +0x000020bf,0x00002c68,0x00002164,0x000700f5, +0x00000019,0x00002c65,0x00002304,0x000020bf, +0x00002c66,0x00002164,0x000700f5,0x00000019, +0x00002c63,0x00002310,0x000020bf,0x00002c64, +0x00002164,0x000700f5,0x00000019,0x00002c61, +0x0000231c,0x000020bf,0x00002c62,0x00002164, +0x000500aa,0x000000d0,0x00002167,0x00002c4b, +0x000000c4,0x000300f7,0x0000217c,0x00000000, +0x000400fa,0x00002167,0x00002168,0x0000216c, +0x000200f8,0x00002168,0x000200f9,0x0000217c, +0x000200f8,0x0000216c,0x000500aa,0x000000d0, +0x0000216e,0x00002c4b,0x000000ef,0x000300f7, +0x0000217b,0x00000000,0x000400fa,0x0000216e, +0x0000216f,0x00002173,0x000200f8,0x0000216f, +0x000200f9,0x0000217b,0x000200f8,0x00002173, +0x000500aa,0x000000d0,0x00002175,0x00002c4b, +0x0000010e,0x000600a9,0x00000019,0x000031ee, +0x00002175,0x00002c63,0x00002c61,0x000600a9, +0x00000019,0x000031ef,0x00002175,0x00002c61, +0x00002c63,0x000200f9,0x0000217b,0x000200f8, +0x0000217b,0x000700f5,0x00000019,0x00002c83, +0x00002c65,0x0000216f,0x000031ee,0x00002173, +0x000700f5,0x00000019,0x00002c80,0x00002c63, +0x0000216f,0x000031ef,0x00002173,0x000600a9, +0x00000019,0x000031f0,0x0000216e,0x00002c61, +0x00002c65,0x000200f9,0x0000217c,0x000200f8, +0x0000217c,0x000700f5,0x00000019,0x00002c82, +0x00002c67,0x00002168,0x00002c83,0x0000217b, +0x000700f5,0x00000019,0x00002c7f,0x00002c63, +0x00002168,0x00002c80,0x0000217b,0x000700f5, +0x00000019,0x00002c7c,0x00002c65,0x00002168, +0x000031f0,0x0000217b,0x000600a9,0x00000019, +0x000031f1,0x00002167,0x00002c61,0x00002c67, +0x0004007c,0x00000006,0x00002182,0x000031f1, +0x0004007c,0x00000006,0x00002184,0x00002c7c, +0x000500c4,0x00000006,0x00002185,0x00002184, +0x00000031,0x000500c5,0x00000006,0x00002186, +0x00002182,0x00002185,0x0004007c,0x00000006, +0x00002188,0x00002c7f,0x000500c4,0x00000006, +0x00002189,0x00002188,0x00000049,0x000500c5, +0x00000006,0x0000218a,0x00002186,0x00002189, +0x0004007c,0x00000006,0x0000218c,0x00002c82, +0x000500c4,0x00000006,0x0000218d,0x0000218c, +0x00000512,0x000500c5,0x00000006,0x0000218e, +0x0000218a,0x0000218d,0x00050041,0x00000007, +0x0000218f,0x0000004c,0x000020a5,0x0003003e, +0x0000218f,0x0000218e,0x000200f9,0x00002190, +0x000200f8,0x00002190,0x00050080,0x00000019, +0x00002192,0x00002bc6,0x000000c4,0x000200f9, +0x00002076,0x000200f8,0x00002193,0x000200f9, +0x00002194,0x000200f8,0x00002194,0x00050080, +0x00000019,0x00002196,0x00002bc5,0x000000c4, +0x000200f9,0x00002071,0x000200f8,0x00002197, +0x000200f9,0x00002198,0x000200f8,0x00002198, +0x000200f9,0x00000e77,0x000200f8,0x00000e77, +0x00050041,0x00000db7,0x00000e7f,0x00000db6, +0x000001dd,0x0004003d,0x00000006,0x00000e80, +0x00000e7f,0x000500ab,0x000000d0,0x00000e81, +0x00000e80,0x00000138,0x000300f7,0x00000e83, +0x00000000,0x000400fa,0x00000e81,0x00000e82, +0x00000e85,0x000200f8,0x00000e82,0x00050041, +0x00000007,0x00002407,0x0000052f,0x0000006a, +0x0003003e,0x00002407,0x00000138,0x00050041, +0x00000007,0x00002408,0x0000052f,0x000000c4, +0x0003003e,0x00002408,0x00000138,0x00050041, +0x00000007,0x00002409,0x0000052f,0x000000ef, +0x0003003e,0x00002409,0x00000138,0x00050041, +0x00000007,0x0000240a,0x0000052f,0x0000010e, +0x0003003e,0x0000240a,0x00000138,0x000200f9, +0x00002585,0x000200f8,0x00002585,0x000700f5, +0x00000019,0x00002ce9,0x0000006a,0x00000e82, +0x000025a2,0x000025a0,0x000500b1,0x000000d0, +0x00002589,0x00002ce9,0x000005f3,0x000400f6, +0x000025a3,0x000025a0,0x00000000,0x000400fa, +0x00002589,0x0000258a,0x000025a3,0x000200f8, +0x0000258a,0x0004007c,0x00000006,0x0000258d, +0x00002ce9,0x000500c4,0x00000006,0x0000258e, +0x00000071,0x0000258d,0x000500c7,0x00000006, +0x0000258f,0x00000833,0x0000258e,0x000500ab, +0x000000d0,0x00002590,0x0000258f,0x00000138, +0x000300f7,0x0000259f,0x00000000,0x000400fa, +0x00002590,0x00002591,0x0000259f,0x000200f8, +0x00002591,0x000500c3,0x00000019,0x00002596, +0x00002ce9,0x000001dd,0x000500c7,0x00000019, +0x00002598,0x00002ce9,0x00000533,0x0004007c, +0x00000006,0x00002599,0x00002598,0x000500c4, +0x00000006,0x0000259a,0x00000071,0x00002599, +0x00050041,0x00000007,0x0000259b,0x0000052f, +0x00002596,0x0004003d,0x00000006,0x0000259c, +0x0000259b,0x000500c5,0x00000006,0x0000259d, +0x0000259c,0x0000259a,0x0003003e,0x0000259b, +0x0000259d,0x000200f9,0x0000259f,0x000200f8, +0x0000259f,0x000200f9,0x000025a0,0x000200f8, +0x000025a0,0x00050080,0x00000019,0x000025a2, +0x00002ce9,0x000000c4,0x000200f9,0x00002585, +0x000200f8,0x000025a3,0x000200f9,0x000025a7, +0x000200f8,0x000025a7,0x000700f5,0x00000019, +0x00002cea,0x0000006a,0x000025a3,0x000025c4, +0x000025c2,0x000500b1,0x000000d0,0x000025ab, +0x00002cea,0x000001da,0x000400f6,0x000025c5, +0x000025c2,0x00000000,0x000400fa,0x000025ab, +0x000025ac,0x000025c5,0x000200f8,0x000025ac, +0x0004007c,0x00000006,0x000025af,0x00002cea, +0x000500c4,0x00000006,0x000025b0,0x00000071, +0x000025af,0x000500c7,0x00000006,0x000025b1, +0x000006a4,0x000025b0,0x000500ab,0x000000d0, +0x000025b2,0x000025b1,0x00000138,0x000300f7, +0x000025c1,0x00000000,0x000400fa,0x000025b2, +0x000025b3,0x000025c1,0x000200f8,0x000025b3, +0x00050080,0x00000019,0x000025b6,0x00000400, +0x00002cea,0x000500c3,0x00000019,0x000025b8, +0x000025b6,0x000001dd,0x000500c7,0x00000019, +0x000025ba,0x000025b6,0x00000533,0x0004007c, +0x00000006,0x000025bb,0x000025ba,0x000500c4, +0x00000006,0x000025bc,0x00000071,0x000025bb, +0x00050041,0x00000007,0x000025bd,0x0000052f, +0x000025b8,0x0004003d,0x00000006,0x000025be, +0x000025bd,0x000500c5,0x00000006,0x000025bf, +0x000025be,0x000025bc,0x0003003e,0x000025bd, +0x000025bf,0x000200f9,0x000025c1,0x000200f8, +0x000025c1,0x000200f9,0x000025c2,0x000200f8, +0x000025c2,0x00050080,0x00000019,0x000025c4, +0x00002cea,0x000000c4,0x000200f9,0x000025a7, +0x000200f8,0x000025c5,0x000200f9,0x0000240d, +0x000200f8,0x0000240d,0x000700f5,0x00000019, +0x00002ced,0x0000006a,0x000025c5,0x00003097, +0x0000243e,0x000700f5,0x00000019,0x00002cec, +0x0000006a,0x000025c5,0x00003094,0x0000243e, +0x000700f5,0x00000019,0x00002ceb,0x0000006a, +0x000025c5,0x00002413,0x0000243e,0x000700f5, +0x00000019,0x00002d80,0x00000560,0x000025c5, +0x00002d7f,0x0000243e,0x000500b1,0x000000d0, +0x00002410,0x00002ceb,0x0000035b,0x000400f6, +0x00002441,0x0000243e,0x00000000,0x000400fa, +0x00002410,0x00002411,0x00002441,0x000200f8, +0x00002411,0x00050080,0x00000019,0x00002413, +0x00002ceb,0x000000c4,0x000200f9,0x00002414, +0x000200f8,0x00002414,0x000700f5,0x00000019, +0x00002d7f,0x00002d80,0x00002411,0x000031f2, +0x0000243a,0x000700f5,0x00000019,0x00002d7a, +0x00002413,0x00002411,0x0000243c,0x0000243a, +0x000700f5,0x00000019,0x00003097,0x00002ced, +0x00002411,0x000031f3,0x0000243a,0x000700f5, +0x00000019,0x00003094,0x00002cec,0x00002411, +0x000031f4,0x0000243a,0x000500b1,0x000000d0, +0x00002417,0x00002d7a,0x0000035b,0x000400f6, +0x0000243d,0x0000243a,0x00000000,0x000400fa, +0x00002417,0x00002418,0x0000243d,0x000200f8, +0x00002418,0x000200f9,0x00002419,0x000200f8, +0x00002419,0x000700f5,0x00000019,0x00002d7d, +0x0000006a,0x00002418,0x0000242d,0x0000241d, +0x000700f5,0x00000006,0x00002d7c,0x00000138, +0x00002418,0x00002430,0x0000241d,0x000500b0, +0x000000d0,0x0000241c,0x00002d7c,0x00000147, +0x000400f6,0x00002431,0x0000241d,0x00000000, +0x000400fa,0x0000241c,0x0000241d,0x00002431, +0x000200f8,0x0000241d,0x0004007c,0x00000006, +0x0000241f,0x00002ceb,0x00050041,0x00000007, +0x000025c9,0x0000004c,0x0000241f,0x0004003d, +0x00000006,0x000025ca,0x000025c9,0x00050084, +0x00000006,0x000025cc,0x00002d7c,0x00000031, +0x000500c2,0x00000006,0x000025cd,0x000025ca, +0x000025cc,0x000500c7,0x00000006,0x000025ce, +0x000025cd,0x00000054,0x0004007c,0x00000019, +0x00002422,0x000025ce,0x0004007c,0x00000006, +0x00002424,0x00002d7a,0x00050041,0x00000007, +0x000025d2,0x0000004c,0x00002424,0x0004003d, +0x00000006,0x000025d3,0x000025d2,0x000500c2, +0x00000006,0x000025d6,0x000025d3,0x000025cc, +0x000500c7,0x00000006,0x000025d7,0x000025d6, +0x00000054,0x0004007c,0x00000019,0x00002427, +0x000025d7,0x00050082,0x00000019,0x00002428, +0x00002422,0x00002427,0x00050084,0x00000019, +0x0000242b,0x00002428,0x00002428,0x00050080, +0x00000019,0x0000242d,0x00002d7d,0x0000242b, +0x00050080,0x00000006,0x00002430,0x00002d7c, +0x000000c4,0x000200f9,0x00002419,0x000200f8, +0x00002431,0x000500ad,0x000000d0,0x00002434, +0x00002d7d,0x00002d7f,0x000600a9,0x00000019, +0x000031f2,0x00002434,0x00002d7d,0x00002d7f, +0x000600a9,0x00000019,0x000031f3,0x00002434, +0x00002d7a,0x00003097,0x000600a9,0x00000019, +0x000031f4,0x00002434,0x00002ceb,0x00003094, +0x000200f9,0x0000243a,0x000200f8,0x0000243a, +0x00050080,0x00000019,0x0000243c,0x00002d7a, +0x000000c4,0x000200f9,0x00002414,0x000200f8, +0x0000243d,0x000200f9,0x0000243e,0x000200f8, +0x0000243e,0x000200f9,0x0000240d,0x000200f8, +0x00002441,0x0004007c,0x00000006,0x00002443, +0x00002cec,0x00050041,0x00000007,0x000025db, +0x0000004c,0x00002443,0x0004003d,0x00000006, +0x000025dc,0x000025db,0x000500c2,0x00000006, +0x000025df,0x000025dc,0x00000138,0x000500c7, +0x00000006,0x000025e0,0x000025df,0x00000054, +0x0004003d,0x00000006,0x000025e5,0x000025db, +0x000500c2,0x00000006,0x000025e8,0x000025e5, +0x00000031,0x000500c7,0x00000006,0x000025e9, +0x000025e8,0x00000054,0x00050080,0x00000006, +0x00002448,0x000025e0,0x000025e9,0x0004003d, +0x00000006,0x000025ee,0x000025db,0x000500c2, +0x00000006,0x000025f1,0x000025ee,0x00000049, +0x000500c7,0x00000006,0x000025f2,0x000025f1, +0x00000054,0x00050080,0x00000006,0x0000244c, +0x00002448,0x000025f2,0x0004007c,0x00000019, +0x0000244d,0x0000244c,0x0004007c,0x00000006, +0x0000244f,0x00002ced,0x00050041,0x00000007, +0x000025f6,0x0000004c,0x0000244f,0x0004003d, +0x00000006,0x000025f7,0x000025f6,0x000500c2, +0x00000006,0x000025fa,0x000025f7,0x00000138, +0x000500c7,0x00000006,0x000025fb,0x000025fa, +0x00000054,0x0004003d,0x00000006,0x00002600, +0x000025f6,0x000500c2,0x00000006,0x00002603, +0x00002600,0x00000031,0x000500c7,0x00000006, +0x00002604,0x00002603,0x00000054,0x00050080, +0x00000006,0x00002454,0x000025fb,0x00002604, +0x0004003d,0x00000006,0x00002609,0x000025f6, +0x000500c2,0x00000006,0x0000260c,0x00002609, +0x00000049,0x000500c7,0x00000006,0x0000260d, +0x0000260c,0x00000054,0x00050080,0x00000006, +0x00002458,0x00002454,0x0000260d,0x0004007c, +0x00000019,0x00002459,0x00002458,0x000500af, +0x000000d0,0x0000245c,0x00002459,0x0000244d, +0x000600a9,0x00000019,0x0000245f,0x0000245c, +0x00002cec,0x00002ced,0x000600a9,0x00000019, +0x00002465,0x0000245c,0x00002ced,0x00002cec, +0x000200f9,0x00002466,0x000200f8,0x00002466, +0x000700f5,0x00000019,0x00002cf0,0x0000006a, +0x00002441,0x000031f6,0x0000246a,0x000700f5, +0x00000019,0x00002cef,0x00000315,0x00002441, +0x000031f5,0x0000246a,0x000700f5,0x00000019, +0x00002cee,0x0000006a,0x00002441,0x0000247d, +0x0000246a,0x000500b1,0x000000d0,0x00002469, +0x00002cee,0x0000035b,0x000400f6,0x0000247e, +0x0000246a,0x00000000,0x000400fa,0x00002469, +0x0000246a,0x0000247e,0x000200f8,0x0000246a, +0x0004007c,0x00000006,0x0000246c,0x00002cee, +0x00050041,0x00000007,0x00002611,0x0000004c, +0x0000246c,0x0004003d,0x00000006,0x00002612, +0x00002611,0x000500c2,0x00000006,0x00002615, +0x00002612,0x00000512,0x000500c7,0x00000006, +0x00002616,0x00002615,0x00000054,0x0004007c, +0x00000019,0x0000246e,0x00002616,0x000500b1, +0x000000d0,0x00002471,0x0000246e,0x00002cef, +0x000600a9,0x00000019,0x000031f5,0x00002471, +0x0000246e,0x00002cef,0x000500ad,0x000000d0, +0x00002477,0x0000246e,0x00002cf0,0x000600a9, +0x00000019,0x000031f6,0x00002477,0x0000246e, +0x00002cf0,0x00050080,0x00000019,0x0000247d, +0x00002cee,0x000000c4,0x000200f9,0x00002466, +0x000200f8,0x0000247e,0x0004007c,0x00000006, +0x00002480,0x0000245f,0x00050041,0x00000007, +0x0000261a,0x0000004c,0x00002480,0x0004003d, +0x00000006,0x0000261b,0x0000261a,0x000500c2, +0x00000006,0x0000261e,0x0000261b,0x00000138, +0x000500c7,0x00000006,0x0000261f,0x0000261e, +0x00000054,0x0004007c,0x00000019,0x00002482, +0x0000261f,0x0004003d,0x00000006,0x00002624, +0x0000261a,0x000500c2,0x00000006,0x00002627, +0x00002624,0x00000031,0x000500c7,0x00000006, +0x00002628,0x00002627,0x00000054,0x0004007c, +0x00000019,0x00002486,0x00002628,0x0004003d, +0x00000006,0x0000262d,0x0000261a,0x000500c2, +0x00000006,0x00002630,0x0000262d,0x00000049, +0x000500c7,0x00000006,0x00002631,0x00002630, +0x00000054,0x0004007c,0x00000019,0x0000248a, +0x00002631,0x00070050,0x000001fd,0x0000248c, +0x00002482,0x00002486,0x0000248a,0x00002cef, +0x0003003e,0x000023c7,0x0000248c,0x0004007c, +0x00000006,0x0000248e,0x00002465,0x00050041, +0x00000007,0x00002635,0x0000004c,0x0000248e, +0x0004003d,0x00000006,0x00002636,0x00002635, +0x000500c2,0x00000006,0x00002639,0x00002636, +0x00000138,0x000500c7,0x00000006,0x0000263a, +0x00002639,0x00000054,0x0004007c,0x00000019, +0x00002490,0x0000263a,0x0004003d,0x00000006, +0x0000263f,0x00002635,0x000500c2,0x00000006, +0x00002642,0x0000263f,0x00000031,0x000500c7, +0x00000006,0x00002643,0x00002642,0x00000054, +0x0004007c,0x00000019,0x00002494,0x00002643, +0x0004003d,0x00000006,0x00002648,0x00002635, +0x000500c2,0x00000006,0x0000264b,0x00002648, +0x00000049,0x000500c7,0x00000006,0x0000264c, +0x0000264b,0x00000054,0x0004007c,0x00000019, +0x00002498,0x0000264c,0x00070050,0x000001fd, +0x0000249a,0x00002490,0x00002494,0x00002498, +0x00002cf0,0x0003003e,0x000023ce,0x0000249a, +0x00050041,0x0000001a,0x0000249b,0x000023c7, +0x0000006a,0x0004003d,0x00000019,0x0000249c, +0x0000249b,0x000500b1,0x000000d0,0x00002651, +0x0000249c,0x0000006a,0x000600a9,0x00000019, +0x000031f7,0x00002651,0x0000006a,0x0000249c, +0x000500ad,0x000000d0,0x00002655,0x000031f7, +0x00000315,0x000600a9,0x00000019,0x000031f8, +0x00002655,0x00000315,0x000031f7,0x0003003e, +0x0000264d,0x00000826,0x00050041,0x00000007, +0x00002659,0x0000264d,0x000031f8,0x0004003d, +0x00000006,0x0000265a,0x00002659,0x0004007c, +0x00000019,0x0000265b,0x0000265a,0x00050041, +0x0000001a,0x0000249e,0x000023ce,0x0000006a, +0x0004003d,0x00000019,0x0000249f,0x0000249e, +0x000500b1,0x000000d0,0x00002660,0x0000249f, +0x0000006a,0x000600a9,0x00000019,0x000031f9, +0x00002660,0x0000006a,0x0000249f,0x000500ad, +0x000000d0,0x00002664,0x000031f9,0x00000315, +0x000600a9,0x00000019,0x000031fa,0x00002664, +0x00000315,0x000031f9,0x0003003e,0x0000265c, +0x00000826,0x00050041,0x00000007,0x00002668, +0x0000265c,0x000031fa,0x0004003d,0x00000006, +0x00002669,0x00002668,0x0004007c,0x00000019, +0x0000266a,0x00002669,0x00050041,0x0000001a, +0x000024a1,0x000023c7,0x000000c4,0x0004003d, +0x00000019,0x000024a2,0x000024a1,0x000500b1, +0x000000d0,0x0000266f,0x000024a2,0x0000006a, +0x000600a9,0x00000019,0x000031fb,0x0000266f, +0x0000006a,0x000024a2,0x000500ad,0x000000d0, +0x00002673,0x000031fb,0x00000315,0x000600a9, +0x00000019,0x000031fc,0x00002673,0x00000315, +0x000031fb,0x0003003e,0x0000266b,0x00000826, +0x00050041,0x00000007,0x00002677,0x0000266b, +0x000031fc,0x0004003d,0x00000006,0x00002678, +0x00002677,0x0004007c,0x00000019,0x00002679, +0x00002678,0x00050041,0x0000001a,0x000024a4, +0x000023ce,0x000000c4,0x0004003d,0x00000019, +0x000024a5,0x000024a4,0x000500b1,0x000000d0, +0x0000267e,0x000024a5,0x0000006a,0x000600a9, +0x00000019,0x000031fd,0x0000267e,0x0000006a, +0x000024a5,0x000500ad,0x000000d0,0x00002682, +0x000031fd,0x00000315,0x000600a9,0x00000019, +0x000031fe,0x00002682,0x00000315,0x000031fd, +0x0003003e,0x0000267a,0x00000826,0x00050041, +0x00000007,0x00002686,0x0000267a,0x000031fe, +0x0004003d,0x00000006,0x00002687,0x00002686, +0x0004007c,0x00000019,0x00002688,0x00002687, +0x00050041,0x0000001a,0x000024a7,0x000023c7, +0x000000ef,0x0004003d,0x00000019,0x000024a8, +0x000024a7,0x000500b1,0x000000d0,0x0000268d, +0x000024a8,0x0000006a,0x000600a9,0x00000019, +0x000031ff,0x0000268d,0x0000006a,0x000024a8, +0x000500ad,0x000000d0,0x00002691,0x000031ff, +0x00000315,0x000600a9,0x00000019,0x00003200, +0x00002691,0x00000315,0x000031ff,0x0003003e, +0x00002689,0x00000826,0x00050041,0x00000007, +0x00002695,0x00002689,0x00003200,0x0004003d, +0x00000006,0x00002696,0x00002695,0x0004007c, +0x00000019,0x00002697,0x00002696,0x00050041, +0x0000001a,0x000024aa,0x000023ce,0x000000ef, +0x0004003d,0x00000019,0x000024ab,0x000024aa, +0x000500b1,0x000000d0,0x0000269c,0x000024ab, +0x0000006a,0x000600a9,0x00000019,0x00003201, +0x0000269c,0x0000006a,0x000024ab,0x000500ad, +0x000000d0,0x000026a0,0x00003201,0x00000315, +0x000600a9,0x00000019,0x00003202,0x000026a0, +0x00000315,0x00003201,0x0003003e,0x00002698, +0x00000826,0x00050041,0x00000007,0x000026a4, +0x00002698,0x00003202,0x0004003d,0x00000006, +0x000026a5,0x000026a4,0x0004007c,0x00000019, +0x000026a6,0x000026a5,0x00050041,0x0000001a, +0x000024ad,0x000023c7,0x0000010e,0x0004003d, +0x00000019,0x000024ae,0x000024ad,0x000500b1, +0x000000d0,0x000026ab,0x000024ae,0x0000006a, +0x000600a9,0x00000019,0x00003203,0x000026ab, +0x0000006a,0x000024ae,0x000500ad,0x000000d0, +0x000026af,0x00003203,0x00000315,0x000600a9, +0x00000019,0x00003204,0x000026af,0x00000315, +0x00003203,0x0003003e,0x000026a7,0x00000826, +0x00050041,0x00000007,0x000026b3,0x000026a7, +0x00003204,0x0004003d,0x00000006,0x000026b4, +0x000026b3,0x0004007c,0x00000019,0x000026b5, +0x000026b4,0x00050041,0x0000001a,0x000024b0, +0x000023ce,0x0000010e,0x0004003d,0x00000019, +0x000024b1,0x000024b0,0x000500b1,0x000000d0, +0x000026ba,0x000024b1,0x0000006a,0x000600a9, +0x00000019,0x00003205,0x000026ba,0x0000006a, +0x000024b1,0x000500ad,0x000000d0,0x000026be, +0x00003205,0x00000315,0x000600a9,0x00000019, +0x00003206,0x000026be,0x00000315,0x00003205, +0x0003003e,0x000026b6,0x00000826,0x00050041, +0x00000007,0x000026c2,0x000026b6,0x00003206, +0x0004003d,0x00000006,0x000026c3,0x000026c2, +0x0004007c,0x00000019,0x000026c4,0x000026c3, +0x000b0050,0x00000032,0x000024b3,0x0000265b, +0x0000266a,0x00002679,0x00002688,0x00002697, +0x000026a6,0x000026b5,0x000026c4,0x0003003e, +0x000023d5,0x000024b3,0x00050041,0x0000001a, +0x000024b4,0x000023d5,0x0000006a,0x0004003d, +0x00000019,0x000024b5,0x000024b4,0x0003003e, +0x000023df,0x00000920,0x00050041,0x00000007, +0x000024b6,0x000023df,0x000024b5,0x0004003d, +0x00000006,0x000024b7,0x000024b6,0x0004007c, +0x00000019,0x000024b8,0x000024b7,0x00050041, +0x0000001a,0x000024b9,0x000023d5,0x000000ef, +0x0004003d,0x00000019,0x000024ba,0x000024b9, +0x0003003e,0x000023e0,0x00000920,0x00050041, +0x00000007,0x000024bb,0x000023e0,0x000024ba, +0x0004003d,0x00000006,0x000024bc,0x000024bb, +0x0004007c,0x00000019,0x000024bd,0x000024bc, +0x00050080,0x00000019,0x000024be,0x000024b8, +0x000024bd,0x00050041,0x0000001a,0x000024bf, +0x000023d5,0x000001da,0x0004003d,0x00000019, +0x000024c0,0x000024bf,0x0003003e,0x000023e1, +0x00000920,0x00050041,0x00000007,0x000024c1, +0x000023e1,0x000024c0,0x0004003d,0x00000006, +0x000024c2,0x000024c1,0x0004007c,0x00000019, +0x000024c3,0x000024c2,0x00050080,0x00000019, +0x000024c4,0x000024be,0x000024c3,0x00050041, +0x0000001a,0x000024c5,0x000023d5,0x000000c4, +0x0004003d,0x00000019,0x000024c6,0x000024c5, +0x0003003e,0x000023e3,0x00000920,0x00050041, +0x00000007,0x000024c7,0x000023e3,0x000024c6, +0x0004003d,0x00000006,0x000024c8,0x000024c7, +0x0004007c,0x00000019,0x000024c9,0x000024c8, +0x00050041,0x0000001a,0x000024ca,0x000023d5, +0x0000010e,0x0004003d,0x00000019,0x000024cb, +0x000024ca,0x0003003e,0x000023e4,0x00000920, +0x00050041,0x00000007,0x000024cc,0x000023e4, +0x000024cb,0x0004003d,0x00000006,0x000024cd, +0x000024cc,0x0004007c,0x00000019,0x000024ce, +0x000024cd,0x00050080,0x00000019,0x000024cf, +0x000024c9,0x000024ce,0x00050041,0x0000001a, +0x000024d0,0x000023d5,0x000001dd,0x0004003d, +0x00000019,0x000024d1,0x000024d0,0x0003003e, +0x000023e5,0x00000920,0x00050041,0x00000007, +0x000024d2,0x000023e5,0x000024d1,0x0004003d, +0x00000006,0x000024d3,0x000024d2,0x0004007c, +0x00000019,0x000024d4,0x000024d3,0x00050080, +0x00000019,0x000024d5,0x000024cf,0x000024d4, +0x000500b1,0x000000d0,0x000024d8,0x000024d5, +0x000024c4,0x000600a9,0x00000019,0x000024d9, +0x000024d8,0x000000c4,0x0000006a,0x000500ab, +0x000000d0,0x000024db,0x000024d9,0x0000006a, +0x000300f7,0x000024f3,0x00000000,0x000400fa, +0x000024db,0x000024dc,0x000024f3,0x000200f8, +0x000024dc,0x000200f9,0x000024dd,0x000200f8, +0x000024dd,0x000700f5,0x00000019,0x00002d01, +0x0000006a,0x000024dc,0x000024f1,0x000024e1, +0x000500b1,0x000000d0,0x000024e0,0x00002d01, +0x0000019a,0x000400f6,0x000024f2,0x000024e1, +0x00000000,0x000400fa,0x000024e0,0x000024e1, +0x000024f2,0x000200f8,0x000024e1,0x00050041, +0x0000001a,0x000024e3,0x000023d5,0x00002d01, +0x0004003d,0x00000019,0x000024e4,0x000024e3, +0x00050080,0x00000019,0x000024e7,0x00002d01, +0x000000c4,0x00050041,0x0000001a,0x000024e8, +0x000023d5,0x000024e7,0x0004003d,0x00000019, +0x000024e9,0x000024e8,0x0003003e,0x000024e3, +0x000024e9,0x0003003e,0x000024e8,0x000024e4, +0x00050080,0x00000019,0x000024f1,0x00002d01, +0x000000ef,0x000200f9,0x000024dd,0x000200f8, +0x000024f2,0x000200f9,0x000024f3,0x000200f8, +0x000024f3,0x0004003d,0x00000032,0x000024f4, +0x000023d5,0x0003003e,0x000023e9,0x000024f4, +0x00050041,0x0000001a,0x000026df,0x000023e9, +0x0000006a,0x0004003d,0x00000019,0x000026e0, +0x000026df,0x000500c3,0x00000019,0x000026e1, +0x000026e0,0x000001da,0x00050041,0x0000001a, +0x000026e2,0x000023e9,0x000000c4,0x0004003d, +0x00000019,0x000026e3,0x000026e2,0x000500c3, +0x00000019,0x000026e4,0x000026e3,0x000001da, +0x00050084,0x00000019,0x000026e5,0x0000010e, +0x000026e4,0x00050080,0x00000019,0x000026e6, +0x000026e1,0x000026e5,0x00050041,0x0000001a, +0x000026e7,0x000023e9,0x000000ef,0x0004003d, +0x00000019,0x000026e8,0x000026e7,0x000500c3, +0x00000019,0x000026e9,0x000026e8,0x000001da, +0x00050084,0x00000019,0x000026ea,0x000003f4, +0x000026e9,0x00050080,0x00000019,0x000026eb, +0x000026e6,0x000026ea,0x00050041,0x0000001a, +0x000026ec,0x000023e9,0x0000010e,0x0004003d, +0x00000019,0x000026ed,0x000026ec,0x000500c3, +0x00000019,0x000026ee,0x000026ed,0x000001da, +0x00050084,0x00000019,0x000026ef,0x000003f6, +0x000026ee,0x00050080,0x00000019,0x000026f0, +0x000026eb,0x000026ef,0x00050041,0x0000001a, +0x000026f1,0x000023e9,0x000001da,0x0004003d, +0x00000019,0x000026f2,0x000026f1,0x000500c3, +0x00000019,0x000026f3,0x000026f2,0x000001da, +0x00050084,0x00000019,0x000026f4,0x00000787, +0x000026f3,0x00050080,0x00000019,0x000026f5, +0x000026f0,0x000026f4,0x0003003e,0x000026c7, +0x00000774,0x00050041,0x00000007,0x000026f6, +0x000026c7,0x000026f5,0x0004003d,0x00000006, +0x000026f7,0x000026f6,0x0004007c,0x00000019, +0x000026f8,0x000026f7,0x000200f9,0x000026f9, +0x000200f8,0x000026f9,0x000700f5,0x00000019, +0x00002d02,0x0000006a,0x000024f3,0x0000270b, +0x00002709,0x000500b1,0x000000d0,0x000026fc, +0x00002d02,0x000001dd,0x000400f6,0x0000270c, +0x00002709,0x00000000,0x000400fa,0x000026fc, +0x000026fd,0x0000270c,0x000200f8,0x000026fd, +0x0003003e,0x000026c9,0x0000079e,0x00050041, +0x0000001a,0x00002700,0x000026c9,0x00002d02, +0x0004003d,0x00000019,0x00002701,0x00002700, +0x00050080,0x00000019,0x00002702,0x00000401, +0x00002701,0x00050041,0x0000001a,0x00002704, +0x000023e9,0x00002d02,0x0004003d,0x00000019, +0x00002705,0x00002704,0x000500c7,0x00000019, +0x00002706,0x00002705,0x000007a8,0x0004007c, +0x00000006,0x00002707,0x00002706,0x000200f9, +0x00002761,0x000200f8,0x00002761,0x000700f5, +0x00000019,0x00002d74,0x0000006a,0x000026fd, +0x0000277e,0x0000277c,0x000500b1,0x000000d0, +0x00002765,0x00002d74,0x000001da,0x000400f6, +0x0000277f,0x0000277c,0x00000000,0x000400fa, +0x00002765,0x00002766,0x0000277f,0x000200f8, +0x00002766,0x0004007c,0x00000006,0x00002769, +0x00002d74,0x000500c4,0x00000006,0x0000276a, +0x00000071,0x00002769,0x000500c7,0x00000006, +0x0000276b,0x00002707,0x0000276a,0x000500ab, +0x000000d0,0x0000276c,0x0000276b,0x00000138, +0x000300f7,0x0000277b,0x00000000,0x000400fa, +0x0000276c,0x0000276d,0x0000277b,0x000200f8, +0x0000276d,0x00050080,0x00000019,0x00002770, +0x00002702,0x00002d74,0x000500c3,0x00000019, +0x00002772,0x00002770,0x000001dd,0x000500c7, +0x00000019,0x00002774,0x00002770,0x00000533, +0x0004007c,0x00000006,0x00002775,0x00002774, +0x000500c4,0x00000006,0x00002776,0x00000071, +0x00002775,0x00050041,0x00000007,0x00002777, +0x0000052f,0x00002772,0x0004003d,0x00000006, +0x00002778,0x00002777,0x000500c5,0x00000006, +0x00002779,0x00002778,0x00002776,0x0003003e, +0x00002777,0x00002779,0x000200f9,0x0000277b, +0x000200f8,0x0000277b,0x000200f9,0x0000277c, +0x000200f8,0x0000277c,0x00050080,0x00000019, +0x0000277e,0x00002d74,0x000000c4,0x000200f9, +0x00002761,0x000200f8,0x0000277f,0x000200f9, +0x00002709,0x000200f8,0x00002709,0x00050080, +0x00000019,0x0000270b,0x00002d02,0x000000c4, +0x000200f9,0x000026f9,0x000200f8,0x0000270c, +0x000200f9,0x0000270d,0x000200f8,0x0000270d, +0x000700f5,0x00000019,0x00002d03,0x0000006a, +0x0000270c,0x00002721,0x0000271f,0x000500b1, +0x000000d0,0x00002710,0x00002d03,0x0000019a, +0x000400f6,0x00002722,0x0000271f,0x00000000, +0x000400fa,0x00002710,0x00002711,0x00002722, +0x000200f8,0x00002711,0x000500c3,0x00000019, +0x00002714,0x000026f8,0x00002d03,0x000500c7, +0x00000019,0x00002715,0x00002714,0x000000c4, +0x000500ab,0x000000d0,0x00002716,0x00002715, +0x0000006a,0x000300f7,0x0000271e,0x00000000, +0x000400fa,0x00002716,0x00002717,0x0000271e, +0x000200f8,0x00002717,0x0003003e,0x000026ce, +0x000007c3,0x00050041,0x0000001a,0x0000271a, +0x000026ce,0x00002d03,0x0004003d,0x00000019, +0x0000271b,0x0000271a,0x00050080,0x00000019, +0x0000271c,0x00000401,0x0000271b,0x000200f9, +0x00002783,0x000200f8,0x00002783,0x000700f5, +0x00000019,0x00002d70,0x0000006a,0x00002717, +0x000027a0,0x0000279e,0x000500b1,0x000000d0, +0x00002787,0x00002d70,0x000000c4,0x000400f6, +0x000027a1,0x0000279e,0x00000000,0x000400fa, +0x00002787,0x00002788,0x000027a1,0x000200f8, +0x00002788,0x0004007c,0x00000006,0x0000278b, +0x00002d70,0x000500c4,0x00000006,0x0000278c, +0x00000071,0x0000278b,0x000500c7,0x00000006, +0x0000278d,0x00000071,0x0000278c,0x000500ab, +0x000000d0,0x0000278e,0x0000278d,0x00000138, +0x000300f7,0x0000279d,0x00000000,0x000400fa, +0x0000278e,0x0000278f,0x0000279d,0x000200f8, +0x0000278f,0x00050080,0x00000019,0x00002792, +0x0000271c,0x00002d70,0x000500c3,0x00000019, +0x00002794,0x00002792,0x000001dd,0x000500c7, +0x00000019,0x00002796,0x00002792,0x00000533, +0x0004007c,0x00000006,0x00002797,0x00002796, +0x000500c4,0x00000006,0x00002798,0x00000071, +0x00002797,0x00050041,0x00000007,0x00002799, +0x0000052f,0x00002794,0x0004003d,0x00000006, +0x0000279a,0x00002799,0x000500c5,0x00000006, +0x0000279b,0x0000279a,0x00002798,0x0003003e, +0x00002799,0x0000279b,0x000200f9,0x0000279d, +0x000200f8,0x0000279d,0x000200f9,0x0000279e, +0x000200f8,0x0000279e,0x00050080,0x00000019, +0x000027a0,0x00002d70,0x000000c4,0x000200f9, +0x00002783,0x000200f8,0x000027a1,0x000200f9, +0x0000271e,0x000200f8,0x0000271e,0x000200f9, +0x0000271f,0x000200f8,0x0000271f,0x00050080, +0x00000019,0x00002721,0x00002d03,0x000000c4, +0x000200f9,0x0000270d,0x000200f8,0x00002722, +0x00050041,0x0000001a,0x00002723,0x000023e9, +0x000001dd,0x0004003d,0x00000019,0x00002724, +0x00002723,0x000500c3,0x00000019,0x00002725, +0x00002724,0x000001da,0x00050041,0x0000001a, +0x00002726,0x000023e9,0x0000017e,0x0004003d, +0x00000019,0x00002727,0x00002726,0x000500c3, +0x00000019,0x00002728,0x00002727,0x000001da, +0x00050084,0x00000019,0x00002729,0x0000010e, +0x00002728,0x00050080,0x00000019,0x0000272a, +0x00002725,0x00002729,0x00050041,0x0000001a, +0x0000272b,0x000023e9,0x000001c5,0x0004003d, +0x00000019,0x0000272c,0x0000272b,0x000500c3, +0x00000019,0x0000272d,0x0000272c,0x000001da, +0x00050084,0x00000019,0x0000272e,0x000003f4, +0x0000272d,0x00050080,0x00000019,0x0000272f, +0x0000272a,0x0000272e,0x0003003e,0x000026d3, +0x000007d2,0x00050041,0x00000007,0x00002730, +0x000026d3,0x0000272f,0x0004003d,0x00000006, +0x00002731,0x00002730,0x0004007c,0x00000019, +0x00002732,0x00002731,0x000200f9,0x00002733, +0x000200f8,0x00002733,0x000700f5,0x00000019, +0x00002d04,0x0000006a,0x00002722,0x00002746, +0x00002744,0x000500b1,0x000000d0,0x00002736, +0x00002d04,0x0000010e,0x000400f6,0x00002747, +0x00002744,0x00000000,0x000400fa,0x00002736, +0x00002737,0x00002747,0x000200f8,0x00002737, +0x0003003e,0x000026d5,0x0000079e,0x00050041, +0x0000001a,0x0000273a,0x000026d5,0x00002d04, +0x0004003d,0x00000019,0x0000273b,0x0000273a, +0x00050080,0x00000019,0x0000273c,0x000007cf, +0x0000273b,0x00050080,0x00000019,0x0000273e, +0x000001dd,0x00002d04,0x00050041,0x0000001a, +0x0000273f,0x000023e9,0x0000273e,0x0004003d, +0x00000019,0x00002740,0x0000273f,0x000500c7, +0x00000019,0x00002741,0x00002740,0x000007a8, +0x0004007c,0x00000006,0x00002742,0x00002741, +0x000200f9,0x000027a5,0x000200f8,0x000027a5, +0x000700f5,0x00000019,0x00002d6b,0x0000006a, +0x00002737,0x000027c2,0x000027c0,0x000500b1, +0x000000d0,0x000027a9,0x00002d6b,0x000001da, +0x000400f6,0x000027c3,0x000027c0,0x00000000, +0x000400fa,0x000027a9,0x000027aa,0x000027c3, +0x000200f8,0x000027aa,0x0004007c,0x00000006, +0x000027ad,0x00002d6b,0x000500c4,0x00000006, +0x000027ae,0x00000071,0x000027ad,0x000500c7, +0x00000006,0x000027af,0x00002742,0x000027ae, +0x000500ab,0x000000d0,0x000027b0,0x000027af, +0x00000138,0x000300f7,0x000027bf,0x00000000, +0x000400fa,0x000027b0,0x000027b1,0x000027bf, +0x000200f8,0x000027b1,0x00050080,0x00000019, +0x000027b4,0x0000273c,0x00002d6b,0x000500c3, +0x00000019,0x000027b6,0x000027b4,0x000001dd, +0x000500c7,0x00000019,0x000027b8,0x000027b4, +0x00000533,0x0004007c,0x00000006,0x000027b9, +0x000027b8,0x000500c4,0x00000006,0x000027ba, +0x00000071,0x000027b9,0x00050041,0x00000007, +0x000027bb,0x0000052f,0x000027b6,0x0004003d, +0x00000006,0x000027bc,0x000027bb,0x000500c5, +0x00000006,0x000027bd,0x000027bc,0x000027ba, +0x0003003e,0x000027bb,0x000027bd,0x000200f9, +0x000027bf,0x000200f8,0x000027bf,0x000200f9, +0x000027c0,0x000200f8,0x000027c0,0x00050080, +0x00000019,0x000027c2,0x00002d6b,0x000000c4, +0x000200f9,0x000027a5,0x000200f8,0x000027c3, +0x000200f9,0x00002744,0x000200f8,0x00002744, +0x00050080,0x00000019,0x00002746,0x00002d04, +0x000000c4,0x000200f9,0x00002733,0x000200f8, +0x00002747,0x000200f9,0x00002748,0x000200f8, +0x00002748,0x000700f5,0x00000019,0x00002d05, +0x0000006a,0x00002747,0x0000275c,0x0000275a, +0x000500b1,0x000000d0,0x0000274b,0x00002d05, +0x000001dd,0x000400f6,0x0000275d,0x0000275a, +0x00000000,0x000400fa,0x0000274b,0x0000274c, +0x0000275d,0x000200f8,0x0000274c,0x000500c3, +0x00000019,0x0000274f,0x00002732,0x00002d05, +0x000500c7,0x00000019,0x00002750,0x0000274f, +0x000000c4,0x000500ab,0x000000d0,0x00002751, +0x00002750,0x0000006a,0x000300f7,0x00002759, +0x00000000,0x000400fa,0x00002751,0x00002752, +0x00002759,0x000200f8,0x00002752,0x0003003e, +0x000026da,0x000007c3,0x00050041,0x0000001a, +0x00002755,0x000026da,0x00002d05,0x0004003d, +0x00000019,0x00002756,0x00002755,0x00050080, +0x00000019,0x00002757,0x000007cf,0x00002756, +0x000200f9,0x000027c7,0x000200f8,0x000027c7, +0x000700f5,0x00000019,0x00002d67,0x0000006a, +0x00002752,0x000027e4,0x000027e2,0x000500b1, +0x000000d0,0x000027cb,0x00002d67,0x000000c4, +0x000400f6,0x000027e5,0x000027e2,0x00000000, +0x000400fa,0x000027cb,0x000027cc,0x000027e5, +0x000200f8,0x000027cc,0x0004007c,0x00000006, +0x000027cf,0x00002d67,0x000500c4,0x00000006, +0x000027d0,0x00000071,0x000027cf,0x000500c7, +0x00000006,0x000027d1,0x00000071,0x000027d0, +0x000500ab,0x000000d0,0x000027d2,0x000027d1, +0x00000138,0x000300f7,0x000027e1,0x00000000, +0x000400fa,0x000027d2,0x000027d3,0x000027e1, +0x000200f8,0x000027d3,0x00050080,0x00000019, +0x000027d6,0x00002757,0x00002d67,0x000500c3, +0x00000019,0x000027d8,0x000027d6,0x000001dd, +0x000500c7,0x00000019,0x000027da,0x000027d6, +0x00000533,0x0004007c,0x00000006,0x000027db, +0x000027da,0x000500c4,0x00000006,0x000027dc, +0x00000071,0x000027db,0x00050041,0x00000007, +0x000027dd,0x0000052f,0x000027d8,0x0004003d, +0x00000006,0x000027de,0x000027dd,0x000500c5, +0x00000006,0x000027df,0x000027de,0x000027dc, +0x0003003e,0x000027dd,0x000027df,0x000200f9, +0x000027e1,0x000200f8,0x000027e1,0x000200f9, +0x000027e2,0x000200f8,0x000027e2,0x00050080, +0x00000019,0x000027e4,0x00002d67,0x000000c4, +0x000200f9,0x000027c7,0x000200f8,0x000027e5, +0x000200f9,0x00002759,0x000200f8,0x00002759, +0x000200f9,0x0000275a,0x000200f8,0x0000275a, +0x00050080,0x00000019,0x0000275c,0x00002d05, +0x000000c4,0x000200f9,0x00002748,0x000200f8, +0x0000275d,0x000200f9,0x000027e9,0x000200f8, +0x000027e9,0x000700f5,0x00000019,0x00002d06, +0x0000006a,0x0000275d,0x00002806,0x00002804, +0x000500b1,0x000000d0,0x000027ed,0x00002d06, +0x000000ef,0x000400f6,0x00002807,0x00002804, +0x00000000,0x000400fa,0x000027ed,0x000027ee, +0x00002807,0x000200f8,0x000027ee,0x0004007c, +0x00000006,0x000027f1,0x00002d06,0x000500c4, +0x00000006,0x000027f2,0x00000071,0x000027f1, +0x000500c7,0x00000006,0x000027f3,0x00000147, +0x000027f2,0x000500ab,0x000000d0,0x000027f4, +0x000027f3,0x00000138,0x000300f7,0x00002803, +0x00000000,0x000400fa,0x000027f4,0x000027f5, +0x00002803,0x000200f8,0x000027f5,0x00050080, +0x00000019,0x000027f8,0x0000096f,0x00002d06, +0x000500c3,0x00000019,0x000027fa,0x000027f8, +0x000001dd,0x000500c7,0x00000019,0x000027fc, +0x000027f8,0x00000533,0x0004007c,0x00000006, +0x000027fd,0x000027fc,0x000500c4,0x00000006, +0x000027fe,0x00000071,0x000027fd,0x00050041, +0x00000007,0x000027ff,0x0000052f,0x000027fa, +0x0004003d,0x00000006,0x00002800,0x000027ff, +0x000500c5,0x00000006,0x00002801,0x00002800, +0x000027fe,0x0003003e,0x000027ff,0x00002801, +0x000200f9,0x00002803,0x000200f8,0x00002803, +0x000200f9,0x00002804,0x000200f8,0x00002804, +0x00050080,0x00000019,0x00002806,0x00002d06, +0x000000c4,0x000200f9,0x000027e9,0x000200f8, +0x00002807,0x000200f9,0x000024f7,0x000200f8, +0x000024f7,0x000700f5,0x00000019,0x00002d3a, +0x0000006a,0x00002807,0x0000250d,0x000024fb, +0x000700f5,0x00000006,0x00002d07,0x00000138, +0x00002807,0x00002510,0x000024fb,0x000500b0, +0x000000d0,0x000024fa,0x00002d07,0x00000147, +0x000400f6,0x00002511,0x000024fb,0x00000000, +0x000400fa,0x000024fa,0x000024fb,0x00002511, +0x000200f8,0x000024fb,0x00050041,0x0000001a, +0x000024fe,0x000023ce,0x00002d07,0x0004003d, +0x00000019,0x000024ff,0x000024fe,0x00050041, +0x0000001a,0x00002501,0x000023c7,0x00002d07, +0x0004003d,0x00000019,0x00002502,0x00002501, +0x00050082,0x00000019,0x00002503,0x000024ff, +0x00002502,0x00050041,0x0000001a,0x00002504, +0x000023ef,0x00002d07,0x0003003e,0x00002504, +0x00002503,0x0004003d,0x00000019,0x00002507, +0x00002504,0x0004003d,0x00000019,0x0000250a, +0x00002504,0x00050084,0x00000019,0x0000250b, +0x00002507,0x0000250a,0x00050080,0x00000019, +0x0000250d,0x00002d3a,0x0000250b,0x00050080, +0x00000006,0x00002510,0x00002d07,0x000000c4, +0x000200f9,0x000024f7,0x000200f8,0x00002511, +0x00050082,0x00000019,0x00002514,0x00002cf0, +0x00002cef,0x000200f9,0x00002515,0x000200f8, +0x00002515,0x000700f5,0x00000019,0x00002d38, +0x0000006a,0x00002511,0x00002580,0x0000257e, +0x000500b1,0x000000d0,0x00002518,0x00002d38, +0x0000035b,0x000400f6,0x00002581,0x0000257e, +0x00000000,0x000400fa,0x00002518,0x00002519, +0x00002581,0x000200f8,0x00002519,0x000500aa, +0x000000d0,0x0000251b,0x00002d3a,0x0000006a, +0x000300f7,0x00002549,0x00000000,0x000400fa, +0x0000251b,0x0000251c,0x0000251d,0x000200f8, +0x0000251c,0x000200f9,0x00002549,0x000200f8, +0x0000251d,0x000200f9,0x0000251e,0x000200f8, +0x0000251e,0x000700f5,0x00000019,0x00002d3c, +0x0000006a,0x0000251d,0x00002531,0x00002522, +0x000700f5,0x00000006,0x00002d3b,0x00000138, +0x0000251d,0x00002534,0x00002522,0x000500b0, +0x000000d0,0x00002521,0x00002d3b,0x00000147, +0x000400f6,0x00002535,0x00002522,0x00000000, +0x000400fa,0x00002521,0x00002522,0x00002535, +0x000200f8,0x00002522,0x0004007c,0x00000006, +0x00002524,0x00002d38,0x00050041,0x00000007, +0x0000280b,0x0000004c,0x00002524,0x0004003d, +0x00000006,0x0000280c,0x0000280b,0x00050084, +0x00000006,0x0000280e,0x00002d3b,0x00000031, +0x000500c2,0x00000006,0x0000280f,0x0000280c, +0x0000280e,0x000500c7,0x00000006,0x00002810, +0x0000280f,0x00000054,0x0004007c,0x00000019, +0x00002527,0x00002810,0x00050041,0x0000001a, +0x00002529,0x000023c7,0x00002d3b,0x0004003d, +0x00000019,0x0000252a,0x00002529,0x00050082, +0x00000019,0x0000252b,0x00002527,0x0000252a, +0x00050041,0x0000001a,0x0000252d,0x000023ef, +0x00002d3b,0x0004003d,0x00000019,0x0000252e, +0x0000252d,0x00050084,0x00000019,0x0000252f, +0x0000252b,0x0000252e,0x00050080,0x00000019, +0x00002531,0x00002d3c,0x0000252f,0x00050080, +0x00000006,0x00002534,0x00002d3b,0x000000c4, +0x000200f9,0x0000251e,0x000200f8,0x00002535, +0x000500b3,0x000000d0,0x00002537,0x00002d3c, +0x0000006a,0x000300f7,0x00002548,0x00000000, +0x000400fa,0x00002537,0x00002538,0x00002539, +0x000200f8,0x00002538,0x000200f9,0x00002548, +0x000200f8,0x00002539,0x000500af,0x000000d0, +0x0000253c,0x00002d3c,0x00002d3a,0x000300f7, +0x00002547,0x00000000,0x000400fa,0x0000253c, +0x0000253d,0x0000253e,0x000200f8,0x0000253d, +0x000200f9,0x00002547,0x000200f8,0x0000253e, +0x00050084,0x00000019,0x00002540,0x00002d3c, +0x0000010e,0x00050087,0x00000019,0x00002542, +0x00002d3a,0x000000ef,0x00050080,0x00000019, +0x00002543,0x00002540,0x00002542,0x00050087, +0x00000019,0x00002545,0x00002543,0x00002d3a, +0x0004007c,0x00000006,0x00002546,0x00002545, +0x000200f9,0x00002547,0x000200f8,0x00002547, +0x000700f5,0x00000006,0x00002d4c,0x00000147, +0x0000253d,0x00002546,0x0000253e,0x000200f9, +0x00002548,0x000200f8,0x00002548,0x000700f5, +0x00000006,0x00002d4b,0x00000138,0x00002538, +0x00002d4c,0x00002547,0x000200f9,0x00002549, +0x000200f8,0x00002549,0x000700f5,0x00000006, +0x00002d4a,0x00000138,0x0000251c,0x00002d4b, +0x00002548,0x000500aa,0x000000d0,0x0000254b, +0x00002514,0x0000006a,0x000300f7,0x00002565, +0x00000000,0x000400fa,0x0000254b,0x0000254c, +0x0000254d,0x000200f8,0x0000254c,0x000200f9, +0x00002565,0x000200f8,0x0000254d,0x0004007c, +0x00000006,0x0000254f,0x00002d38,0x00050041, +0x00000007,0x00002814,0x0000004c,0x0000254f, +0x0004003d,0x00000006,0x00002815,0x00002814, +0x000500c2,0x00000006,0x00002818,0x00002815, +0x00000512,0x000500c7,0x00000006,0x00002819, +0x00002818,0x00000054,0x0004007c,0x00000019, +0x00002551,0x00002819,0x00050082,0x00000019, +0x00002553,0x00002551,0x00002cef,0x00050084, +0x00000019,0x00002555,0x00002553,0x0000010e, +0x00050087,0x00000019,0x00002557,0x00002514, +0x000000ef,0x00050080,0x00000019,0x00002558, +0x00002555,0x00002557,0x00050087,0x00000019, +0x0000255a,0x00002558,0x00002514,0x000500b1, +0x000000d0,0x0000255c,0x0000255a,0x0000006a, +0x000600a9,0x00000019,0x00003207,0x0000255c, +0x0000006a,0x0000255a,0x000500ad,0x000000d0, +0x00002560,0x00003207,0x0000010e,0x000600a9, +0x00000019,0x00003208,0x00002560,0x0000010e, +0x00003207,0x0004007c,0x00000006,0x00002564, +0x00003208,0x000200f9,0x00002565,0x000200f8, +0x00002565,0x000700f5,0x00000006,0x00002d4f, +0x00000138,0x0000254c,0x00002564,0x0000254d, +0x000300f7,0x0000256d,0x00000000,0x000400fa, +0x000024db,0x00002568,0x0000256d,0x000200f8, +0x00002568,0x00050082,0x00000006,0x0000256a, +0x00000147,0x00002d4a,0x00050082,0x00000006, +0x0000256c,0x00000147,0x00002d4f,0x000200f9, +0x0000256d,0x000200f8,0x0000256d,0x000700f5, +0x00000006,0x00002d5c,0x00002d4f,0x00002565, +0x0000256c,0x00002568,0x000700f5,0x00000006, +0x00002d54,0x00002d4a,0x00002565,0x0000256a, +0x00002568,0x00050084,0x00000019,0x0000256f, +0x000000ef,0x00002d38,0x00050080,0x00000019, +0x00002570,0x0000256f,0x000000c4,0x00050084, +0x00000019,0x00002571,0x00002570,0x000000ef, +0x00050082,0x00000019,0x00002572,0x0000034c, +0x00002571,0x000200f9,0x0000281e,0x000200f8, +0x0000281e,0x000700f5,0x00000006,0x00002d56, +0x00000138,0x0000256d,0x00002830,0x00002823, +0x000700f5,0x00000019,0x00002d55,0x0000006a, +0x0000256d,0x00002833,0x00002823,0x000500b1, +0x000000d0,0x00002822,0x00002d55,0x000000ef, +0x000400f6,0x00002834,0x00002823,0x00000000, +0x000400fa,0x00002822,0x00002823,0x00002834, +0x000200f8,0x00002823,0x0004007c,0x00000006, +0x00002826,0x00002d55,0x000500c2,0x00000006, +0x00002827,0x00002d54,0x00002826,0x000500c7, +0x00000006,0x00002828,0x00002827,0x00000071, +0x00050082,0x00000019,0x0000282c,0x000000c4, +0x00002d55,0x0004007c,0x00000006,0x0000282d, +0x0000282c,0x000500c4,0x00000006,0x0000282e, +0x00002828,0x0000282d,0x000500c5,0x00000006, +0x00002830,0x00002d56,0x0000282e,0x00050080, +0x00000019,0x00002833,0x00002d55,0x000000c4, +0x000200f9,0x0000281e,0x000200f8,0x00002834, +0x000200f9,0x00002839,0x000200f8,0x00002839, +0x000700f5,0x00000019,0x00002d57,0x0000006a, +0x00002834,0x00002856,0x00002854,0x000500b1, +0x000000d0,0x0000283d,0x00002d57,0x000000ef, +0x000400f6,0x00002857,0x00002854,0x00000000, +0x000400fa,0x0000283d,0x0000283e,0x00002857, +0x000200f8,0x0000283e,0x0004007c,0x00000006, +0x00002841,0x00002d57,0x000500c4,0x00000006, +0x00002842,0x00000071,0x00002841,0x000500c7, +0x00000006,0x00002843,0x00002d56,0x00002842, +0x000500ab,0x000000d0,0x00002844,0x00002843, +0x00000138,0x000300f7,0x00002853,0x00000000, +0x000400fa,0x00002844,0x00002845,0x00002853, +0x000200f8,0x00002845,0x00050080,0x00000019, +0x00002848,0x00002572,0x00002d57,0x000500c3, +0x00000019,0x0000284a,0x00002848,0x000001dd, +0x000500c7,0x00000019,0x0000284c,0x00002848, +0x00000533,0x0004007c,0x00000006,0x0000284d, +0x0000284c,0x000500c4,0x00000006,0x0000284e, +0x00000071,0x0000284d,0x00050041,0x00000007, +0x0000284f,0x0000052f,0x0000284a,0x0004003d, +0x00000006,0x00002850,0x0000284f,0x000500c5, +0x00000006,0x00002851,0x00002850,0x0000284e, +0x0003003e,0x0000284f,0x00002851,0x000200f9, +0x00002853,0x000200f8,0x00002853,0x000200f9, +0x00002854,0x000200f8,0x00002854,0x00050080, +0x00000019,0x00002856,0x00002d57,0x000000c4, +0x000200f9,0x00002839,0x000200f8,0x00002857, +0x00050080,0x00000019,0x00002578,0x0000256f, +0x000000ef,0x00050084,0x00000019,0x00002579, +0x00002578,0x000000ef,0x00050082,0x00000019, +0x0000257a,0x0000034c,0x00002579,0x000200f9, +0x0000285c,0x000200f8,0x0000285c,0x000700f5, +0x00000006,0x00002d5e,0x00000138,0x00002857, +0x0000286e,0x00002861,0x000700f5,0x00000019, +0x00002d5d,0x0000006a,0x00002857,0x00002871, +0x00002861,0x000500b1,0x000000d0,0x00002860, +0x00002d5d,0x000000ef,0x000400f6,0x00002872, +0x00002861,0x00000000,0x000400fa,0x00002860, +0x00002861,0x00002872,0x000200f8,0x00002861, +0x0004007c,0x00000006,0x00002864,0x00002d5d, +0x000500c2,0x00000006,0x00002865,0x00002d5c, +0x00002864,0x000500c7,0x00000006,0x00002866, +0x00002865,0x00000071,0x00050082,0x00000019, +0x0000286a,0x000000c4,0x00002d5d,0x0004007c, +0x00000006,0x0000286b,0x0000286a,0x000500c4, +0x00000006,0x0000286c,0x00002866,0x0000286b, +0x000500c5,0x00000006,0x0000286e,0x00002d5e, +0x0000286c,0x00050080,0x00000019,0x00002871, +0x00002d5d,0x000000c4,0x000200f9,0x0000285c, +0x000200f8,0x00002872,0x000200f9,0x00002877, +0x000200f8,0x00002877,0x000700f5,0x00000019, +0x00002d5f,0x0000006a,0x00002872,0x00002894, +0x00002892,0x000500b1,0x000000d0,0x0000287b, +0x00002d5f,0x000000ef,0x000400f6,0x00002895, +0x00002892,0x00000000,0x000400fa,0x0000287b, +0x0000287c,0x00002895,0x000200f8,0x0000287c, +0x0004007c,0x00000006,0x0000287f,0x00002d5f, +0x000500c4,0x00000006,0x00002880,0x00000071, +0x0000287f,0x000500c7,0x00000006,0x00002881, +0x00002d5e,0x00002880,0x000500ab,0x000000d0, +0x00002882,0x00002881,0x00000138,0x000300f7, +0x00002891,0x00000000,0x000400fa,0x00002882, +0x00002883,0x00002891,0x000200f8,0x00002883, +0x00050080,0x00000019,0x00002886,0x0000257a, +0x00002d5f,0x000500c3,0x00000019,0x00002888, +0x00002886,0x000001dd,0x000500c7,0x00000019, +0x0000288a,0x00002886,0x00000533,0x0004007c, +0x00000006,0x0000288b,0x0000288a,0x000500c4, +0x00000006,0x0000288c,0x00000071,0x0000288b, +0x00050041,0x00000007,0x0000288d,0x0000052f, +0x00002888,0x0004003d,0x00000006,0x0000288e, +0x0000288d,0x000500c5,0x00000006,0x0000288f, +0x0000288e,0x0000288c,0x0003003e,0x0000288d, +0x0000288f,0x000200f9,0x00002891,0x000200f8, +0x00002891,0x000200f9,0x00002892,0x000200f8, +0x00002892,0x00050080,0x00000019,0x00002894, +0x00002d5f,0x000000c4,0x000200f9,0x00002877, +0x000200f8,0x00002895,0x000200f9,0x0000257e, +0x000200f8,0x0000257e,0x00050080,0x00000019, +0x00002580,0x00002d38,0x000000c4,0x000200f9, +0x00002515,0x000200f8,0x00002581,0x000200f9, +0x00000e83,0x000200f8,0x00000e85,0x00050041, +0x00000007,0x000028e0,0x0000052f,0x0000006a, +0x0003003e,0x000028e0,0x00000138,0x00050041, +0x00000007,0x000028e1,0x0000052f,0x000000c4, +0x0003003e,0x000028e1,0x00000138,0x00050041, +0x00000007,0x000028e2,0x0000052f,0x000000ef, +0x0003003e,0x000028e2,0x00000138,0x00050041, +0x00000007,0x000028e3,0x0000052f,0x0000010e, +0x0003003e,0x000028e3,0x00000138,0x000200f9, +0x000028e4,0x000200f8,0x000028e4,0x000700f5, +0x00000019,0x00002cb9,0x0000006a,0x00000e85, +0x00003088,0x00002915,0x000700f5,0x00000019, +0x00002cb8,0x0000006a,0x00000e85,0x00003085, +0x00002915,0x000700f5,0x00000019,0x00002cb7, +0x0000006a,0x00000e85,0x000028ea,0x00002915, +0x000700f5,0x00000019,0x00002ce5,0x00000560, +0x00000e85,0x00002ce4,0x00002915,0x000500b1, +0x000000d0,0x000028e7,0x00002cb7,0x0000035b, +0x000400f6,0x00002918,0x00002915,0x00000000, +0x000400fa,0x000028e7,0x000028e8,0x00002918, +0x000200f8,0x000028e8,0x00050080,0x00000019, +0x000028ea,0x00002cb7,0x000000c4,0x000200f9, +0x000028eb,0x000200f8,0x000028eb,0x000700f5, +0x00000019,0x00002ce4,0x00002ce5,0x000028e8, +0x00003209,0x00002911,0x000700f5,0x00000019, +0x00002cdf,0x000028ea,0x000028e8,0x00002913, +0x00002911,0x000700f5,0x00000019,0x00003088, +0x00002cb9,0x000028e8,0x0000320a,0x00002911, +0x000700f5,0x00000019,0x00003085,0x00002cb8, +0x000028e8,0x0000320b,0x00002911,0x000500b1, +0x000000d0,0x000028ee,0x00002cdf,0x0000035b, +0x000400f6,0x00002914,0x00002911,0x00000000, +0x000400fa,0x000028ee,0x000028ef,0x00002914, +0x000200f8,0x000028ef,0x000200f9,0x000028f0, +0x000200f8,0x000028f0,0x000700f5,0x00000019, +0x00002ce2,0x0000006a,0x000028ef,0x00002904, +0x000028f4,0x000700f5,0x00000006,0x00002ce1, +0x00000138,0x000028ef,0x00002907,0x000028f4, +0x000500b0,0x000000d0,0x000028f3,0x00002ce1, +0x00000147,0x000400f6,0x00002908,0x000028f4, +0x00000000,0x000400fa,0x000028f3,0x000028f4, +0x00002908,0x000200f8,0x000028f4,0x0004007c, +0x00000006,0x000028f6,0x00002cb7,0x00050041, +0x00000007,0x000029cc,0x0000004c,0x000028f6, +0x0004003d,0x00000006,0x000029cd,0x000029cc, +0x00050084,0x00000006,0x000029cf,0x00002ce1, +0x00000031,0x000500c2,0x00000006,0x000029d0, +0x000029cd,0x000029cf,0x000500c7,0x00000006, +0x000029d1,0x000029d0,0x00000054,0x0004007c, +0x00000019,0x000028f9,0x000029d1,0x0004007c, +0x00000006,0x000028fb,0x00002cdf,0x00050041, +0x00000007,0x000029d5,0x0000004c,0x000028fb, +0x0004003d,0x00000006,0x000029d6,0x000029d5, +0x000500c2,0x00000006,0x000029d9,0x000029d6, +0x000029cf,0x000500c7,0x00000006,0x000029da, +0x000029d9,0x00000054,0x0004007c,0x00000019, +0x000028fe,0x000029da,0x00050082,0x00000019, +0x000028ff,0x000028f9,0x000028fe,0x00050084, +0x00000019,0x00002902,0x000028ff,0x000028ff, +0x00050080,0x00000019,0x00002904,0x00002ce2, +0x00002902,0x00050080,0x00000006,0x00002907, +0x00002ce1,0x000000c4,0x000200f9,0x000028f0, +0x000200f8,0x00002908,0x000500ad,0x000000d0, +0x0000290b,0x00002ce2,0x00002ce4,0x000600a9, +0x00000019,0x00003209,0x0000290b,0x00002ce2, +0x00002ce4,0x000600a9,0x00000019,0x0000320a, +0x0000290b,0x00002cdf,0x00003088,0x000600a9, +0x00000019,0x0000320b,0x0000290b,0x00002cb7, +0x00003085,0x000200f9,0x00002911,0x000200f8, +0x00002911,0x00050080,0x00000019,0x00002913, +0x00002cdf,0x000000c4,0x000200f9,0x000028eb, +0x000200f8,0x00002914,0x000200f9,0x00002915, +0x000200f8,0x00002915,0x000200f9,0x000028e4, +0x000200f8,0x00002918,0x0004007c,0x00000006, +0x0000291a,0x00002cb8,0x00050041,0x00000007, +0x000029de,0x0000004c,0x0000291a,0x0004003d, +0x00000006,0x000029df,0x000029de,0x000500c2, +0x00000006,0x000029e2,0x000029df,0x00000138, +0x000500c7,0x00000006,0x000029e3,0x000029e2, +0x00000054,0x0004003d,0x00000006,0x000029e8, +0x000029de,0x000500c2,0x00000006,0x000029eb, +0x000029e8,0x00000031,0x000500c7,0x00000006, +0x000029ec,0x000029eb,0x00000054,0x00050080, +0x00000006,0x0000291f,0x000029e3,0x000029ec, +0x0004003d,0x00000006,0x000029f1,0x000029de, +0x000500c2,0x00000006,0x000029f4,0x000029f1, +0x00000049,0x000500c7,0x00000006,0x000029f5, +0x000029f4,0x00000054,0x00050080,0x00000006, +0x00002923,0x0000291f,0x000029f5,0x0004007c, +0x00000019,0x00002924,0x00002923,0x0004007c, +0x00000006,0x00002926,0x00002cb9,0x00050041, +0x00000007,0x000029f9,0x0000004c,0x00002926, +0x0004003d,0x00000006,0x000029fa,0x000029f9, +0x000500c2,0x00000006,0x000029fd,0x000029fa, +0x00000138,0x000500c7,0x00000006,0x000029fe, +0x000029fd,0x00000054,0x0004003d,0x00000006, +0x00002a03,0x000029f9,0x000500c2,0x00000006, +0x00002a06,0x00002a03,0x00000031,0x000500c7, +0x00000006,0x00002a07,0x00002a06,0x00000054, +0x00050080,0x00000006,0x0000292b,0x000029fe, +0x00002a07,0x0004003d,0x00000006,0x00002a0c, +0x000029f9,0x000500c2,0x00000006,0x00002a0f, +0x00002a0c,0x00000049,0x000500c7,0x00000006, +0x00002a10,0x00002a0f,0x00000054,0x00050080, +0x00000006,0x0000292f,0x0000292b,0x00002a10, +0x0004007c,0x00000019,0x00002930,0x0000292f, +0x000500af,0x000000d0,0x00002933,0x00002930, +0x00002924,0x000600a9,0x00000019,0x00002936, +0x00002933,0x00002cb8,0x00002cb9,0x000600a9, +0x00000019,0x0000293c,0x00002933,0x00002cb9, +0x00002cb8,0x000200f9,0x0000293d,0x000200f8, +0x0000293d,0x000700f5,0x00000006,0x00002cba, +0x00000138,0x00002918,0x00002952,0x00002941, +0x000500b0,0x000000d0,0x00002940,0x00002cba, +0x00000147,0x000400f6,0x00002953,0x00002941, +0x00000000,0x000400fa,0x00002940,0x00002941, +0x00002953,0x000200f8,0x00002941,0x0004007c, +0x00000006,0x00002944,0x00002936,0x00050041, +0x00000007,0x00002a14,0x0000004c,0x00002944, +0x0004003d,0x00000006,0x00002a15,0x00002a14, +0x00050084,0x00000006,0x00002a17,0x00002cba, +0x00000031,0x000500c2,0x00000006,0x00002a18, +0x00002a15,0x00002a17,0x000500c7,0x00000006, +0x00002a19,0x00002a18,0x00000054,0x0004007c, +0x00000019,0x00002947,0x00002a19,0x00050041, +0x0000001a,0x00002948,0x000028b3,0x00002cba, +0x0003003e,0x00002948,0x00002947,0x0004007c, +0x00000006,0x0000294b,0x0000293c,0x00050041, +0x00000007,0x00002a1d,0x0000004c,0x0000294b, +0x0004003d,0x00000006,0x00002a1e,0x00002a1d, +0x000500c2,0x00000006,0x00002a21,0x00002a1e, +0x00002a17,0x000500c7,0x00000006,0x00002a22, +0x00002a21,0x00000054,0x0004007c,0x00000019, +0x0000294e,0x00002a22,0x00050041,0x0000001a, +0x0000294f,0x000028b6,0x00002cba,0x0003003e, +0x0000294f,0x0000294e,0x00050080,0x00000006, +0x00002952,0x00002cba,0x000000c4,0x000200f9, +0x0000293d,0x000200f8,0x00002953,0x000200f9, +0x00002a26,0x000200f8,0x00002a26,0x000700f5, +0x00000019,0x00002cbb,0x0000006a,0x00002953, +0x00002a43,0x00002a41,0x000500b1,0x000000d0, +0x00002a2a,0x00002cbb,0x000005f3,0x000400f6, +0x00002a44,0x00002a41,0x00000000,0x000400fa, +0x00002a2a,0x00002a2b,0x00002a44,0x000200f8, +0x00002a2b,0x0004007c,0x00000006,0x00002a2e, +0x00002cbb,0x000500c4,0x00000006,0x00002a2f, +0x00000071,0x00002a2e,0x000500c7,0x00000006, +0x00002a30,0x000005f4,0x00002a2f,0x000500ab, +0x000000d0,0x00002a31,0x00002a30,0x00000138, +0x000300f7,0x00002a40,0x00000000,0x000400fa, +0x00002a31,0x00002a32,0x00002a40,0x000200f8, +0x00002a32,0x000500c3,0x00000019,0x00002a37, +0x00002cbb,0x000001dd,0x000500c7,0x00000019, +0x00002a39,0x00002cbb,0x00000533,0x0004007c, +0x00000006,0x00002a3a,0x00002a39,0x000500c4, +0x00000006,0x00002a3b,0x00000071,0x00002a3a, +0x00050041,0x00000007,0x00002a3c,0x0000052f, +0x00002a37,0x0004003d,0x00000006,0x00002a3d, +0x00002a3c,0x000500c5,0x00000006,0x00002a3e, +0x00002a3d,0x00002a3b,0x0003003e,0x00002a3c, +0x00002a3e,0x000200f9,0x00002a40,0x000200f8, +0x00002a40,0x000200f9,0x00002a41,0x000200f8, +0x00002a41,0x00050080,0x00000019,0x00002a43, +0x00002cbb,0x000000c4,0x000200f9,0x00002a26, +0x000200f8,0x00002a44,0x000200f9,0x00002a48, +0x000200f8,0x00002a48,0x000700f5,0x00000019, +0x00002cbc,0x0000006a,0x00002a44,0x00002a65, +0x00002a63,0x000500b1,0x000000d0,0x00002a4c, +0x00002cbc,0x000001da,0x000400f6,0x00002a66, +0x00002a63,0x00000000,0x000400fa,0x00002a4c, +0x00002a4d,0x00002a66,0x000200f8,0x00002a4d, +0x0004007c,0x00000006,0x00002a50,0x00002cbc, +0x000500c4,0x00000006,0x00002a51,0x00000071, +0x00002a50,0x000500c7,0x00000006,0x00002a52, +0x00000031,0x00002a51,0x000500ab,0x000000d0, +0x00002a53,0x00002a52,0x00000138,0x000300f7, +0x00002a62,0x00000000,0x000400fa,0x00002a53, +0x00002a54,0x00002a62,0x000200f8,0x00002a54, +0x00050080,0x00000019,0x00002a57,0x00000400, +0x00002cbc,0x000500c3,0x00000019,0x00002a59, +0x00002a57,0x000001dd,0x000500c7,0x00000019, +0x00002a5b,0x00002a57,0x00000533,0x0004007c, +0x00000006,0x00002a5c,0x00002a5b,0x000500c4, +0x00000006,0x00002a5d,0x00000071,0x00002a5c, +0x00050041,0x00000007,0x00002a5e,0x0000052f, +0x00002a59,0x0004003d,0x00000006,0x00002a5f, +0x00002a5e,0x000500c5,0x00000006,0x00002a60, +0x00002a5f,0x00002a5d,0x0003003e,0x00002a5e, +0x00002a60,0x000200f9,0x00002a62,0x000200f8, +0x00002a62,0x000200f9,0x00002a63,0x000200f8, +0x00002a63,0x00050080,0x00000019,0x00002a65, +0x00002cbc,0x000000c4,0x000200f9,0x00002a48, +0x000200f8,0x00002a66,0x00050041,0x0000001a, +0x00002956,0x000028b3,0x0000006a,0x0004003d, +0x00000019,0x00002957,0x00002956,0x0004007c, +0x00000006,0x00002958,0x00002957,0x000200f9, +0x00002a6a,0x000200f8,0x00002a6a,0x000700f5, +0x00000019,0x00002cbd,0x0000006a,0x00002a66, +0x00002a87,0x00002a85,0x000500b1,0x000000d0, +0x00002a6e,0x00002cbd,0x0000019a,0x000400f6, +0x00002a88,0x00002a85,0x00000000,0x000400fa, +0x00002a6e,0x00002a6f,0x00002a88,0x000200f8, +0x00002a6f,0x0004007c,0x00000006,0x00002a72, +0x00002cbd,0x000500c4,0x00000006,0x00002a73, +0x00000071,0x00002a72,0x000500c7,0x00000006, +0x00002a74,0x00002958,0x00002a73,0x000500ab, +0x000000d0,0x00002a75,0x00002a74,0x00000138, +0x000300f7,0x00002a84,0x00000000,0x000400fa, +0x00002a75,0x00002a76,0x00002a84,0x000200f8, +0x00002a76,0x00050080,0x00000019,0x00002a79, +0x00000401,0x00002cbd,0x000500c3,0x00000019, +0x00002a7b,0x00002a79,0x000001dd,0x000500c7, +0x00000019,0x00002a7d,0x00002a79,0x00000533, +0x0004007c,0x00000006,0x00002a7e,0x00002a7d, +0x000500c4,0x00000006,0x00002a7f,0x00000071, +0x00002a7e,0x00050041,0x00000007,0x00002a80, +0x0000052f,0x00002a7b,0x0004003d,0x00000006, +0x00002a81,0x00002a80,0x000500c5,0x00000006, +0x00002a82,0x00002a81,0x00002a7f,0x0003003e, +0x00002a80,0x00002a82,0x000200f9,0x00002a84, +0x000200f8,0x00002a84,0x000200f9,0x00002a85, +0x000200f8,0x00002a85,0x00050080,0x00000019, +0x00002a87,0x00002cbd,0x000000c4,0x000200f9, +0x00002a6a,0x000200f8,0x00002a88,0x00050041, +0x0000001a,0x0000295a,0x000028b6,0x0000006a, +0x0004003d,0x00000019,0x0000295b,0x0000295a, +0x0004007c,0x00000006,0x0000295c,0x0000295b, +0x000200f9,0x00002a8c,0x000200f8,0x00002a8c, +0x000700f5,0x00000019,0x00002cbe,0x0000006a, +0x00002a88,0x00002aa9,0x00002aa7,0x000500b1, +0x000000d0,0x00002a90,0x00002cbe,0x0000019a, +0x000400f6,0x00002aaa,0x00002aa7,0x00000000, +0x000400fa,0x00002a90,0x00002a91,0x00002aaa, +0x000200f8,0x00002a91,0x0004007c,0x00000006, +0x00002a94,0x00002cbe,0x000500c4,0x00000006, +0x00002a95,0x00000071,0x00002a94,0x000500c7, +0x00000006,0x00002a96,0x0000295c,0x00002a95, +0x000500ab,0x000000d0,0x00002a97,0x00002a96, +0x00000138,0x000300f7,0x00002aa6,0x00000000, +0x000400fa,0x00002a97,0x00002a98,0x00002aa6, +0x000200f8,0x00002a98,0x00050080,0x00000019, +0x00002a9b,0x00000604,0x00002cbe,0x000500c3, +0x00000019,0x00002a9d,0x00002a9b,0x000001dd, +0x000500c7,0x00000019,0x00002a9f,0x00002a9b, +0x00000533,0x0004007c,0x00000006,0x00002aa0, +0x00002a9f,0x000500c4,0x00000006,0x00002aa1, +0x00000071,0x00002aa0,0x00050041,0x00000007, +0x00002aa2,0x0000052f,0x00002a9d,0x0004003d, +0x00000006,0x00002aa3,0x00002aa2,0x000500c5, +0x00000006,0x00002aa4,0x00002aa3,0x00002aa1, +0x0003003e,0x00002aa2,0x00002aa4,0x000200f9, +0x00002aa6,0x000200f8,0x00002aa6,0x000200f9, +0x00002aa7,0x000200f8,0x00002aa7,0x00050080, +0x00000019,0x00002aa9,0x00002cbe,0x000000c4, +0x000200f9,0x00002a8c,0x000200f8,0x00002aaa, +0x00050041,0x0000001a,0x0000295e,0x000028b3, +0x000000c4,0x0004003d,0x00000019,0x0000295f, +0x0000295e,0x0004007c,0x00000006,0x00002960, +0x0000295f,0x000200f9,0x00002aae,0x000200f8, +0x00002aae,0x000700f5,0x00000019,0x00002cbf, +0x0000006a,0x00002aaa,0x00002acb,0x00002ac9, +0x000500b1,0x000000d0,0x00002ab2,0x00002cbf, +0x0000019a,0x000400f6,0x00002acc,0x00002ac9, +0x00000000,0x000400fa,0x00002ab2,0x00002ab3, +0x00002acc,0x000200f8,0x00002ab3,0x0004007c, +0x00000006,0x00002ab6,0x00002cbf,0x000500c4, +0x00000006,0x00002ab7,0x00000071,0x00002ab6, +0x000500c7,0x00000006,0x00002ab8,0x00002960, +0x00002ab7,0x000500ab,0x000000d0,0x00002ab9, +0x00002ab8,0x00000138,0x000300f7,0x00002ac8, +0x00000000,0x000400fa,0x00002ab9,0x00002aba, +0x00002ac8,0x000200f8,0x00002aba,0x00050080, +0x00000019,0x00002abd,0x0000060c,0x00002cbf, +0x000500c3,0x00000019,0x00002abf,0x00002abd, +0x000001dd,0x000500c7,0x00000019,0x00002ac1, +0x00002abd,0x00000533,0x0004007c,0x00000006, +0x00002ac2,0x00002ac1,0x000500c4,0x00000006, +0x00002ac3,0x00000071,0x00002ac2,0x00050041, +0x00000007,0x00002ac4,0x0000052f,0x00002abf, +0x0004003d,0x00000006,0x00002ac5,0x00002ac4, +0x000500c5,0x00000006,0x00002ac6,0x00002ac5, +0x00002ac3,0x0003003e,0x00002ac4,0x00002ac6, +0x000200f9,0x00002ac8,0x000200f8,0x00002ac8, +0x000200f9,0x00002ac9,0x000200f8,0x00002ac9, +0x00050080,0x00000019,0x00002acb,0x00002cbf, +0x000000c4,0x000200f9,0x00002aae,0x000200f8, +0x00002acc,0x00050041,0x0000001a,0x00002962, +0x000028b6,0x000000c4,0x0004003d,0x00000019, +0x00002963,0x00002962,0x0004007c,0x00000006, +0x00002964,0x00002963,0x000200f9,0x00002ad0, +0x000200f8,0x00002ad0,0x000700f5,0x00000019, +0x00002cc0,0x0000006a,0x00002acc,0x00002aed, +0x00002aeb,0x000500b1,0x000000d0,0x00002ad4, +0x00002cc0,0x0000019a,0x000400f6,0x00002aee, +0x00002aeb,0x00000000,0x000400fa,0x00002ad4, +0x00002ad5,0x00002aee,0x000200f8,0x00002ad5, +0x0004007c,0x00000006,0x00002ad8,0x00002cc0, +0x000500c4,0x00000006,0x00002ad9,0x00000071, +0x00002ad8,0x000500c7,0x00000006,0x00002ada, +0x00002964,0x00002ad9,0x000500ab,0x000000d0, +0x00002adb,0x00002ada,0x00000138,0x000300f7, +0x00002aea,0x00000000,0x000400fa,0x00002adb, +0x00002adc,0x00002aea,0x000200f8,0x00002adc, +0x00050080,0x00000019,0x00002adf,0x00000614, +0x00002cc0,0x000500c3,0x00000019,0x00002ae1, +0x00002adf,0x000001dd,0x000500c7,0x00000019, +0x00002ae3,0x00002adf,0x00000533,0x0004007c, +0x00000006,0x00002ae4,0x00002ae3,0x000500c4, +0x00000006,0x00002ae5,0x00000071,0x00002ae4, +0x00050041,0x00000007,0x00002ae6,0x0000052f, +0x00002ae1,0x0004003d,0x00000006,0x00002ae7, +0x00002ae6,0x000500c5,0x00000006,0x00002ae8, +0x00002ae7,0x00002ae5,0x0003003e,0x00002ae6, +0x00002ae8,0x000200f9,0x00002aea,0x000200f8, +0x00002aea,0x000200f9,0x00002aeb,0x000200f8, +0x00002aeb,0x00050080,0x00000019,0x00002aed, +0x00002cc0,0x000000c4,0x000200f9,0x00002ad0, +0x000200f8,0x00002aee,0x00050041,0x0000001a, +0x00002966,0x000028b3,0x000000ef,0x0004003d, +0x00000019,0x00002967,0x00002966,0x0004007c, +0x00000006,0x00002968,0x00002967,0x000200f9, +0x00002af2,0x000200f8,0x00002af2,0x000700f5, +0x00000019,0x00002cc1,0x0000006a,0x00002aee, +0x00002b0f,0x00002b0d,0x000500b1,0x000000d0, +0x00002af6,0x00002cc1,0x0000019a,0x000400f6, +0x00002b10,0x00002b0d,0x00000000,0x000400fa, +0x00002af6,0x00002af7,0x00002b10,0x000200f8, +0x00002af7,0x0004007c,0x00000006,0x00002afa, +0x00002cc1,0x000500c4,0x00000006,0x00002afb, +0x00000071,0x00002afa,0x000500c7,0x00000006, +0x00002afc,0x00002968,0x00002afb,0x000500ab, +0x000000d0,0x00002afd,0x00002afc,0x00000138, +0x000300f7,0x00002b0c,0x00000000,0x000400fa, +0x00002afd,0x00002afe,0x00002b0c,0x000200f8, +0x00002afe,0x00050080,0x00000019,0x00002b01, +0x0000061c,0x00002cc1,0x000500c3,0x00000019, +0x00002b03,0x00002b01,0x000001dd,0x000500c7, +0x00000019,0x00002b05,0x00002b01,0x00000533, +0x0004007c,0x00000006,0x00002b06,0x00002b05, +0x000500c4,0x00000006,0x00002b07,0x00000071, +0x00002b06,0x00050041,0x00000007,0x00002b08, +0x0000052f,0x00002b03,0x0004003d,0x00000006, +0x00002b09,0x00002b08,0x000500c5,0x00000006, +0x00002b0a,0x00002b09,0x00002b07,0x0003003e, +0x00002b08,0x00002b0a,0x000200f9,0x00002b0c, +0x000200f8,0x00002b0c,0x000200f9,0x00002b0d, +0x000200f8,0x00002b0d,0x00050080,0x00000019, +0x00002b0f,0x00002cc1,0x000000c4,0x000200f9, +0x00002af2,0x000200f8,0x00002b10,0x00050041, +0x0000001a,0x0000296a,0x000028b6,0x000000ef, +0x0004003d,0x00000019,0x0000296b,0x0000296a, +0x0004007c,0x00000006,0x0000296c,0x0000296b, +0x000200f9,0x00002b14,0x000200f8,0x00002b14, +0x000700f5,0x00000019,0x00002cc2,0x0000006a, +0x00002b10,0x00002b31,0x00002b2f,0x000500b1, +0x000000d0,0x00002b18,0x00002cc2,0x0000019a, +0x000400f6,0x00002b32,0x00002b2f,0x00000000, +0x000400fa,0x00002b18,0x00002b19,0x00002b32, +0x000200f8,0x00002b19,0x0004007c,0x00000006, +0x00002b1c,0x00002cc2,0x000500c4,0x00000006, +0x00002b1d,0x00000071,0x00002b1c,0x000500c7, +0x00000006,0x00002b1e,0x0000296c,0x00002b1d, +0x000500ab,0x000000d0,0x00002b1f,0x00002b1e, +0x00000138,0x000300f7,0x00002b2e,0x00000000, +0x000400fa,0x00002b1f,0x00002b20,0x00002b2e, +0x000200f8,0x00002b20,0x00050080,0x00000019, +0x00002b23,0x00000624,0x00002cc2,0x000500c3, +0x00000019,0x00002b25,0x00002b23,0x000001dd, +0x000500c7,0x00000019,0x00002b27,0x00002b23, +0x00000533,0x0004007c,0x00000006,0x00002b28, +0x00002b27,0x000500c4,0x00000006,0x00002b29, +0x00000071,0x00002b28,0x00050041,0x00000007, +0x00002b2a,0x0000052f,0x00002b25,0x0004003d, +0x00000006,0x00002b2b,0x00002b2a,0x000500c5, +0x00000006,0x00002b2c,0x00002b2b,0x00002b29, +0x0003003e,0x00002b2a,0x00002b2c,0x000200f9, +0x00002b2e,0x000200f8,0x00002b2e,0x000200f9, +0x00002b2f,0x000200f8,0x00002b2f,0x00050080, +0x00000019,0x00002b31,0x00002cc2,0x000000c4, +0x000200f9,0x00002b14,0x000200f8,0x00002b32, +0x000200f9,0x0000296e,0x000200f8,0x0000296e, +0x000700f5,0x00000019,0x00002cc6,0x0000006a, +0x00002b32,0x00002984,0x00002972,0x000700f5, +0x00000006,0x00002cc3,0x00000138,0x00002b32, +0x00002987,0x00002972,0x000500b0,0x000000d0, +0x00002971,0x00002cc3,0x00000147,0x000400f6, +0x00002988,0x00002972,0x00000000,0x000400fa, +0x00002971,0x00002972,0x00002988,0x000200f8, +0x00002972,0x00050041,0x0000001a,0x00002975, +0x000028b6,0x00002cc3,0x0004003d,0x00000019, +0x00002976,0x00002975,0x00050041,0x0000001a, +0x00002978,0x000028b3,0x00002cc3,0x0004003d, +0x00000019,0x00002979,0x00002978,0x00050082, +0x00000019,0x0000297a,0x00002976,0x00002979, +0x00050041,0x0000001a,0x0000297b,0x000028d3, +0x00002cc3,0x0003003e,0x0000297b,0x0000297a, +0x0004003d,0x00000019,0x0000297e,0x0000297b, +0x0004003d,0x00000019,0x00002981,0x0000297b, +0x00050084,0x00000019,0x00002982,0x0000297e, +0x00002981,0x00050080,0x00000019,0x00002984, +0x00002cc6,0x00002982,0x00050080,0x00000006, +0x00002987,0x00002cc3,0x000000c4,0x000200f9, +0x0000296e,0x000200f8,0x00002988,0x000200f9, +0x00002989,0x000200f8,0x00002989,0x000700f5, +0x00000019,0x00002cc4,0x0000006a,0x00002988, +0x000029bf,0x000029c5,0x000500b1,0x000000d0, +0x0000298c,0x00002cc4,0x0000035b,0x000400f6, +0x000029c8,0x000029c5,0x00000000,0x000400fa, +0x0000298c,0x0000298d,0x000029c8,0x000200f8, +0x0000298d,0x000500aa,0x000000d0,0x0000298f, +0x00002cc6,0x0000006a,0x000300f7,0x000029bd, +0x00000000,0x000400fa,0x0000298f,0x00002990, +0x00002991,0x000200f8,0x00002990,0x000200f9, +0x000029bd,0x000200f8,0x00002991,0x000200f9, +0x00002992,0x000200f8,0x00002992,0x000700f5, +0x00000019,0x00002cc8,0x0000006a,0x00002991, +0x000029a5,0x00002996,0x000700f5,0x00000006, +0x00002cc7,0x00000138,0x00002991,0x000029a8, +0x00002996,0x000500b0,0x000000d0,0x00002995, +0x00002cc7,0x00000147,0x000400f6,0x000029a9, +0x00002996,0x00000000,0x000400fa,0x00002995, +0x00002996,0x000029a9,0x000200f8,0x00002996, +0x0004007c,0x00000006,0x00002998,0x00002cc4, +0x00050041,0x00000007,0x00002b36,0x0000004c, +0x00002998,0x0004003d,0x00000006,0x00002b37, +0x00002b36,0x00050084,0x00000006,0x00002b39, +0x00002cc7,0x00000031,0x000500c2,0x00000006, +0x00002b3a,0x00002b37,0x00002b39,0x000500c7, +0x00000006,0x00002b3b,0x00002b3a,0x00000054, +0x0004007c,0x00000019,0x0000299b,0x00002b3b, +0x00050041,0x0000001a,0x0000299d,0x000028b3, +0x00002cc7,0x0004003d,0x00000019,0x0000299e, +0x0000299d,0x00050082,0x00000019,0x0000299f, +0x0000299b,0x0000299e,0x00050041,0x0000001a, +0x000029a1,0x000028d3,0x00002cc7,0x0004003d, +0x00000019,0x000029a2,0x000029a1,0x00050084, +0x00000019,0x000029a3,0x0000299f,0x000029a2, +0x00050080,0x00000019,0x000029a5,0x00002cc8, +0x000029a3,0x00050080,0x00000006,0x000029a8, +0x00002cc7,0x000000c4,0x000200f9,0x00002992, +0x000200f8,0x000029a9,0x000500b3,0x000000d0, +0x000029ab,0x00002cc8,0x0000006a,0x000300f7, +0x000029bc,0x00000000,0x000400fa,0x000029ab, +0x000029ac,0x000029ad,0x000200f8,0x000029ac, +0x000200f9,0x000029bc,0x000200f8,0x000029ad, +0x000500af,0x000000d0,0x000029b0,0x00002cc8, +0x00002cc6,0x000300f7,0x000029bb,0x00000000, +0x000400fa,0x000029b0,0x000029b1,0x000029b2, +0x000200f8,0x000029b1,0x000200f9,0x000029bb, +0x000200f8,0x000029b2,0x00050084,0x00000019, +0x000029b4,0x00002cc8,0x000001c5,0x00050087, +0x00000019,0x000029b6,0x00002cc6,0x000000ef, +0x00050080,0x00000019,0x000029b7,0x000029b4, +0x000029b6,0x00050087,0x00000019,0x000029b9, +0x000029b7,0x00002cc6,0x0004007c,0x00000006, +0x000029ba,0x000029b9,0x000200f9,0x000029bb, +0x000200f8,0x000029bb,0x000700f5,0x00000006, +0x00002cd0,0x000000dd,0x000029b1,0x000029ba, +0x000029b2,0x000200f9,0x000029bc,0x000200f8, +0x000029bc,0x000700f5,0x00000006,0x00002ccf, +0x00000138,0x000029ac,0x00002cd0,0x000029bb, +0x000200f9,0x000029bd,0x000200f8,0x000029bd, +0x000700f5,0x00000006,0x00002cce,0x00000138, +0x00002990,0x00002ccf,0x000029bc,0x00050080, +0x00000019,0x000029bf,0x00002cc4,0x000000c4, +0x00050084,0x00000019,0x000029c0,0x000029bf, +0x0000010e,0x00050082,0x00000019,0x000029c1, +0x0000034c,0x000029c0,0x000200f9,0x00002b40, +0x000200f8,0x00002b40,0x000700f5,0x00000006, +0x00002cd2,0x00000138,0x000029bd,0x00002b52, +0x00002b45,0x000700f5,0x00000019,0x00002cd1, +0x0000006a,0x000029bd,0x00002b55,0x00002b45, +0x000500b1,0x000000d0,0x00002b44,0x00002cd1, +0x0000010e,0x000400f6,0x00002b56,0x00002b45, +0x00000000,0x000400fa,0x00002b44,0x00002b45, +0x00002b56,0x000200f8,0x00002b45,0x0004007c, +0x00000006,0x00002b48,0x00002cd1,0x000500c2, +0x00000006,0x00002b49,0x00002cce,0x00002b48, +0x000500c7,0x00000006,0x00002b4a,0x00002b49, +0x00000071,0x00050082,0x00000019,0x00002b4e, +0x000000ef,0x00002cd1,0x0004007c,0x00000006, +0x00002b4f,0x00002b4e,0x000500c4,0x00000006, +0x00002b50,0x00002b4a,0x00002b4f,0x000500c5, +0x00000006,0x00002b52,0x00002cd2,0x00002b50, +0x00050080,0x00000019,0x00002b55,0x00002cd1, +0x000000c4,0x000200f9,0x00002b40,0x000200f8, +0x00002b56,0x000200f9,0x00002b5b,0x000200f8, +0x00002b5b,0x000700f5,0x00000019,0x00002cd3, +0x0000006a,0x00002b56,0x00002b78,0x00002b76, +0x000500b1,0x000000d0,0x00002b5f,0x00002cd3, +0x0000010e,0x000400f6,0x00002b79,0x00002b76, +0x00000000,0x000400fa,0x00002b5f,0x00002b60, +0x00002b79,0x000200f8,0x00002b60,0x0004007c, +0x00000006,0x00002b63,0x00002cd3,0x000500c4, +0x00000006,0x00002b64,0x00000071,0x00002b63, +0x000500c7,0x00000006,0x00002b65,0x00002cd2, +0x00002b64,0x000500ab,0x000000d0,0x00002b66, +0x00002b65,0x00000138,0x000300f7,0x00002b75, +0x00000000,0x000400fa,0x00002b66,0x00002b67, +0x00002b75,0x000200f8,0x00002b67,0x00050080, +0x00000019,0x00002b6a,0x000029c1,0x00002cd3, +0x000500c3,0x00000019,0x00002b6c,0x00002b6a, +0x000001dd,0x000500c7,0x00000019,0x00002b6e, +0x00002b6a,0x00000533,0x0004007c,0x00000006, +0x00002b6f,0x00002b6e,0x000500c4,0x00000006, +0x00002b70,0x00000071,0x00002b6f,0x00050041, +0x00000007,0x00002b71,0x0000052f,0x00002b6c, +0x0004003d,0x00000006,0x00002b72,0x00002b71, +0x000500c5,0x00000006,0x00002b73,0x00002b72, +0x00002b70,0x0003003e,0x00002b71,0x00002b73, +0x000200f9,0x00002b75,0x000200f8,0x00002b75, +0x000200f9,0x00002b76,0x000200f8,0x00002b76, +0x00050080,0x00000019,0x00002b78,0x00002cd3, +0x000000c4,0x000200f9,0x00002b5b,0x000200f8, +0x00002b79,0x000200f9,0x000029c5,0x000200f8, +0x000029c5,0x000200f9,0x00002989,0x000200f8, +0x000029c8,0x000200f9,0x00000e83,0x000200f8, +0x00000e83,0x000200f9,0x00000e16,0x000200f8, +0x00000e16,0x00050084,0x00000006,0x00000e8b, +0x00000e02,0x00000e05,0x00050080,0x00000006, +0x00000e8d,0x00000e8b,0x00000dff,0x00050084, +0x00000006,0x00000e8e,0x00000e8d,0x000000aa, +0x00050041,0x00000007,0x00000e95,0x0000052f, +0x0000006a,0x0004003d,0x00000006,0x00000e96, +0x00000e95,0x00060041,0x0000006c,0x00000e97, +0x00000e92,0x0000006a,0x00000e8e,0x0003003e, +0x00000e97,0x00000e96,0x00050080,0x00000006, +0x00000e99,0x00000e8e,0x00000071,0x00050041, +0x00000007,0x00000e9a,0x0000052f,0x000000c4, +0x0004003d,0x00000006,0x00000e9b,0x00000e9a, +0x00060041,0x0000006c,0x00000e9c,0x00000e92, +0x0000006a,0x00000e99,0x0003003e,0x00000e9c, +0x00000e9b,0x00050080,0x00000006,0x00000e9e, +0x00000e8e,0x000000d4,0x00050041,0x00000007, +0x00000e9f,0x0000052f,0x000000ef,0x0004003d, +0x00000006,0x00000ea0,0x00000e9f,0x00060041, +0x0000006c,0x00000ea1,0x00000e92,0x0000006a, +0x00000e9e,0x0003003e,0x00000ea1,0x00000ea0, +0x00050080,0x00000006,0x00000ea3,0x00000e8e, +0x00000147,0x00050041,0x00000007,0x00000ea4, +0x0000052f,0x0000010e,0x0004003d,0x00000006, +0x00000ea5,0x00000ea4,0x00060041,0x0000006c, +0x00000ea6,0x00000e92,0x0000006a,0x00000ea3, +0x0003003e,0x00000ea6,0x00000ea5,0x000200f9, +0x00000ea8,0x000200f8,0x00000ea8,0x000100fd, +0x00010038} +; +#endif diff --git a/src/vulkan/wrapper/wrapper_bcn_transcode.comp b/src/vulkan/wrapper/wrapper_bcn_transcode.comp new file mode 100644 index 00000000..27cb20cc --- /dev/null +++ b/src/vulkan/wrapper/wrapper_bcn_transcode.comp @@ -0,0 +1,482 @@ +#version 450 +/* + * BCn -> ASTC 4x4 transcode compute shader. One invocation per 4x4 block: + * decode the BC block to 16 RGBA texels, run the (CPU-validated, bit-identical) + * ASTC encoder, write one 16-byte ASTC block. format: 0=BC1, 1=BC7. + */ +layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; +layout(std430, binding = 0) readonly buffer SrcBuf { uint src[]; }; +layout(std430, binding = 1) writeonly buffer DstBuf { uint dst[]; }; +layout(push_constant) uniform PC { + uint block_x; uint block_x_src; uint block_y; uint src_word_off; + uint format; uint has_alpha; + /* astc8=1 selects the 8x8 ASTC path: each invocation is one 8x8 ASTC block + built from a 2x2 group of BC blocks. bc_bx/bc_by bound the BC-block extent + of the real texture (edge blocks past it are zero-filled). */ + uint astc8; uint bc_bx; uint bc_by; +} pc; +const uint bc7_part2[1024] = uint[]( + 128u,0u,1u,1u,0u,0u,1u,1u,0u,0u,1u,1u,0u,0u,1u,129u,128u,0u,0u,1u, + 0u,0u,0u,1u,0u,0u,0u,1u,0u,0u,0u,129u,128u,1u,1u,1u,0u,1u,1u,1u, + 0u,1u,1u,1u,0u,1u,1u,129u,128u,0u,0u,1u,0u,0u,1u,1u,0u,0u,1u,1u, + 0u,1u,1u,129u,128u,0u,0u,0u,0u,0u,0u,1u,0u,0u,0u,1u,0u,0u,1u,129u, + 128u,0u,1u,1u,0u,1u,1u,1u,0u,1u,1u,1u,1u,1u,1u,129u,128u,0u,0u,1u, + 0u,0u,1u,1u,0u,1u,1u,1u,1u,1u,1u,129u,128u,0u,0u,0u,0u,0u,0u,1u, + 0u,0u,1u,1u,0u,1u,1u,129u,128u,0u,0u,0u,0u,0u,0u,0u,0u,0u,0u,1u, + 0u,0u,1u,129u,128u,0u,1u,1u,0u,1u,1u,1u,1u,1u,1u,1u,1u,1u,1u,129u, + 128u,0u,0u,0u,0u,0u,0u,1u,0u,1u,1u,1u,1u,1u,1u,129u,128u,0u,0u,0u, + 0u,0u,0u,0u,0u,0u,0u,1u,0u,1u,1u,129u,128u,0u,0u,1u,0u,1u,1u,1u, + 1u,1u,1u,1u,1u,1u,1u,129u,128u,0u,0u,0u,0u,0u,0u,0u,1u,1u,1u,1u, + 1u,1u,1u,129u,128u,0u,0u,0u,1u,1u,1u,1u,1u,1u,1u,1u,1u,1u,1u,129u, + 128u,0u,0u,0u,0u,0u,0u,0u,0u,0u,0u,0u,1u,1u,1u,129u,128u,0u,0u,0u, + 1u,0u,0u,0u,1u,1u,1u,0u,1u,1u,1u,129u,128u,1u,129u,1u,0u,0u,0u,1u, + 0u,0u,0u,0u,0u,0u,0u,0u,128u,0u,0u,0u,0u,0u,0u,0u,129u,0u,0u,0u, + 1u,1u,1u,0u,128u,1u,129u,1u,0u,0u,1u,1u,0u,0u,0u,1u,0u,0u,0u,0u, + 128u,0u,129u,1u,0u,0u,0u,1u,0u,0u,0u,0u,0u,0u,0u,0u,128u,0u,0u,0u, + 1u,0u,0u,0u,129u,1u,0u,0u,1u,1u,1u,0u,128u,0u,0u,0u,0u,0u,0u,0u, + 129u,0u,0u,0u,1u,1u,0u,0u,128u,1u,1u,1u,0u,0u,1u,1u,0u,0u,1u,1u, + 0u,0u,0u,129u,128u,0u,129u,1u,0u,0u,0u,1u,0u,0u,0u,1u,0u,0u,0u,0u, + 128u,0u,0u,0u,1u,0u,0u,0u,129u,0u,0u,0u,1u,1u,0u,0u,128u,1u,129u,0u, + 0u,1u,1u,0u,0u,1u,1u,0u,0u,1u,1u,0u,128u,0u,129u,1u,0u,1u,1u,0u, + 0u,1u,1u,0u,1u,1u,0u,0u,128u,0u,0u,1u,0u,1u,1u,1u,129u,1u,1u,0u, + 1u,0u,0u,0u,128u,0u,0u,0u,1u,1u,1u,1u,129u,1u,1u,1u,0u,0u,0u,0u, + 128u,1u,129u,1u,0u,0u,0u,1u,1u,0u,0u,0u,1u,1u,1u,0u,128u,0u,129u,1u, + 1u,0u,0u,1u,1u,0u,0u,1u,1u,1u,0u,0u,128u,1u,0u,1u,0u,1u,0u,1u, + 0u,1u,0u,1u,0u,1u,0u,129u,128u,0u,0u,0u,1u,1u,1u,1u,0u,0u,0u,0u, + 1u,1u,1u,129u,128u,1u,0u,1u,1u,0u,129u,0u,0u,1u,0u,1u,1u,0u,1u,0u, + 128u,0u,1u,1u,0u,0u,1u,1u,129u,1u,0u,0u,1u,1u,0u,0u,128u,0u,129u,1u, + 1u,1u,0u,0u,0u,0u,1u,1u,1u,1u,0u,0u,128u,1u,0u,1u,0u,1u,0u,1u, + 129u,0u,1u,0u,1u,0u,1u,0u,128u,1u,1u,0u,1u,0u,0u,1u,0u,1u,1u,0u, + 1u,0u,0u,129u,128u,1u,0u,1u,1u,0u,1u,0u,1u,0u,1u,0u,0u,1u,0u,129u, + 128u,1u,129u,1u,0u,0u,1u,1u,1u,1u,0u,0u,1u,1u,1u,0u,128u,0u,0u,1u, + 0u,0u,1u,1u,129u,1u,0u,0u,1u,0u,0u,0u,128u,0u,129u,1u,0u,0u,1u,0u, + 0u,1u,0u,0u,1u,1u,0u,0u,128u,0u,129u,1u,1u,0u,1u,1u,1u,1u,0u,1u, + 1u,1u,0u,0u,128u,1u,129u,0u,1u,0u,0u,1u,1u,0u,0u,1u,0u,1u,1u,0u, + 128u,0u,1u,1u,1u,1u,0u,0u,1u,1u,0u,0u,0u,0u,1u,129u,128u,1u,1u,0u, + 0u,1u,1u,0u,1u,0u,0u,1u,1u,0u,0u,129u,128u,0u,0u,0u,0u,1u,129u,0u, + 0u,1u,1u,0u,0u,0u,0u,0u,128u,1u,0u,0u,1u,1u,129u,0u,0u,1u,0u,0u, + 0u,0u,0u,0u,128u,0u,129u,0u,0u,1u,1u,1u,0u,0u,1u,0u,0u,0u,0u,0u, + 128u,0u,0u,0u,0u,0u,129u,0u,0u,1u,1u,1u,0u,0u,1u,0u,128u,0u,0u,0u, + 0u,1u,0u,0u,129u,1u,1u,0u,0u,1u,0u,0u,128u,1u,1u,0u,1u,1u,0u,0u, + 1u,0u,0u,1u,0u,0u,1u,129u,128u,0u,1u,1u,0u,1u,1u,0u,1u,1u,0u,0u, + 1u,0u,0u,129u,128u,1u,129u,0u,0u,0u,1u,1u,1u,0u,0u,1u,1u,1u,0u,0u, + 128u,0u,129u,1u,1u,0u,0u,1u,1u,1u,0u,0u,0u,1u,1u,0u,128u,1u,1u,0u, + 1u,1u,0u,0u,1u,1u,0u,0u,1u,0u,0u,129u,128u,1u,1u,0u,0u,0u,1u,1u, + 0u,0u,1u,1u,1u,0u,0u,129u,128u,1u,1u,1u,1u,1u,1u,0u,1u,0u,0u,0u, + 0u,0u,0u,129u,128u,0u,0u,1u,1u,0u,0u,0u,1u,1u,1u,0u,0u,1u,1u,129u, + 128u,0u,0u,0u,1u,1u,1u,1u,0u,0u,1u,1u,0u,0u,1u,129u,128u,0u,129u,1u, + 0u,0u,1u,1u,1u,1u,1u,1u,0u,0u,0u,0u,128u,0u,129u,0u,0u,0u,1u,0u, + 1u,1u,1u,0u,1u,1u,1u,0u,128u,1u,0u,0u,0u,1u,0u,0u,0u,1u,1u,1u, + 0u,1u,1u,129u +); +const uint bc7_part3[1024] = uint[]( + 128u,0u,1u,129u,0u,0u,1u,1u,0u,2u,2u,1u,2u,2u,2u,130u,128u,0u,0u,129u, + 0u,0u,1u,1u,130u,2u,1u,1u,2u,2u,2u,1u,128u,0u,0u,0u,2u,0u,0u,1u, + 130u,2u,1u,1u,2u,2u,1u,129u,128u,2u,2u,130u,0u,0u,2u,2u,0u,0u,1u,1u, + 0u,1u,1u,129u,128u,0u,0u,0u,0u,0u,0u,0u,129u,1u,2u,2u,1u,1u,2u,130u, + 128u,0u,1u,129u,0u,0u,1u,1u,0u,0u,2u,2u,0u,0u,2u,130u,128u,0u,2u,130u, + 0u,0u,2u,2u,1u,1u,1u,1u,1u,1u,1u,129u,128u,0u,1u,1u,0u,0u,1u,1u, + 130u,2u,1u,1u,2u,2u,1u,129u,128u,0u,0u,0u,0u,0u,0u,0u,129u,1u,1u,1u, + 2u,2u,2u,130u,128u,0u,0u,0u,1u,1u,1u,1u,129u,1u,1u,1u,2u,2u,2u,130u, + 128u,0u,0u,0u,1u,1u,129u,1u,2u,2u,2u,2u,2u,2u,2u,130u,128u,0u,1u,2u, + 0u,0u,129u,2u,0u,0u,1u,2u,0u,0u,1u,130u,128u,1u,1u,2u,0u,1u,129u,2u, + 0u,1u,1u,2u,0u,1u,1u,130u,128u,1u,2u,2u,0u,129u,2u,2u,0u,1u,2u,2u, + 0u,1u,2u,130u,128u,0u,1u,129u,0u,1u,1u,2u,1u,1u,2u,2u,1u,2u,2u,130u, + 128u,0u,1u,129u,2u,0u,0u,1u,130u,2u,0u,0u,2u,2u,2u,0u,128u,0u,0u,129u, + 0u,0u,1u,1u,0u,1u,1u,2u,1u,1u,2u,130u,128u,1u,1u,129u,0u,0u,1u,1u, + 130u,0u,0u,1u,2u,2u,0u,0u,128u,0u,0u,0u,1u,1u,2u,2u,129u,1u,2u,2u, + 1u,1u,2u,130u,128u,0u,2u,130u,0u,0u,2u,2u,0u,0u,2u,2u,1u,1u,1u,129u, + 128u,1u,1u,129u,0u,1u,1u,1u,0u,2u,2u,2u,0u,2u,2u,130u,128u,0u,0u,129u, + 0u,0u,0u,1u,130u,2u,2u,1u,2u,2u,2u,1u,128u,0u,0u,0u,0u,0u,129u,1u, + 0u,1u,2u,2u,0u,1u,2u,130u,128u,0u,0u,0u,1u,1u,0u,0u,130u,2u,129u,0u, + 2u,2u,1u,0u,128u,1u,2u,130u,0u,129u,2u,2u,0u,0u,1u,1u,0u,0u,0u,0u, + 128u,0u,1u,2u,0u,0u,1u,2u,129u,1u,2u,2u,2u,2u,2u,130u,128u,1u,1u,0u, + 1u,2u,130u,1u,129u,2u,2u,1u,0u,1u,1u,0u,128u,0u,0u,0u,0u,1u,129u,0u, + 1u,2u,130u,1u,1u,2u,2u,1u,128u,0u,2u,2u,1u,1u,0u,2u,129u,1u,0u,2u, + 0u,0u,2u,130u,128u,1u,1u,0u,0u,129u,1u,0u,2u,0u,0u,2u,2u,2u,2u,130u, + 128u,0u,1u,1u,0u,1u,2u,2u,0u,1u,130u,2u,0u,0u,1u,129u,128u,0u,0u,0u, + 2u,0u,0u,0u,130u,2u,1u,1u,2u,2u,2u,129u,128u,0u,0u,0u,0u,0u,0u,2u, + 129u,1u,2u,2u,1u,2u,2u,130u,128u,2u,2u,130u,0u,0u,2u,2u,0u,0u,1u,2u, + 0u,0u,1u,129u,128u,0u,1u,129u,0u,0u,1u,2u,0u,0u,2u,2u,0u,2u,2u,130u, + 128u,1u,2u,0u,0u,129u,2u,0u,0u,1u,130u,0u,0u,1u,2u,0u,128u,0u,0u,0u, + 1u,1u,129u,1u,2u,2u,130u,2u,0u,0u,0u,0u,128u,1u,2u,0u,1u,2u,0u,1u, + 130u,0u,129u,2u,0u,1u,2u,0u,128u,1u,2u,0u,2u,0u,1u,2u,129u,130u,0u,1u, + 0u,1u,2u,0u,128u,0u,1u,1u,2u,2u,0u,0u,1u,1u,130u,2u,0u,0u,1u,129u, + 128u,0u,1u,1u,1u,1u,130u,2u,2u,2u,0u,0u,0u,0u,1u,129u,128u,1u,0u,129u, + 0u,1u,0u,1u,2u,2u,2u,2u,2u,2u,2u,130u,128u,0u,0u,0u,0u,0u,0u,0u, + 130u,1u,2u,1u,2u,1u,2u,129u,128u,0u,2u,2u,1u,129u,2u,2u,0u,0u,2u,2u, + 1u,1u,2u,130u,128u,0u,2u,130u,0u,0u,1u,1u,0u,0u,2u,2u,0u,0u,1u,129u, + 128u,2u,2u,0u,1u,2u,130u,1u,0u,2u,2u,0u,1u,2u,2u,129u,128u,1u,0u,1u, + 2u,2u,130u,2u,2u,2u,2u,2u,0u,1u,0u,129u,128u,0u,0u,0u,2u,1u,2u,1u, + 130u,1u,2u,1u,2u,1u,2u,129u,128u,1u,0u,129u,0u,1u,0u,1u,0u,1u,0u,1u, + 2u,2u,2u,130u,128u,2u,2u,130u,0u,1u,1u,1u,0u,2u,2u,2u,0u,1u,1u,129u, + 128u,0u,0u,2u,1u,129u,1u,2u,0u,0u,0u,2u,1u,1u,1u,130u,128u,0u,0u,0u, + 2u,129u,1u,2u,2u,1u,1u,2u,2u,1u,1u,130u,128u,2u,2u,2u,0u,129u,1u,1u, + 0u,1u,1u,1u,0u,2u,2u,130u,128u,0u,0u,2u,1u,1u,1u,2u,129u,1u,1u,2u, + 0u,0u,0u,130u,128u,1u,1u,0u,0u,129u,1u,0u,0u,1u,1u,0u,2u,2u,2u,130u, + 128u,0u,0u,0u,0u,0u,0u,0u,2u,1u,129u,2u,2u,1u,1u,130u,128u,1u,1u,0u, + 0u,129u,1u,0u,2u,2u,2u,2u,2u,2u,2u,130u,128u,0u,2u,2u,0u,0u,1u,1u, + 0u,0u,129u,1u,0u,0u,2u,130u,128u,0u,2u,2u,1u,1u,2u,2u,129u,1u,2u,2u, + 0u,0u,2u,130u,128u,0u,0u,0u,0u,0u,0u,0u,0u,0u,0u,0u,2u,129u,1u,130u, + 128u,0u,0u,130u,0u,0u,0u,1u,0u,0u,0u,2u,0u,0u,0u,129u,128u,2u,2u,2u, + 1u,2u,2u,2u,0u,2u,2u,2u,129u,2u,2u,130u,128u,1u,0u,129u,2u,2u,2u,2u, + 2u,2u,2u,2u,2u,2u,2u,130u,128u,1u,1u,129u,2u,0u,1u,1u,130u,2u,0u,1u, + 2u,2u,2u,0u +); +const uint astc_trit5[243] = uint[]( + 0u,1u,2u,4u,5u,6u,8u,9u,10u,16u,17u,18u,20u,21u,22u,24u,25u,26u,3u,7u, + 11u,19u,23u,27u,12u,13u,14u,32u,33u,34u,36u,37u,38u,40u,41u,42u,48u,49u,50u,52u, + 53u,54u,56u,57u,58u,35u,39u,43u,51u,55u,59u,44u,45u,46u,64u,65u,66u,68u,69u,70u, + 72u,73u,74u,80u,81u,82u,84u,85u,86u,88u,89u,90u,67u,71u,75u,83u,87u,91u,76u,77u, + 78u,128u,129u,130u,132u,133u,134u,136u,137u,138u,144u,145u,146u,148u,149u,150u,152u,153u,154u,131u, + 135u,139u,147u,151u,155u,140u,141u,142u,160u,161u,162u,164u,165u,166u,168u,169u,170u,176u,177u,178u, + 180u,181u,182u,184u,185u,186u,163u,167u,171u,179u,183u,187u,172u,173u,174u,192u,193u,194u,196u,197u, + 198u,200u,201u,202u,208u,209u,210u,212u,213u,214u,216u,217u,218u,195u,199u,203u,211u,215u,219u,204u, + 205u,206u,96u,97u,98u,100u,101u,102u,104u,105u,106u,112u,113u,114u,116u,117u,118u,120u,121u,122u, + 99u,103u,107u,115u,119u,123u,108u,109u,110u,224u,225u,226u,228u,229u,230u,232u,233u,234u,240u,241u, + 242u,244u,245u,246u,248u,249u,250u,227u,231u,235u,243u,247u,251u,236u,237u,238u,28u,29u,30u,60u, + 61u,62u,92u,93u,94u,156u,157u,158u,188u,189u,190u,220u,221u,222u,31u,63u,95u,159u,191u,223u, + 124u,125u,126u +); +const uint astc_trit3[27] = uint[]( + 0u,1u,2u,4u,5u,6u,8u,9u,10u,16u,17u,18u,20u,21u,22u,24u,25u,26u,3u,7u, + 11u,19u,23u,27u,12u,13u,14u +); +const uint astc_ce_unq[48] = uint[]( + 0u,255u,16u,239u,32u,223u,48u,207u,65u,190u,81u,174u,97u,158u,113u,142u,5u,250u,21u,234u, + 38u,217u,54u,201u,70u,185u,86u,169u,103u,152u,119u,136u,11u,244u,27u,228u,43u,212u,59u,196u, + 76u,179u,92u,163u,108u,147u,124u,131u +); +const uint astc_ce_quant[256] = uint[]( + 0u,0u,0u,16u,16u,16u,16u,16u,16u,32u,32u,32u,32u,32u,2u,2u,2u,2u,2u,18u, + 18u,18u,18u,18u,18u,34u,34u,34u,34u,34u,4u,4u,4u,4u,4u,4u,20u,20u,20u,20u, + 20u,36u,36u,36u,36u,36u,6u,6u,6u,6u,6u,6u,22u,22u,22u,22u,22u,38u,38u,38u, + 38u,38u,8u,8u,8u,8u,8u,8u,24u,24u,24u,24u,24u,24u,40u,40u,40u,40u,40u,10u, + 10u,10u,10u,10u,26u,26u,26u,26u,26u,26u,42u,42u,42u,42u,42u,12u,12u,12u,12u,12u, + 12u,28u,28u,28u,28u,28u,44u,44u,44u,44u,44u,14u,14u,14u,14u,14u,14u,30u,30u,30u, + 30u,30u,46u,46u,46u,46u,46u,46u,47u,47u,47u,47u,47u,47u,31u,31u,31u,31u,31u,15u, + 15u,15u,15u,15u,15u,45u,45u,45u,45u,45u,29u,29u,29u,29u,29u,13u,13u,13u,13u,13u, + 13u,43u,43u,43u,43u,43u,27u,27u,27u,27u,27u,27u,11u,11u,11u,11u,11u,41u,41u,41u, + 41u,41u,25u,25u,25u,25u,25u,25u,9u,9u,9u,9u,9u,9u,39u,39u,39u,39u,39u,23u, + 23u,23u,23u,23u,7u,7u,7u,7u,7u,7u,37u,37u,37u,37u,37u,21u,21u,21u,21u,21u, + 5u,5u,5u,5u,5u,5u,35u,35u,35u,35u,35u,19u,19u,19u,19u,19u,19u,3u,3u,3u, + 3u,3u,33u,33u,33u,33u,33u,17u,17u,17u,17u,17u,17u,1u,1u,1u +); + +/* 8x8 weight-grid infill pseudo-inverse (x256 fixed point), flattened [16*64]. + Row g, col t = astc_pinv8[g*64 + t]. Identical values to the CPU encoder. */ +const int astc_pinv8[1024] = int[]( + 166,75,-16,-25,-4,10,4,-3,75,33,-9,-10,-3,5,2,-2, + -16,-9,-2,5,-1,-1,0,0,-25,-10,5,5,0,-2,-1,0, + -4,-3,-1,0,1,0,0,0,10,5,-1,-2,0,0,0,0, + 4,2,0,-1,0,0,0,0,-3,-2,0,0,0,0,0,0, + -42,45,132,93,17,-39,-14,12,-20,21,62,39,10,-19,-6,6, + 3,-3,-8,-15,4,1,1,0,5,-8,-21,-16,-1,6,2,-1, + 1,-1,-3,-1,-2,1,0,0,-2,3,7,6,1,-2,-1,0, + -1,1,2,2,0,-1,0,0,1,-1,-2,-2,-1,0,0,0, + 12,-14,-39,17,93,132,45,-42,6,-6,-19,10,39,62,21,-20, + 0,1,1,4,-15,-8,-3,3,-1,2,6,-1,-16,-21,-8,5, + 0,0,1,-2,-1,-3,-1,1,0,-1,-2,1,6,7,3,-2, + 0,0,-1,0,2,2,1,-1,0,0,0,-1,-2,-2,-1,1, + -3,4,10,-4,-25,-16,75,166,-2,2,5,-3,-10,-9,33,75, + 0,0,-1,-1,5,-2,-9,-16,0,-1,-2,0,5,5,-10,-25, + 0,0,0,1,0,-1,-3,-4,0,0,0,0,-2,-1,5,10, + 0,0,0,0,-1,0,2,4,0,0,0,0,0,0,-2,-3, + -42,-20,3,5,1,-2,-1,1,45,21,-3,-8,-1,3,1,-1, + 132,62,-8,-21,-3,7,2,-2,93,39,-15,-16,-1,6,2,-2, + 17,10,4,-1,-2,1,0,-1,-39,-19,1,6,1,-2,-1,0, + -14,-6,1,2,0,-1,0,0,12,6,0,-1,0,0,0,0, + 12,-10,-32,-23,-5,9,3,-3,-10,12,34,28,2,-9,-3,3, + -32,34,99,79,10,-27,-9,9,-23,28,79,59,4,-22,-8,7, + -5,2,10,4,8,-4,-1,2,9,-9,-27,-22,-4,6,2,-2, + 3,-3,-9,-8,-1,2,1,-1,-3,3,9,7,2,-2,-1,1, + -3,3,9,-5,-23,-32,-10,12,3,-3,-9,2,28,34,12,-10, + 9,-9,-27,10,79,99,34,-32,7,-8,-22,4,59,79,28,-23, + 2,-1,-4,8,4,10,2,-5,-2,2,6,-4,-22,-27,-9,9, + -1,1,2,-1,-8,-9,-3,3,1,-1,-2,2,7,9,3,-3, + 1,-1,-2,1,5,3,-20,-42,-1,1,3,-1,-8,-3,21,45, + -2,2,7,-3,-21,-8,62,132,-2,2,6,-1,-16,-15,39,93, + -1,0,1,-2,-1,4,10,17,0,-1,-2,1,6,1,-19,-39, + 0,0,-1,0,2,1,-6,-14,0,0,0,0,-1,0,6,12, + 12,6,0,-1,0,0,0,0,-14,-6,1,2,0,-1,0,0, + -39,-19,1,6,1,-2,-1,0,17,10,4,-1,-2,1,0,-1, + 93,39,-15,-16,-1,6,2,-2,132,62,-8,-21,-3,7,2,-2, + 45,21,-3,-8,-1,3,1,-1,-42,-20,3,5,1,-2,-1,1, + -3,3,9,7,2,-2,-1,1,3,-3,-9,-8,-1,2,1,-1, + 9,-9,-27,-22,-4,6,2,-2,-5,2,10,4,8,-4,-1,2, + -23,28,79,59,4,-22,-8,7,-32,34,99,79,10,-27,-9,9, + -10,12,34,28,2,-9,-3,3,12,-10,-32,-23,-5,9,3,-3, + 1,-1,-2,2,7,9,3,-3,-1,1,2,-1,-8,-9,-3,3, + -2,2,6,-4,-22,-27,-9,9,2,-1,-4,8,4,10,2,-5, + 7,-8,-22,4,59,79,28,-23,9,-9,-27,10,79,99,34,-32, + 3,-3,-9,2,28,34,12,-10,-3,3,9,-5,-23,-32,-10,12, + 0,0,0,0,-1,0,6,12,0,0,-1,0,2,1,-6,-14, + 0,-1,-2,1,6,1,-19,-39,-1,0,1,-2,-1,4,10,17, + -2,2,6,-1,-16,-15,39,93,-2,2,7,-3,-21,-8,62,132, + -1,1,3,-1,-8,-3,21,45,1,-1,-2,1,5,3,-20,-42, + -3,-2,0,0,0,0,0,0,4,2,0,-1,0,0,0,0, + 10,5,-1,-2,0,0,0,0,-4,-3,-1,0,1,0,0,0, + -25,-10,5,5,0,-2,-1,0,-16,-9,-2,5,-1,-1,0,0, + 75,33,-9,-10,-3,5,2,-2,166,75,-16,-25,-4,10,4,-3, + 1,-1,-2,-2,-1,0,0,0,-1,1,2,2,0,-1,0,0, + -2,3,7,6,1,-2,-1,0,1,-1,-3,-1,-2,1,0,0, + 5,-8,-21,-16,-1,6,2,-1,3,-3,-8,-15,4,1,1,0, + -20,21,62,39,10,-19,-6,6,-42,45,132,93,17,-39,-14,12, + 0,0,0,-1,-2,-2,-1,1,0,0,-1,0,2,2,1,-1, + 0,-1,-2,1,6,7,3,-2,0,0,1,-2,-1,-3,-1,1, + -1,2,6,-1,-16,-21,-8,5,0,1,1,4,-15,-8,-3,3, + 6,-6,-19,10,39,62,21,-20,12,-14,-39,17,93,132,45,-42, + 0,0,0,0,0,0,-2,-3,0,0,0,0,-1,0,2,4, + 0,0,0,0,-2,-1,5,10,0,0,0,1,0,-1,-3,-4, + 0,-1,-2,0,5,5,-10,-25,0,0,-1,-1,5,-2,-9,-16, + -2,2,5,-3,-10,-9,33,75,-3,4,10,-4,-25,-16,75,166 +); + +/* ---- decoded texels (0xAABBGGRR) ---- */ +uint texel[16]; +uint chan(uint px, uint c) { return (texel[px] >> (c * 8u)) & 0xffu; } + +/* 8x8 texel grid (64 texels, row-major) + accessor for the 8x8 encoders. */ +uint texel64[64]; +uint chan64(uint px, uint c) { return (texel64[px] >> (c * 8u)) & 0xffu; } + +/* ---- BC1 decode (matches bcdec) ---- */ +void decode_bc1(uint w0) { + uint lo = src[w0], idx = src[w0 + 1u]; + uint c0 = lo & 0xffffu, c1 = lo >> 16u; + uint r0=(c0>>11u)&0x1fu,g0=(c0>>5u)&0x3fu,b0=c0&0x1fu; + uint r1=(c1>>11u)&0x1fu,g1=(c1>>5u)&0x3fu,b1=c1&0x1fu; + uint ref[4]; uint r,g,b; + r=(r0*527u+23u)>>6u;g=(g0*259u+33u)>>6u;b=(b0*527u+23u)>>6u;ref[0]=0xff000000u|(b<<16u)|(g<<8u)|r; + r=(r1*527u+23u)>>6u;g=(g1*259u+33u)>>6u;b=(b1*527u+23u)>>6u;ref[1]=0xff000000u|(b<<16u)|(g<<8u)|r; + if (c0 > c1) { + r=((2u*r0+r1)*351u+61u)>>7u;g=((2u*g0+g1)*2763u+1039u)>>11u;b=((2u*b0+b1)*351u+61u)>>7u;ref[2]=0xff000000u|(b<<16u)|(g<<8u)|r; + r=((r0+2u*r1)*351u+61u)>>7u;g=((g0+2u*g1)*2763u+1039u)>>11u;b=((b0+2u*b1)*351u+61u)>>7u;ref[3]=0xff000000u|(b<<16u)|(g<<8u)|r; + } else { + r=((r0+r1)*1053u+125u)>>8u;g=((g0+g1)*4145u+1019u)>>11u;b=((b0+b1)*1053u+125u)>>8u;ref[2]=0xff000000u|(b<<16u)|(g<<8u)|r;ref[3]=0u; + } + for (uint i=0u;i<16u;i++) texel[i]=ref[(idx>>(i*2u))&3u]; +} + +/* ---- BC7 decode (128-bit reader over 4 words; matches bcdec, host-validated) ---- */ +uint B[4]; uint bitpos; +uint rd(uint n) { uint r=0u; for(uint i=0u;i>5u]>>(bp&31u))&1u)<>6; } + +void decode_bc7(uint w0) { + for (uint i=0u;i<4u;i++) B[i]=src[w0+i]; + bitpos=0u; + const int abc0[8]=int[](4,6,5,7,5,7,7,5); + const int abc1[8]=int[](0,0,0,0,6,8,7,5); + const int aW2[4]=int[](0,21,43,64); + const int aW3[8]=int[](0,9,18,27,37,46,55,64); + const int aW4[16]=int[](0,4,9,13,17,21,26,30,34,38,43,47,51,55,60,64); + int mode=0; while(mode<8 && rd(1u)==0u) mode++; + if (mode>=8) { for(uint i=0u;i<16u;i++) texel[i]=0u; return; } + int numPart=1,part_idx=0,rotation=0,isb=0; + if(mode==0||mode==1||mode==2||mode==3||mode==7){numPart=(mode==0||mode==2)?3:2;part_idx=int(rd((mode==0)?4u:6u));} + int numEP=numPart*2; + if(mode==4||mode==5){rotation=int(rd(2u));if(mode==4)isb=int(rd(1u));} + int ep[6][4]; + for(int i=0;i<3;i++)for(int j=0;j0)for(int j=0;j>mode)&1); + for(int k=0;k<3;k++){ep[i][k]=ep[i][k]<<(8-j);ep[i][k]=ep[i][k]|(ep[i][k]>>j);} + j=abc1[mode]+((pbits>>mode)&1); + ep[i][3]=ep[i][3]<<(8-j);ep[i][3]=ep[i][3]|(ep[i][3]>>j); + } + if(abc1[mode]==0)for(int j=0;j>5]|=1u<>uint(i))&1u)<best){best=d2;ai=i;bi=j;}} + int sa=int(chan(uint(ai),0u)+chan(uint(ai),1u)+chan(uint(ai),2u)); + int sb=int(chan(uint(bi),0u)+chan(uint(bi),1u)+chan(uint(bi),2u)); + int lo=(sb>=sa)?ai:bi,hi=(sb>=sa)?bi:ai; + int e0[3],e1[3];for(uint c=0u;c<3u;c++){e0[c]=int(chan(uint(lo),c));e1[c]=int(chan(uint(hi),c));} + set_bits(0,11,0x53u);set_bits(13,4,8u); + set_bits(17,8,uint(e0[0]));set_bits(25,8,uint(e1[0]));set_bits(33,8,uint(e0[1]));set_bits(41,8,uint(e1[1]));set_bits(49,8,uint(e0[2]));set_bits(57,8,uint(e1[2])); + int dir[3],dlen2=0;for(uint c=0u;c<3u;c++){dir[c]=e1[c]-e0[c];dlen2+=dir[c]*dir[c];} + for(int t=0;t<16;t++){uint q;if(dlen2==0)q=0u;else{int dot=0;for(uint c=0u;c<3u;c++)dot+=(int(chan(uint(t),c))-e0[c])*dir[c];if(dot<=0)q=0u;else if(dot>=dlen2)q=7u;else q=uint((dot*7+dlen2/2)/dlen2);}set_bits(128-(t+1)*3,3,rev_bits(q,3));} +} + +const int trit_Tpos[8]=int[](4,5,10,11,16,21,22,27); +const int trit_Mpos[5]=int[](0,6,12,17,23); +void write_trit_ep(int q[8]) { + int base=17; + int t=int(astc_trit5[(q[0]>>4)+3*(q[1]>>4)+9*(q[2]>>4)+27*(q[3]>>4)+81*(q[4]>>4)]); + for(int j=0;j<5;j++)set_bits(base+trit_Mpos[j],4,uint(q[j]&15)); + for(int j=0;j<8;j++)if(((t>>j)&1)!=0)set_bits(base+trit_Tpos[j],1,1u); + base=45;int t3=int(astc_trit3[(q[5]>>4)+3*(q[6]>>4)+9*(q[7]>>4)]); + for(int j=0;j<3;j++)set_bits(base+trit_Mpos[j],4,uint(q[5+j]&15)); + for(int j=0;j<5;j++)if(((t3>>j)&1)!=0)set_bits(base+trit_Tpos[j],1,1u); +} +int quant_ce(int v){if(v<0)v=0;if(v>255)v=255;return int(astc_ce_quant[v]);} + +void encode_rgba() { + blk[0]=0u;blk[1]=0u;blk[2]=0u;blk[3]=0u; + set_bits(0,11,0x442u);set_bits(13,4,12u); + int ai=0,bi=0,best=-1; + for(int i=0;i<16;i++)for(int j=i+1;j<16;j++){int d2=0;for(uint c=0u;c<3u;c++){int dc=int(chan(uint(i),c))-int(chan(uint(j),c));d2+=dc*dc;}if(d2>best){best=d2;ai=i;bi=j;}} + int sa=int(chan(uint(ai),0u)+chan(uint(ai),1u)+chan(uint(ai),2u)); + int sb=int(chan(uint(bi),0u)+chan(uint(bi),1u)+chan(uint(bi),2u)); + int lo=(sb>=sa)?ai:bi,hi=(sb>=sa)?bi:ai; + int amin=255,amax=0;for(int i=0;i<16;i++){int a=int(chan(uint(i),3u));if(aamax)amax=a;} + int e0[4]=int[](int(chan(uint(lo),0u)),int(chan(uint(lo),1u)),int(chan(uint(lo),2u)),amin); + int e1[4]=int[](int(chan(uint(hi),0u)),int(chan(uint(hi),1u)),int(chan(uint(hi),2u)),amax); + int q[8]=int[](quant_ce(e0[0]),quant_ce(e1[0]),quant_ce(e0[1]),quant_ce(e1[1]),quant_ce(e0[2]),quant_ce(e1[2]),quant_ce(e0[3]),quant_ce(e1[3])); + int s0=int(astc_ce_unq[q[0]])+int(astc_ce_unq[q[2]])+int(astc_ce_unq[q[4]]); + int s1=int(astc_ce_unq[q[1]])+int(astc_ce_unq[q[3]])+int(astc_ce_unq[q[5]]); + int swap=(s1=dlen2)q0=3u;else q0=uint((dot*3+dlen2/2)/dlen2);} + uint q1;if(arange==0)q1=0u;else{int a=int(chan(uint(px),3u))-amin;int t=(a*3+arange/2)/arange;if(t<0)t=0;if(t>3)t=3;q1=uint(t);} + if(swap!=0){q0=3u-q0;q1=3u-q1;} + set_bits(128-(2*px+1)*2,2,rev_bits(q0,2)); + set_bits(128-(2*px+2)*2,2,rev_bits(q1,2)); + } +} + +/* ---- 8x8 encoders: 4x4 weight grid least-squares-fit to the 64 ideal texel + * weights via the pinv infill matrix. Float math is bit-identical to the CPU + * double encoder (validated offline over 8000 blocks). ---- */ +void encode_rgb_8x8() { + blk[0]=0u;blk[1]=0u;blk[2]=0u;blk[3]=0u; + int ai=0,bi=0,best=-1; + for(int i=0;i<64;i++)for(int j=i+1;j<64;j++){int d2=0;for(uint c=0u;c<3u;c++){int dc=int(chan64(uint(i),c))-int(chan64(uint(j),c));d2+=dc*dc;}if(d2>best){best=d2;ai=i;bi=j;}} + int sa=int(chan64(uint(ai),0u)+chan64(uint(ai),1u)+chan64(uint(ai),2u)); + int sb=int(chan64(uint(bi),0u)+chan64(uint(bi),1u)+chan64(uint(bi),2u)); + int lo=(sb>=sa)?ai:bi,hi=(sb>=sa)?bi:ai; + int e0[3],e1[3];for(uint c=0u;c<3u;c++){e0[c]=int(chan64(uint(lo),c));e1[c]=int(chan64(uint(hi),c));} + set_bits(0,11,0x53u);set_bits(13,4,8u); + set_bits(17,8,uint(e0[0]));set_bits(25,8,uint(e1[0]));set_bits(33,8,uint(e0[1]));set_bits(41,8,uint(e1[1]));set_bits(49,8,uint(e0[2]));set_bits(57,8,uint(e1[2])); + int dir[3],dlen2=0;for(uint c=0u;c<3u;c++){dir[c]=e1[c]-e0[c];dlen2+=dir[c]*dir[c];} + for(int g=0;g<16;g++){ + float a=0.0; + for(int t=0;t<64;t++){ + float w; + if(dlen2==0)w=0.0; + else{int dot=0;for(uint c=0u;c<3u;c++)dot+=(int(chan64(uint(t),c))-e0[c])*dir[c];float f=float(dot)/float(dlen2);if(f<0.0)f=0.0;if(f>1.0)f=1.0;w=f*7.0;} + a+=float(astc_pinv8[g*64+t])*w; + } + int q=int(floor(a/256.0+0.5)); + if(q<0)q=0;if(q>7)q=7; + set_bits(128-(g+1)*3,3,rev_bits(uint(q),3)); + } +} + +void encode_rgba_8x8() { + blk[0]=0u;blk[1]=0u;blk[2]=0u;blk[3]=0u; + set_bits(0,11,0x442u);set_bits(13,4,12u); + int ai=0,bi=0,best=-1; + for(int i=0;i<64;i++)for(int j=i+1;j<64;j++){int d2=0;for(uint c=0u;c<3u;c++){int dc=int(chan64(uint(i),c))-int(chan64(uint(j),c));d2+=dc*dc;}if(d2>best){best=d2;ai=i;bi=j;}} + int sa=int(chan64(uint(ai),0u)+chan64(uint(ai),1u)+chan64(uint(ai),2u)); + int sb=int(chan64(uint(bi),0u)+chan64(uint(bi),1u)+chan64(uint(bi),2u)); + int lo=(sb>=sa)?ai:bi,hi=(sb>=sa)?bi:ai; + int amin=255,amax=0;for(int i=0;i<64;i++){int a=int(chan64(uint(i),3u));if(aamax)amax=a;} + int e0[4]=int[](int(chan64(uint(lo),0u)),int(chan64(uint(lo),1u)),int(chan64(uint(lo),2u)),amin); + int e1[4]=int[](int(chan64(uint(hi),0u)),int(chan64(uint(hi),1u)),int(chan64(uint(hi),2u)),amax); + int q[8]=int[](quant_ce(e0[0]),quant_ce(e1[0]),quant_ce(e0[1]),quant_ce(e1[1]),quant_ce(e0[2]),quant_ce(e1[2]),quant_ce(e0[3]),quant_ce(e1[3])); + int s0=int(astc_ce_unq[q[0]])+int(astc_ce_unq[q[2]])+int(astc_ce_unq[q[4]]); + int s1=int(astc_ce_unq[q[1]])+int(astc_ce_unq[q[3]])+int(astc_ce_unq[q[5]]); + int swap=(s11.0)f=1.0;w0=f*3.0;} + float w1; + if(arange==0)w1=0.0; + else{float f=float(int(chan64(uint(t),3u))-amin)/float(arange);if(f<0.0)f=0.0;if(f>1.0)f=1.0;w1=f*3.0;} + if(swap!=0){w0=3.0-w0;w1=3.0-w1;} + a0+=float(astc_pinv8[g*64+t])*w0;a1+=float(astc_pinv8[g*64+t])*w1; + } + int q0=int(floor(a0/256.0+0.5)),q1=int(floor(a1/256.0+0.5)); + if(q0<0)q0=0;if(q0>3)q0=3;if(q1<0)q1=0;if(q1>3)q1=3; + set_bits(128-(2*g+1)*2,2,rev_bits(uint(q0),2)); + set_bits(128-(2*g+2)*2,2,rev_bits(uint(q1),2)); + } +} + +/* Decode one BC block at (bcx,bcy) into the (qx,qy) 4x4 quadrant of texel64. */ +void decode_into_quadrant(uint bcx, uint bcy, uint qx, uint qy) { + uint words=(pc.format==0u)?2u:4u; + uint srcWord=pc.src_word_off+(bcy*pc.block_x_src+bcx)*words; + if (pc.format==0u) decode_bc1(srcWord); else decode_bc7(srcWord); + for(uint r=0u;r<4u;r++)for(uint c=0u;c<4u;c++) + texel64[(qy*4u+r)*8u+(qx*4u+c)]=texel[r*4u+c]; +} + +void main() { + uint bx=gl_GlobalInvocationID.x, by=gl_GlobalInvocationID.y; + if (bx>=pc.block_x || by>=pc.block_y) return; + if (pc.astc8 != 0u) { + /* one 8x8 ASTC block is built from a 2x2 group of BC blocks; edge blocks + past the real texture extent are left zero (matches the CPU path). */ + for (uint i=0u;i<64u;i++) texel64[i]=0u; + for (uint dy=0u;dy<2u;dy++) for (uint dx=0u;dx<2u;dx++) { + uint bcx=2u*bx+dx, bcy=2u*by+dy; + if (bcx>=pc.bc_bx || bcy>=pc.bc_by) continue; + decode_into_quadrant(bcx,bcy,dx,dy); + } + if (pc.has_alpha!=0u) encode_rgba_8x8(); else encode_rgb_8x8(); + } else { + uint words=(pc.format==0u)?2u:4u; + uint srcWord=pc.src_word_off+(by*pc.block_x_src+bx)*words; + if (pc.format==0u) decode_bc1(srcWord); else decode_bc7(srcWord); + if (pc.has_alpha!=0u) encode_rgba(); else encode_rgb(); + } + uint dstWord=(by*pc.block_x+bx)*4u; + dst[dstWord+0u]=blk[0];dst[dstWord+1u]=blk[1];dst[dstWord+2u]=blk[2];dst[dstWord+3u]=blk[3]; +} diff --git a/src/vulkan/wrapper/wrapper_device.c b/src/vulkan/wrapper/wrapper_device.c index 8b7ce627..cd5b8393 100644 --- a/src/vulkan/wrapper/wrapper_device.c +++ b/src/vulkan/wrapper/wrapper_device.c @@ -1,8 +1,12 @@ #include +#include +#include +#include #include "wrapper_private.h" #include "wrapper_log.h" #include "wrapper_bcdec.h" +#include "wrapper_bcn_spv.h" #include "spirv_patcher.hpp" #include "wrapper_entrypoints.h" #include "wrapper_trampolines.h" @@ -91,6 +95,13 @@ wrapper_filter_enabled_extensions(const struct wrapper_device *device, enable_extensions[(*enable_extension_count)++] = vk_device_extensions[idx].extensionName; } + + if (device->vk.enabled_extensions.EXT_vertex_attribute_divisor && + !device->vk.enabled_extensions.KHR_vertex_attribute_divisor && + device->physical->base_supported_extensions.KHR_vertex_attribute_divisor) { + enable_extensions[(*enable_extension_count)++] = + "VK_KHR_vertex_attribute_divisor"; + } } static inline void @@ -150,6 +161,26 @@ static void process_pnext_chain(VkBaseInStructure *create_info, struct wrapper_p WRAPPER_LOG(info, "Unlinking VkPhysicalDeviceRobustness2FeaturesEXT from pNext chain"); unlink_vk_struct(create_info, ¤t, &prev); continue; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT: + if (pdevice->base_supported_extensions.EXT_dynamic_rendering_unused_attachments) + break; + WRAPPER_LOG(info, "Unlinking VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT from pNext chain"); + unlink_vk_struct(create_info, ¤t, &prev); + continue; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES: + if (pdevice->base_supported_extensions.KHR_maintenance5) + break; + WRAPPER_LOG(info, "Unlinking VkPhysicalDeviceMaintenance5Features from pNext chain"); + unlink_vk_struct(create_info, ¤t, &prev); + continue; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: + if (!pdevice->base_supported_extensions.EXT_vertex_attribute_divisor && + pdevice->base_supported_extensions.KHR_vertex_attribute_divisor) { + WRAPPER_LOG(info, "Aliasing VertexAttributeDivisorFeatures EXT->KHR in device pNext"); + ((VkBaseOutStructure *)current)->sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR; + } + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: if (api_version >= VK_MAKE_VERSION(1, 1, 0)) break; @@ -220,6 +251,332 @@ wrapper_create_device_queue(struct wrapper_device *device, return VK_SUCCESS; } +static void +wrapper_create_null_resources(struct wrapper_device *device) +{ + const struct vk_device_dispatch_table *dt = &device->dispatch_table; + VkDevice dev = device->dispatch_handle; + VkPhysicalDeviceMemoryProperties *mp = &device->physical->memory_properties; + + VkBufferCreateInfo bci = { + .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, + .size = 65536, + .usage = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, + .sharingMode = VK_SHARING_MODE_EXCLUSIVE, + }; + if (dt->CreateBuffer(dev, &bci, NULL, &device->null_buffer) != VK_SUCCESS) + return; + VkMemoryRequirements mr; + dt->GetBufferMemoryRequirements(dev, device->null_buffer, &mr); + uint32_t mt = UINT32_MAX; + for (uint32_t i = 0; i < mp->memoryTypeCount; i++) + if ((mr.memoryTypeBits & (1u << i)) && + (mp->memoryTypes[i].propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)) { mt = i; break; } + if (mt == UINT32_MAX) return; + VkMemoryAllocateInfo mai = { + .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + .allocationSize = mr.size, .memoryTypeIndex = mt, + }; + if (dt->AllocateMemory(dev, &mai, NULL, &device->null_buffer_memory) != VK_SUCCESS) + return; + dt->BindBufferMemory(dev, device->null_buffer, device->null_buffer_memory, 0); + void *ptr = NULL; + if (dt->MapMemory(dev, device->null_buffer_memory, 0, VK_WHOLE_SIZE, 0, &ptr) == VK_SUCCESS) { + memset(ptr, 0, mr.size); + dt->UnmapMemory(dev, device->null_buffer_memory); + } + + VkImageCreateInfo ici = { + .sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, + .imageType = VK_IMAGE_TYPE_2D, .format = VK_FORMAT_R8G8B8A8_UNORM, + .extent = { 1, 1, 1 }, .mipLevels = 1, .arrayLayers = 1, + .samples = VK_SAMPLE_COUNT_1_BIT, .tiling = VK_IMAGE_TILING_OPTIMAL, + .usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT, + .initialLayout = VK_IMAGE_LAYOUT_UNDEFINED, + }; + if (dt->CreateImage(dev, &ici, NULL, &device->null_image) == VK_SUCCESS) { + VkMemoryRequirements imr; + dt->GetImageMemoryRequirements(dev, device->null_image, &imr); + uint32_t imt = UINT32_MAX; + for (uint32_t i = 0; i < mp->memoryTypeCount; i++) + if (imr.memoryTypeBits & (1u << i)) { imt = i; break; } + VkMemoryAllocateInfo imai = { + .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + .allocationSize = imr.size, .memoryTypeIndex = imt, + }; + if (imt != UINT32_MAX && + dt->AllocateMemory(dev, &imai, NULL, &device->null_image_memory) == VK_SUCCESS) { + dt->BindImageMemory(dev, device->null_image, device->null_image_memory, 0); + VkImageViewCreateInfo vci = { + .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + .image = device->null_image, .viewType = VK_IMAGE_VIEW_TYPE_2D, + .format = VK_FORMAT_R8G8B8A8_UNORM, + .subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1 }, + }; + dt->CreateImageView(dev, &vci, NULL, &device->null_image_view); + } + } + VkSamplerCreateInfo sci = { .sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO }; + dt->CreateSampler(dev, &sci, NULL, &device->null_sampler); +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_UpdateDescriptorSets(VkDevice _device, uint32_t descriptorWriteCount, + const VkWriteDescriptorSet *pDescriptorWrites, + uint32_t descriptorCopyCount, + const VkCopyDescriptorSet *pDescriptorCopies) +{ + VK_FROM_HANDLE(wrapper_device, device, _device); + + if (!device->emulate_null_descriptor || descriptorWriteCount == 0) { + device->dispatch_table.UpdateDescriptorSets(device->dispatch_handle, + descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies); + return; + } + + VkWriteDescriptorSet *writes = + malloc(sizeof(VkWriteDescriptorSet) * descriptorWriteCount); + memcpy(writes, pDescriptorWrites, sizeof(VkWriteDescriptorSet) * descriptorWriteCount); + + for (uint32_t i = 0; i < descriptorWriteCount; i++) { + const VkWriteDescriptorSet *w = &pDescriptorWrites[i]; + uint32_t n = w->descriptorCount; + switch (w->descriptorType) { + case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: + case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: + case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: + case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: { + VkDescriptorBufferInfo *bi = malloc(sizeof(*bi) * n); + memcpy(bi, w->pBufferInfo, sizeof(*bi) * n); + for (uint32_t j = 0; j < n; j++) + if (bi[j].buffer == VK_NULL_HANDLE) { + bi[j].buffer = device->null_buffer; + bi[j].offset = 0; bi[j].range = VK_WHOLE_SIZE; + } + writes[i].pBufferInfo = bi; + break; + } + case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: + case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: + case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: + case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: + case VK_DESCRIPTOR_TYPE_SAMPLER: { + VkDescriptorImageInfo *ii = malloc(sizeof(*ii) * n); + memcpy(ii, w->pImageInfo, sizeof(*ii) * n); + for (uint32_t j = 0; j < n; j++) { + if ((w->descriptorType != VK_DESCRIPTOR_TYPE_SAMPLER) && + ii[j].imageView == VK_NULL_HANDLE) { + ii[j].imageView = device->null_image_view; + ii[j].imageLayout = VK_IMAGE_LAYOUT_GENERAL; + } + if ((w->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || + w->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER) && + ii[j].sampler == VK_NULL_HANDLE) + ii[j].sampler = device->null_sampler; + } + writes[i].pImageInfo = ii; + break; + } + default: + break; + } + } + + device->dispatch_table.UpdateDescriptorSets(device->dispatch_handle, + descriptorWriteCount, writes, descriptorCopyCount, pDescriptorCopies); + + for (uint32_t i = 0; i < descriptorWriteCount; i++) { + if (writes[i].pBufferInfo != pDescriptorWrites[i].pBufferInfo) + free((void *)writes[i].pBufferInfo); + if (writes[i].pImageInfo != pDescriptorWrites[i].pImageInfo) + free((void *)writes[i].pImageInfo); + } + free(writes); +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_CmdBindVertexBuffers2(VkCommandBuffer commandBuffer, uint32_t firstBinding, + uint32_t bindingCount, const VkBuffer *pBuffers, + const VkDeviceSize *pOffsets, const VkDeviceSize *pSizes, + const VkDeviceSize *pStrides) +{ + VK_FROM_HANDLE(wrapper_command_buffer, wcb, commandBuffer); + struct wrapper_device *device = wcb->device; + VkBuffer *bufs = NULL; + if (device->emulate_null_descriptor && pBuffers) { + bufs = malloc(sizeof(VkBuffer) * bindingCount); + for (uint32_t i = 0; i < bindingCount; i++) + bufs[i] = pBuffers[i] ? pBuffers[i] : device->null_buffer; + } + device->dispatch_table.CmdBindVertexBuffers2(wcb->dispatch_handle, firstBinding, + bindingCount, bufs ? bufs : pBuffers, pOffsets, pSizes, pStrides); + free(bufs); +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_CmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding, + uint32_t bindingCount, const VkBuffer *pBuffers, + const VkDeviceSize *pOffsets) +{ + VK_FROM_HANDLE(wrapper_command_buffer, wcb, commandBuffer); + struct wrapper_device *device = wcb->device; + VkBuffer *bufs = NULL; + if (device->emulate_null_descriptor && pBuffers) { + bufs = malloc(sizeof(VkBuffer) * bindingCount); + for (uint32_t i = 0; i < bindingCount; i++) + bufs[i] = pBuffers[i] ? pBuffers[i] : device->null_buffer; + } + device->dispatch_table.CmdBindVertexBuffers(wcb->dispatch_handle, firstBinding, + bindingCount, bufs ? bufs : pBuffers, pOffsets); + free(bufs); +} + +static const char * +wrapper_driver_id_str(VkDriverId id) +{ + switch (id) { + case VK_DRIVER_ID_ARM_PROPRIETARY: return "ARM (Mali)"; + case VK_DRIVER_ID_QUALCOMM_PROPRIETARY: return "Qualcomm (Adreno)"; + case VK_DRIVER_ID_SAMSUNG_PROPRIETARY: return "Samsung (Xclipse)"; + case VK_DRIVER_ID_MESA_TURNIP: return "Mesa Turnip (Adreno)"; + case VK_DRIVER_ID_IMAGINATION_PROPRIETARY: return "Imagination (PowerVR)"; + default: return "other/unknown"; + } +} + +/* WRAPPER_DIAG=1 emits a self-contained device-capabilities report — to + * stderr (so it lands in logcat) and to a file (WRAPPER_DIAG_FILE, or + * $TMPDIR/wrapper_diag.txt) a user can share. It reports what the device + * NATIVELY supports vs what the wrapper advertises to the D3D layer, so a + * failing game on any device can be diagnosed from the report alone. Pair it + * with app-side VKD3D_DEBUG=warn / DXVK_LOG_LEVEL=info / WINEDEBUG=+vulkan. */ +static void +wrapper_emit_diag(struct wrapper_physical_device *pdev, + const VkDeviceCreateInfo *ci, VkResult result) +{ + const char *en = getenv("WRAPPER_DIAG"); + if (!en || !atoi(en)) + return; + + /* Report file lives in the container tmp dir, one per game (unique by app + * name) so multiple games don't clobber each other. WRAPPER_DIAG_FILE + * overrides the full path. */ + char tag[128], defpath[512]; + /* Prefer the app id passed by the launcher (WRAPPER_DIAG_APPID); fall back + * to the executable name so the file is still unique per game either way. */ + const char *app = getenv("WRAPPER_DIAG_APPID"); + if (!app || !app[0]) { + app = pdev->instance->vk.app_info.app_name; + if (!app || !app[0]) + app = "unknown"; + const char *bslash = strrchr(app, '\\'); /* strip Windows/Unix path */ + if (bslash) app = bslash + 1; + const char *fslash = strrchr(app, '/'); + if (fslash) app = fslash + 1; + } + size_t j = 0; + for (size_t i = 0; app[i] && j < sizeof(tag) - 1; i++) { + char c = app[i]; + int ok = (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || + (c >= '0' && c <= '9') || c == '.' || c == '-' || c == '_'; + tag[j++] = ok ? c : '_'; + } + tag[j] = 0; + snprintf(defpath, sizeof(defpath), + "/data/data/app.gamenative/files/imagefs/usr/tmp/wrapper_diag_%s.txt", tag); + const char *path = getenv("WRAPPER_DIAG_FILE") ? getenv("WRAPPER_DIAG_FILE") : defpath; + + /* Put EVERYTHING needed to diagnose a failing game in ONE shareable file. For + * a D3D engine, redirect this process's stdout+stderr into the diag file once, + * so the vkd3d/DXVK/wine output that actually explains the failure + * (Heap-too-small, device-lost, format rejects, crashes) is captured in the + * same file as the wrapper's capability report below — instead of only the + * wrapper's half. Non-D3D processes (zink infra) stay on stderr/logcat, so the + * file is just the D3D process. usr/tmp is recreated per launch. */ + { + const char *e = pdev->instance->vk.app_info.engine_name; + static int redirected = 0; + if (!redirected && e && (strstr(e, "DXVK") || strstr(e, "vkd3d"))) { + redirected = 1; + int fd = open(path, O_WRONLY | O_CREAT | O_APPEND, 0644); + if (fd >= 0) { + dup2(fd, 1); /* stdout: vkd3d/wine 'System.out' errors */ + dup2(fd, 2); /* stderr */ + if (fd > 2) close(fd); + setvbuf(stdout, NULL, _IONBF, 0); + setvbuf(stderr, NULL, _IONBF, 0); + } + } + } + +#define D(...) fprintf(stderr, "[WRAPPER_DIAG] " __VA_ARGS__) + + const VkPhysicalDeviceProperties *p = &pdev->properties2.properties; + const char *eng = pdev->instance->vk.app_info.engine_name + ? pdev->instance->vk.app_info.engine_name : ""; + uint32_t ev = pdev->instance->vk.app_info.engine_version; + char detected[64]; + if (strstr(eng, "DXVK")) + snprintf(detected, sizeof(detected), "DXVK %u.%u.%u", + VK_VERSION_MAJOR(ev), VK_VERSION_MINOR(ev), VK_VERSION_PATCH(ev)); + else if (strstr(eng, "vkd3d")) + snprintf(detected, sizeof(detected), "vkd3d %u.%u.%u", + VK_VERSION_MAJOR(ev), VK_VERSION_MINOR(ev), VK_VERSION_PATCH(ev)); + else + snprintf(detected, sizeof(detected), "native/other"); + + D("\n================ WRAPPER DIAGNOSTICS ================\n"); + D("build: %s %s\n", __DATE__, __TIME__); + D("device: %s\n", p->deviceName); + D(" driver=%s (driverID=%u) driverVersion=0x%08x apiVersion=%u.%u.%u\n", + wrapper_driver_id_str(pdev->driver_properties.driverID), + pdev->driver_properties.driverID, p->driverVersion, + VK_VERSION_MAJOR(p->apiVersion), VK_VERSION_MINOR(p->apiVersion), + VK_VERSION_PATCH(p->apiVersion)); + D(" vendorID=0x%04x deviceID=0x%04x\n", p->vendorID, p->deviceID); + D("engine: '%s' -> detected %s (app '%s')\n", eng, detected, + pdev->instance->vk.app_info.app_name ? pdev->instance->vk.app_info.app_name : ""); + D("--- native capabilities (what THIS device actually has) ---\n"); + D(" textureCompressionBC : %d\n", pdev->base_supported_features.textureCompressionBC); + D(" textureCompressionASTC_LDR : %d\n", pdev->base_supported_features.textureCompressionASTC_LDR); + D(" robustBufferAccess2 : %d\n", pdev->base_supported_features.robustBufferAccess2); + D(" nullDescriptor : %d\n", pdev->base_supported_features.nullDescriptor); + D(" robustImageAccess2 : %d\n", pdev->base_supported_features.robustImageAccess2); + D(" extendedDynamicState : %d\n", pdev->base_supported_features.extendedDynamicState); + D(" extendedDynamicState2 : %d\n", pdev->base_supported_features.extendedDynamicState2); + D(" dualSrcBlend : %d\n", pdev->base_supported_features.dualSrcBlend); + D(" multiDrawIndirect : %d\n", pdev->base_supported_features.multiDrawIndirect); + D(" ext EXT_robustness2 : %d\n", pdev->base_supported_extensions.EXT_robustness2); + D(" ext EXT_vertex_attribute_divisor : %d\n", pdev->base_supported_extensions.EXT_vertex_attribute_divisor); + D(" ext KHR_vertex_attribute_divisor : %d\n", pdev->base_supported_extensions.KHR_vertex_attribute_divisor); + D("--- wrapper overrides advertised to the D3D layer ---\n"); + D(" WRAPPER_VK_VERSION advertised : %s\n", + getenv("WRAPPER_VK_VERSION") ? getenv("WRAPPER_VK_VERSION") : "(driver default)"); + D(" faking VK_EXT_robustness2 : %s\n", + (pdev->vk.supported_extensions.EXT_robustness2 && !pdev->base_supported_extensions.EXT_robustness2) ? "YES" : "no"); + D(" vertex_attr_divisor EXT alias : %s\n", + (pdev->vk.supported_extensions.EXT_vertex_attribute_divisor && !pdev->base_supported_extensions.EXT_vertex_attribute_divisor) ? "YES (aliased from KHR)" : "no"); + D(" BCn: emulate=%d ASTC=%s transcode=%s cache=%s\n", + pdev->emulate_bcn, + getenv("WRAPPER_ASTC_BLOCK") ? getenv("WRAPPER_ASTC_BLOCK") : "4x4", + (getenv("WRAPPER_BCN_GPU") && atoi(getenv("WRAPPER_BCN_GPU"))) ? "GPU" : "CPU", + (getenv("WRAPPER_USE_BCN_CACHE") && atoi(getenv("WRAPPER_USE_BCN_CACHE"))) ? "on" : "off"); + D("--- vkCreateDevice ---\n"); + D(" result: %d (%s)\n", result, result == VK_SUCCESS ? "VK_SUCCESS" : "FAILED"); + D(" requested device extensions (%u):\n", ci ? ci->enabledExtensionCount : 0); + if (ci) + for (uint32_t i = 0; i < ci->enabledExtensionCount; i++) + D(" %s\n", ci->ppEnabledExtensionNames[i]); + D("NOTE: seeing this block means a VkDevice was created. If a game fails\n"); + D(" and this block never appears, the D3D layer rejected caps BEFORE\n"); + D(" device creation -- the VKD3D_DEBUG/DXVK logs will show which.\n"); + D("full diagnosis also needs (app-side): VKD3D_DEBUG=warn DXVK_LOG_LEVEL=info WINEDEBUG=+vulkan\n"); + D("====================================================\n"); + +#undef D +} + VKAPI_ATTR VkResult VKAPI_CALL wrapper_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, @@ -252,6 +609,8 @@ wrapper_CreateDevice(VkPhysicalDevice physicalDevice, device->fence_table = _mesa_hash_table_u64_create(NULL); simple_mtx_init(&device->resource_mutex, mtx_plain); + simple_mtx_init(&device->bcn_gpu_mutex, mtx_plain); + device->bcn_gpu_state = 0; device->physical = physical_device; vk_device_dispatch_table_from_entrypoints( @@ -331,6 +690,7 @@ if (pdf2 && pdf2->features.f) { \ if (result != VK_SUCCESS) { WRAPPER_LOG(error, "Failed driver createDevice, res %d", result); + wrapper_emit_diag(physical_device, pCreateInfo, result); wrapper_DestroyDevice(wrapper_device_to_handle(device), &device->vk.alloc); return vk_error(physical_device, result); @@ -342,6 +702,14 @@ if (pdf2 && pdf2->features.f) { \ vk_device_dispatch_table_load(&device->dispatch_table, gdpa, device->dispatch_handle); + device->emulate_null_descriptor = + physical_device->vk.supported_extensions.EXT_robustness2 && + !physical_device->base_supported_features.nullDescriptor; + if (device->emulate_null_descriptor) { + WRAPPER_LOG(info, "Emulating nullDescriptor with canonical zero resources"); + wrapper_create_null_resources(device); + } + result = wrapper_create_device_queue(device, pCreateInfo); if (result != VK_SUCCESS) { wrapper_DestroyDevice(wrapper_device_to_handle(device), @@ -362,6 +730,8 @@ if (pdf2 && pdf2->features.f) { \ wrapper_device_trampolines.FreeMemory; } + wrapper_emit_diag(physical_device, pCreateInfo, VK_SUCCESS); + *pDevice = wrapper_device_to_handle(device); return VK_SUCCESS; @@ -397,6 +767,22 @@ wrapper_CreateBuffer(VkDevice _device, VK_FROM_HANDLE(wrapper_device, device, _device); VkResult res; + /* When we fake VK_KHR_maintenance5 (base driver lacks it, e.g. Xclipse), + * DXVK specifies buffer usage through VkBufferUsageFlags2CreateInfo and may + * leave the 32-bit VkBufferCreateInfo::usage as 0. The base driver ignores + * the unknown pNext struct, so fold the flags2 usage back into the 32-bit + * field before forwarding. */ + VkBufferCreateInfo local_create_info; + if (!device->physical->base_supported_extensions.KHR_maintenance5) { + const VkBufferUsageFlags2CreateInfo *uf2 = __vk_find_struct( + (void *)pCreateInfo->pNext, VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO); + if (uf2) { + local_create_info = *pCreateInfo; + local_create_info.usage |= (VkBufferUsageFlags)uf2->usage; + pCreateInfo = &local_create_info; + } + } + res = device->dispatch_table.CreateBuffer(device->dispatch_handle, pCreateInfo, pAllocator, pBuffer); @@ -458,6 +844,34 @@ wrapper_BindBufferMemory(VkDevice _device, return VK_SUCCESS; } +VKAPI_ATTR VkResult VKAPI_CALL +wrapper_BindBufferMemory2(VkDevice _device, + uint32_t bindInfoCount, + const VkBindBufferMemoryInfo *pBindInfos) +{ + VK_FROM_HANDLE(wrapper_device, device, _device); + VkResult res; + + res = device->dispatch_table.BindBufferMemory2(device->dispatch_handle, + bindInfoCount, pBindInfos); + + if (res != VK_SUCCESS) { + WRAPPER_LOG(error, "Failed to bind buffer memory2, res %d", res); + return res; + } + + for (uint32_t i = 0; i < bindInfoCount; i++) { + struct wrapper_buffer *wb = + get_wrapper_buffer_from_handle(device, pBindInfos[i].buffer); + if (wb) { + wb->memory = pBindInfos[i].memory; + wb->offset = pBindInfos[i].memoryOffset; + } + } + + return VK_SUCCESS; +} + VKAPI_ATTR void VKAPI_CALL wrapper_DestroyBuffer(VkDevice _device, VkBuffer buffer, @@ -504,11 +918,23 @@ wrapper_CreateImage(VkDevice _device, create_info.format = get_format_for_bcn(pCreateInfo->format); if (create_info.flags & VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT) create_info.flags &= ~VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + + for (const VkBaseInStructure *s = pCreateInfo->pNext; s; s = s->pNext) { + if (s->sType == VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO) { + const VkImageFormatListCreateInfo *fl = + (const VkImageFormatListCreateInfo *)s; + for (uint32_t i = 0; i < fl->viewFormatCount; i++) { + if (is_emulated_bcn(device->physical, fl->pViewFormats[i])) + ((VkFormat *)fl->pViewFormats)[i] = + get_format_for_bcn(fl->pViewFormats[i]); + } + } + } } res = device->dispatch_table.CreateImage(device->dispatch_handle, &create_info, pAllocator, pImage); - + if (res != VK_SUCCESS) { WRAPPER_LOG(error, "Failed to create image, res %d", res); return res; @@ -537,6 +963,36 @@ wrapper_CreateImage(VkDevice _device, return VK_SUCCESS; } +static void +wrapper_device_image_memory_requirements(struct wrapper_device *device, + const VkDeviceImageMemoryRequirements *pInfo, + VkMemoryRequirements2 *pMemoryRequirements) +{ + VkDeviceImageMemoryRequirements info = *pInfo; + VkImageCreateInfo ci; + + if (pInfo->pCreateInfo && + is_emulated_bcn(device->physical, pInfo->pCreateInfo->format)) { + ci = *pInfo->pCreateInfo; + ci.format = get_format_for_bcn(pInfo->pCreateInfo->format); + ci.flags &= ~VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT; + ci.pNext = NULL; + info.pCreateInfo = &ci; + } + + device->dispatch_table.GetDeviceImageMemoryRequirements(device->dispatch_handle, + &info, pMemoryRequirements); +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_GetDeviceImageMemoryRequirements(VkDevice _device, + const VkDeviceImageMemoryRequirements *pInfo, + VkMemoryRequirements2 *pMemoryRequirements) +{ + VK_FROM_HANDLE(wrapper_device, device, _device); + wrapper_device_image_memory_requirements(device, pInfo, pMemoryRequirements); +} + VKAPI_ATTR VkResult VKAPI_CALL wrapper_CreateImageView(VkDevice _device, const VkImageViewCreateInfo *pCreateInfo, @@ -595,6 +1051,86 @@ wrapper_GetDeviceQueue2(VkDevice _device, const VkDeviceQueueInfo2* pQueueInfo, *pQueue = queue ? vk_queue_to_handle(queue) : VK_NULL_HANDLE; } +/* ---- VK_KHR_maintenance5 emulation ------------------------------------------ + * DXVK > 2.4.1 requires VK_KHR_maintenance5, which Xclipse (and other drivers) + * don't expose. We advertise + fake the feature (wrapper_physical_device.c) and + * implement its new entrypoints here. Each prefers the base driver's native + * implementation when present (so this is harmless on drivers that already have + * maintenance5, e.g. Mali) and otherwise translates to the pre-maintenance5 + * equivalent. */ + +VKAPI_ATTR void VKAPI_CALL +wrapper_CmdBindIndexBuffer2KHR(VkCommandBuffer commandBuffer, VkBuffer buffer, + VkDeviceSize offset, VkDeviceSize size, + VkIndexType indexType) { + VK_FROM_HANDLE(wrapper_command_buffer, wcb, commandBuffer); + struct wrapper_device *device = wcb->device; + + if (device->dispatch_table.CmdBindIndexBuffer2) + device->dispatch_table.CmdBindIndexBuffer2(wcb->dispatch_handle, buffer, offset, size, indexType); + else if (device->dispatch_table.CmdBindIndexBuffer2KHR) + device->dispatch_table.CmdBindIndexBuffer2KHR(wcb->dispatch_handle, buffer, offset, size, indexType); + else /* pre-maintenance5: the size parameter is a robustness bound; dropping it is safe */ + device->dispatch_table.CmdBindIndexBuffer(wcb->dispatch_handle, buffer, offset, indexType); +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_GetRenderingAreaGranularityKHR(VkDevice _device, + const VkRenderingAreaInfo *pRenderingAreaInfo, + VkExtent2D *pGranularity) { + VK_FROM_HANDLE(wrapper_device, device, _device); + + if (device->dispatch_table.GetRenderingAreaGranularity) + device->dispatch_table.GetRenderingAreaGranularity(device->dispatch_handle, pRenderingAreaInfo, pGranularity); + else if (device->dispatch_table.GetRenderingAreaGranularityKHR) + device->dispatch_table.GetRenderingAreaGranularityKHR(device->dispatch_handle, pRenderingAreaInfo, pGranularity); + else /* {1,1} is always a valid render-area granularity */ + *pGranularity = (VkExtent2D){ 1, 1 }; +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_GetImageSubresourceLayout2KHR(VkDevice _device, VkImage image, + const VkImageSubresource2 *pSubresource, + VkSubresourceLayout2 *pLayout) { + VK_FROM_HANDLE(wrapper_device, device, _device); + + if (device->dispatch_table.GetImageSubresourceLayout2) + device->dispatch_table.GetImageSubresourceLayout2(device->dispatch_handle, image, pSubresource, pLayout); + else if (device->dispatch_table.GetImageSubresourceLayout2KHR) + device->dispatch_table.GetImageSubresourceLayout2KHR(device->dispatch_handle, image, pSubresource, pLayout); + else if (device->dispatch_table.GetImageSubresourceLayout2EXT) + device->dispatch_table.GetImageSubresourceLayout2EXT(device->dispatch_handle, image, pSubresource, pLayout); + else + device->dispatch_table.GetImageSubresourceLayout(device->dispatch_handle, image, + &pSubresource->imageSubresource, &pLayout->subresourceLayout); +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_GetDeviceImageSubresourceLayoutKHR(VkDevice _device, + const VkDeviceImageSubresourceInfo *pInfo, + VkSubresourceLayout2 *pLayout) { + VK_FROM_HANDLE(wrapper_device, device, _device); + + if (device->dispatch_table.GetDeviceImageSubresourceLayout) { + device->dispatch_table.GetDeviceImageSubresourceLayout(device->dispatch_handle, pInfo, pLayout); + return; + } + if (device->dispatch_table.GetDeviceImageSubresourceLayoutKHR) { + device->dispatch_table.GetDeviceImageSubresourceLayoutKHR(device->dispatch_handle, pInfo, pLayout); + return; + } + + /* Emulate via a transient image: create it, query the subresource layout, + * destroy it. Use the base dispatch directly to avoid wrapper bookkeeping. */ + VkImage tmp; + if (device->dispatch_table.CreateImage(device->dispatch_handle, + pInfo->pCreateInfo, NULL, &tmp) == VK_SUCCESS) { + device->dispatch_table.GetImageSubresourceLayout(device->dispatch_handle, tmp, + &pInfo->pSubresource->imageSubresource, &pLayout->subresourceLayout); + device->dispatch_table.DestroyImage(device->dispatch_handle, tmp, NULL); + } +} + VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL wrapper_GetDeviceProcAddr(VkDevice _device, const char* pName) { VK_FROM_HANDLE(wrapper_device, device, _device); @@ -753,6 +1289,14 @@ wrapper_WaitForFences(VkDevice _device, &wf->staging_buffers_list, link) { VkDeviceMemory memory = wb->memory; + if (wb->desc_pool) + device->dispatch_table.DestroyDescriptorPool(device->dispatch_handle, + wb->desc_pool, NULL); + if (wb->bcn_inflight) { + simple_mtx_lock(&device->bcn_gpu_mutex); + device->bcn_gpu_inflight -= wb->bcn_inflight; + simple_mtx_unlock(&device->bcn_gpu_mutex); + } wrapper_buffer_destroy(device, wb, NULL); device->dispatch_table.FreeMemory(device->dispatch_handle, memory, NULL); @@ -905,35 +1449,348 @@ wrapper_AllocateCommandBuffers(VkDevice _device, return result; } -VKAPI_ATTR void VKAPI_CALL -wrapper_CmdCopyBufferToImage(VkCommandBuffer commandBuffer, - VkBuffer srcBuffer, - VkImage dstImage, - VkImageLayout dstLayout, - uint32_t regionCount, - const VkBufferImageCopy *pRegions) +struct wrapper_bcn_pc { + uint32_t block_x, block_x_src, block_y, src_word_off, format, has_alpha; + uint32_t astc8, bc_bx, bc_by; +}; + +/* Shader format id for a BC format, or -1 if the GPU shader can't decode it + * (those fall back to the CPU path). The shader now produces ASTC 4x4 OR 8x8 + * (selected per-dispatch via the astc8 push constant), so both are on the GPU. */ +static int +wrapper_bcn_gpu_format_id(VkFormat format) { - VK_FROM_HANDLE(wrapper_command_buffer, wcb, commandBuffer); - VkResult res; + switch (format) { + case VK_FORMAT_BC1_RGB_UNORM_BLOCK: + case VK_FORMAT_BC1_RGB_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: + case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: + return 0; /* BC1: opaque, single-plane RGB */ + case VK_FORMAT_BC7_UNORM_BLOCK: + case VK_FORMAT_BC7_SRGB_BLOCK: + return 1; /* BC7: alpha, dual-plane */ + default: + return -1; + } +} - struct wrapper_device *device = wcb->device; - struct wrapper_image *wi = get_wrapper_image_from_handle(device, dstImage); - struct wrapper_buffer *wb = get_wrapper_buffer_from_handle(device, srcBuffer); - VkFormat format = wi->info.format; - int texel_size = get_texel_size_for_format(get_format_for_bcn(format)); +static void +wrapper_bcn_gpu_init(struct wrapper_device *device) +{ + VkResult r; + VkShaderModuleCreateInfo smci = { + .sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, + .codeSize = sizeof(wrapper_bcn_transcode_spv), + .pCode = wrapper_bcn_transcode_spv, + }; + r = device->dispatch_table.CreateShaderModule(device->dispatch_handle, + &smci, NULL, &device->bcn_shader); + if (r != VK_SUCCESS) { device->bcn_gpu_state = -1; return; } + + VkDescriptorSetLayoutBinding binds[2] = { + { .binding = 0, .descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + .descriptorCount = 1, .stageFlags = VK_SHADER_STAGE_COMPUTE_BIT }, + { .binding = 1, .descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + .descriptorCount = 1, .stageFlags = VK_SHADER_STAGE_COMPUTE_BIT }, + }; + VkDescriptorSetLayoutCreateInfo dslci = { + .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, + .bindingCount = 2, .pBindings = binds, + }; + r = device->dispatch_table.CreateDescriptorSetLayout(device->dispatch_handle, + &dslci, NULL, &device->bcn_set_layout); + if (r != VK_SUCCESS) { device->bcn_gpu_state = -1; return; } + + VkPushConstantRange pcr = { + .stageFlags = VK_SHADER_STAGE_COMPUTE_BIT, + .offset = 0, .size = sizeof(struct wrapper_bcn_pc), + }; + VkPipelineLayoutCreateInfo plci = { + .sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, + .setLayoutCount = 1, .pSetLayouts = &device->bcn_set_layout, + .pushConstantRangeCount = 1, .pPushConstantRanges = &pcr, + }; + r = device->dispatch_table.CreatePipelineLayout(device->dispatch_handle, + &plci, NULL, &device->bcn_pipe_layout); + if (r != VK_SUCCESS) { device->bcn_gpu_state = -1; return; } + + VkComputePipelineCreateInfo cpci = { + .sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO, + .stage = { + .sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, + .stage = VK_SHADER_STAGE_COMPUTE_BIT, + .module = device->bcn_shader, .pName = "main", + }, + .layout = device->bcn_pipe_layout, + }; + r = device->dispatch_table.CreateComputePipelines(device->dispatch_handle, + VK_NULL_HANDLE, 1, &cpci, NULL, &device->bcn_pipeline); + if (r != VK_SUCCESS) { device->bcn_gpu_state = -1; return; } + + device->bcn_gpu_state = 1; +} - if (!wi || !wb || !is_emulated_bcn(device->physical, format)) { +static bool +wrapper_bcn_gpu_ready(struct wrapper_device *device) +{ + /* Default OFF. The GPU compute transcode is correct in isolation (its BC7 + * decode is bit-identical to bcdec and the ASTC encode matches the CPU + * encoder), but running compute dispatches inline during Hades's launch + * screen corrupts that screen's rendering (it renders black), and the boot + * is package-load-bound so the GPU path saves no meaningful time. The CPU + * encoder is correct everywhere; opt into the GPU path with WRAPPER_BCN_GPU=1. */ + static int env = -1; + if (env == -1) + env = getenv("WRAPPER_BCN_GPU") ? atoi(getenv("WRAPPER_BCN_GPU")) : 0; + if (!env) + return false; + + simple_mtx_lock(&device->bcn_gpu_mutex); + if (device->bcn_gpu_state == 0) + wrapper_bcn_gpu_init(device); + bool ready = device->bcn_gpu_state == 1; + simple_mtx_unlock(&device->bcn_gpu_mutex); + return ready; +} + +static struct wrapper_buffer * +wrapper_bcn_make_buffer(struct wrapper_device *device, VkDeviceSize size, + VkBufferUsageFlags usage) +{ + struct wrapper_buffer *b = vk_object_zalloc(&device->vk, &device->vk.alloc, + sizeof(struct wrapper_buffer), VK_OBJECT_TYPE_BUFFER); + if (!b) return NULL; + b->device = device; + + VkBufferCreateInfo bci = { + .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, + .size = size, .usage = usage, .sharingMode = VK_SHARING_MODE_EXCLUSIVE, + }; + if (device->dispatch_table.CreateBuffer(device->dispatch_handle, &bci, NULL, + &b->dispatch_handle) != VK_SUCCESS) { + vk_object_free(&device->vk, &device->vk.alloc, b); + return NULL; + } + VkMemoryRequirements mr; + device->dispatch_table.GetBufferMemoryRequirements(device->dispatch_handle, + b->dispatch_handle, &mr); + VkMemoryAllocateInfo ai = { + .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + .allocationSize = mr.size, + .memoryTypeIndex = wrapper_select_device_memory_type(device, + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT), + }; + if (device->dispatch_table.AllocateMemory(device->dispatch_handle, &ai, NULL, + &b->memory) != VK_SUCCESS) { + device->dispatch_table.DestroyBuffer(device->dispatch_handle, + b->dispatch_handle, NULL); + vk_object_free(&device->vk, &device->vk.alloc, b); + return NULL; + } + device->dispatch_table.BindBufferMemory(device->dispatch_handle, + b->dispatch_handle, b->memory, 0); + b->size = size; + return b; +} + +/* Destroy an untracked transcode buffer (error-path cleanup). */ +static void +wrapper_bcn_free_buffer(struct wrapper_device *device, struct wrapper_buffer *b) +{ + if (!b) return; + device->dispatch_table.DestroyBuffer(device->dispatch_handle, b->dispatch_handle, NULL); + device->dispatch_table.FreeMemory(device->dispatch_handle, b->memory, NULL); + vk_object_free(&device->vk, &device->vk.alloc, b); +} + +/* GPU transcode: BC source buffer -> compute -> ASTC buffer -> copy to image. + * Returns false (with nothing recorded for the failing region) to fall back to + * the CPU path. Injected into the app's command buffer; state it binds (compute + * pipeline/descriptors) is rebound by the app before its own next dispatch. */ +static bool +wrapper_bcn_gpu_copy(struct wrapper_command_buffer *wcb, + struct wrapper_device *device, struct wrapper_buffer *wb, + VkImage dstImage, VkImageLayout dstLayout, VkFormat format, + int fmt_id, uint32_t regionCount, + const VkBufferImageCopy *pRegions) +{ + int block_size = (fmt_id == 0) ? 8 : 16; /* BC1=8, BC7=16 bytes/block */ + uint32_t has_alpha = (fmt_id == 0) ? 0 : 1; /* BC1 opaque, BC7 alpha */ + int astc8 = is_astc_8x8(get_format_for_bcn(format)) ? 1 : 0; + /* In-flight transient ceiling; beyond it, uploads fall back to CPU. Tunable + * per device RAM via WRAPPER_BCN_GPU_CAP_MB (default 128 MB). */ + static VkDeviceSize CAP = 0; + if (CAP == 0) { + int mb = getenv("WRAPPER_BCN_GPU_CAP_MB") ? atoi(getenv("WRAPPER_BCN_GPU_CAP_MB")) : 128; + if (mb < 16) mb = 16; + CAP = (VkDeviceSize)mb * 1024 * 1024; + } + + for (uint32_t i = 0; i < regionCount; i++) { + VkBufferImageCopy region = pRegions[i]; + int w = region.imageExtent.width; + int h = region.imageExtent.height; + VkDeviceSize offset = region.bufferOffset; + if (offset % 4 != 0) + return false; /* CmdCopyBuffer needs 4-aligned offsets; fall back to CPU */ + int src_w = region.bufferRowLength ? (int)region.bufferRowLength : w; + /* BC-block extents of the real texture, and the source row stride. */ + int bc_bx = (w + 3) / 4; + int bc_by = (h + 3) / 4; + int block_x_src = (src_w + 3) / 4; + /* Destination ASTC block grid: 8x8 blocks pack 2x2 BC blocks each. */ + int block_x = astc8 ? (w + 7) / 8 : bc_bx; + int block_y = astc8 ? (h + 7) / 8 : bc_by; + VkDeviceSize src_size = (VkDeviceSize)block_x_src * bc_by * block_size; + VkDeviceSize dst_size = (VkDeviceSize)block_x * block_y * 16; + VkDeviceSize total = src_size + dst_size; + + /* Bound the transient GPU memory: if we'd exceed the ceiling, fall back to + * the CPU path for this upload rather than risk exhausting device memory. */ + simple_mtx_lock(&device->bcn_gpu_mutex); + if (device->bcn_gpu_inflight + total > CAP) { + simple_mtx_unlock(&device->bcn_gpu_mutex); + return false; + } + device->bcn_gpu_inflight += total; + simple_mtx_unlock(&device->bcn_gpu_mutex); + + struct wrapper_buffer *srcb = wrapper_bcn_make_buffer(device, src_size, + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT); + struct wrapper_buffer *dstb = wrapper_bcn_make_buffer(device, dst_size, + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT); + if (!srcb || !dstb) { + wrapper_bcn_free_buffer(device, srcb); + wrapper_bcn_free_buffer(device, dstb); + simple_mtx_lock(&device->bcn_gpu_mutex); + device->bcn_gpu_inflight -= total; + simple_mtx_unlock(&device->bcn_gpu_mutex); + return false; + } + srcb->bcn_inflight = src_size; + dstb->bcn_inflight = dst_size; + + VkDescriptorPoolSize psz = { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 2 }; + VkDescriptorPoolCreateInfo dpci = { + .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, + .maxSets = 1, .poolSizeCount = 1, .pPoolSizes = &psz, + }; + VkDescriptorPool pool; + VkDescriptorSet set; + VkDescriptorSetAllocateInfo dsai = { + .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, + .descriptorSetCount = 1, .pSetLayouts = &device->bcn_set_layout, + }; + if (device->dispatch_table.CreateDescriptorPool(device->dispatch_handle, + &dpci, NULL, &pool) != VK_SUCCESS) { + wrapper_bcn_free_buffer(device, srcb); + wrapper_bcn_free_buffer(device, dstb); + simple_mtx_lock(&device->bcn_gpu_mutex); + device->bcn_gpu_inflight -= total; + simple_mtx_unlock(&device->bcn_gpu_mutex); + return false; + } + dsai.descriptorPool = pool; + if (device->dispatch_table.AllocateDescriptorSets(device->dispatch_handle, + &dsai, &set) != VK_SUCCESS) { + device->dispatch_table.DestroyDescriptorPool(device->dispatch_handle, pool, NULL); + wrapper_bcn_free_buffer(device, srcb); + wrapper_bcn_free_buffer(device, dstb); + simple_mtx_lock(&device->bcn_gpu_mutex); + device->bcn_gpu_inflight -= total; + simple_mtx_unlock(&device->bcn_gpu_mutex); + return false; + } + VkDescriptorBufferInfo bi0 = { srcb->dispatch_handle, 0, src_size }; + VkDescriptorBufferInfo bi1 = { dstb->dispatch_handle, 0, dst_size }; + VkWriteDescriptorSet writes[2] = { + { .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, .dstSet = set, + .dstBinding = 0, .descriptorCount = 1, + .descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, .pBufferInfo = &bi0 }, + { .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, .dstSet = set, + .dstBinding = 1, .descriptorCount = 1, + .descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, .pBufferInfo = &bi1 }, + }; + device->dispatch_table.UpdateDescriptorSets(device->dispatch_handle, 2, writes, 0, NULL); + + VkBufferCopy bcopy = { .srcOffset = offset, .dstOffset = 0, .size = src_size }; + device->dispatch_table.CmdCopyBuffer(wcb->dispatch_handle, + wb->dispatch_handle, srcb->dispatch_handle, 1, &bcopy); + + VkMemoryBarrier mb1 = { + .sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER, + .srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT, + .dstAccessMask = VK_ACCESS_SHADER_READ_BIT, + }; + device->dispatch_table.CmdPipelineBarrier(wcb->dispatch_handle, + VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, + 0, 1, &mb1, 0, NULL, 0, NULL); + + device->dispatch_table.CmdBindPipeline(wcb->dispatch_handle, + VK_PIPELINE_BIND_POINT_COMPUTE, device->bcn_pipeline); + device->dispatch_table.CmdBindDescriptorSets(wcb->dispatch_handle, + VK_PIPELINE_BIND_POINT_COMPUTE, device->bcn_pipe_layout, 0, 1, &set, 0, NULL); + struct wrapper_bcn_pc pc = { + .block_x = block_x, .block_x_src = block_x_src, .block_y = block_y, + .src_word_off = 0, .format = fmt_id, .has_alpha = has_alpha, + .astc8 = astc8, .bc_bx = bc_bx, .bc_by = bc_by, + }; + device->dispatch_table.CmdPushConstants(wcb->dispatch_handle, + device->bcn_pipe_layout, VK_SHADER_STAGE_COMPUTE_BIT, 0, sizeof(pc), &pc); + device->dispatch_table.CmdDispatch(wcb->dispatch_handle, + (block_x + 7) / 8, (block_y + 7) / 8, 1); + + VkMemoryBarrier mb2 = { + .sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER, + .srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT, + .dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT, + }; + device->dispatch_table.CmdPipelineBarrier(wcb->dispatch_handle, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, + 0, 1, &mb2, 0, NULL, 0, NULL); + + region.bufferOffset = 0; + region.bufferRowLength = 0; + region.bufferImageHeight = 0; device->dispatch_table.CmdCopyBufferToImage(wcb->dispatch_handle, - srcBuffer, dstImage, dstLayout, regionCount, pRegions); - return; + dstb->dispatch_handle, dstImage, dstLayout, 1, ®ion); + + srcb->wcb = wcb; + dstb->wcb = wcb; + dstb->desc_pool = pool; + if (wcb->fence) { + list_add(&srcb->link, &wcb->fence->staging_buffers_list); + list_add(&dstb->link, &wcb->fence->staging_buffers_list); + } } + return true; +} + +static void +wrapper_bcn_do_copy(struct wrapper_command_buffer *wcb, + struct wrapper_device *device, + struct wrapper_buffer *wb, + VkImage dstImage, + VkImageLayout dstLayout, + VkFormat format, + uint32_t regionCount, + const VkBufferImageCopy *pRegions) +{ + int fmt_id = wrapper_bcn_gpu_format_id(format); + if (fmt_id >= 0 && wrapper_bcn_gpu_ready(device)) { + if (wrapper_bcn_gpu_copy(wcb, device, wb, dstImage, dstLayout, format, + fmt_id, regionCount, pRegions)) + return; + /* else fall through to CPU transcode */ + } + VkResult res; simple_mtx_lock(&device->resource_mutex); - + if (!wb->is_mapped) { res = device->dispatch_table.MapMemory(device->dispatch_handle, wb->memory, wb->offset, wb->size, 0, &wb->mapped_address); - + if (res != VK_SUCCESS) { WRAPPER_LOG(error, "Failed to map source buffer memory, res %d", res); simple_mtx_unlock(&device->resource_mutex); @@ -942,19 +1799,20 @@ wrapper_CmdCopyBufferToImage(VkCommandBuffer commandBuffer, wb->is_mapped = 1; } - + for (int i = 0; i < regionCount; i++) { VkBufferImageCopy copy_region = pRegions[i]; int w = copy_region.imageExtent.width; int h = copy_region.imageExtent.height; int offset = copy_region.bufferOffset; + VkDeviceSize upload_size = bcn_upload_size(format, w, h); struct wrapper_buffer *staging_wb = vk_object_zalloc(&device->vk, &device->vk.alloc, sizeof(struct wrapper_buffer), VK_OBJECT_TYPE_BUFFER); VkBufferCreateInfo buffer_create_info = { .sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, - .size = w * h * texel_size, + .size = upload_size, .usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT, .flags = 0, .sharingMode = VK_SHARING_MODE_EXCLUSIVE, @@ -971,7 +1829,7 @@ wrapper_CmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkMemoryAllocateInfo allocate_info = { .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, - .allocationSize = w * h * texel_size, + .allocationSize = upload_size, .memoryTypeIndex = wrapper_select_device_memory_type(device, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT), }; @@ -995,7 +1853,7 @@ wrapper_CmdCopyBufferToImage(VkCommandBuffer commandBuffer, } res = device->dispatch_table.MapMemory(device->dispatch_handle, - staging_wb->memory, 0, w * h * texel_size, 0, &staging_wb->mapped_address); + staging_wb->memory, 0, upload_size, 0, &staging_wb->mapped_address); if (res != VK_SUCCESS) { WRAPPER_LOG(error, "Failed to map staging buffer memory, res %d", res); @@ -1003,8 +1861,50 @@ wrapper_CmdCopyBufferToImage(VkCommandBuffer commandBuffer, return; } - decompress_bcn_format(wb->mapped_address, staging_wb->mapped_address, w, h, format, offset); - + int src_w = copy_region.bufferRowLength ? (int)copy_region.bufferRowLength : w; + decompress_bcn_format(wb->mapped_address, staging_wb->mapped_address, w, h, src_w, format, offset); + + /* Texture-path diagnostic (part of WRAPPER_DIAG=1): for each BCn CPU upload, + * record the real parameters (source stride, target format, image tiling/ + * extent/usage) and dump the leading source BC7 bytes + our transcode + * output, so the transcode can be verified byte-for-byte offline against + * the reference decoder and any stride/format/tiling mismatch is visible. */ + { + static int tex_diag = -1; + if (tex_diag == -1) + tex_diag = getenv("WRAPPER_DIAG") ? atoi(getenv("WRAPPER_DIAG")) : 0; + if (tex_diag) { + static int tex_n = 0; + struct wrapper_image *twi = get_wrapper_image_from_handle(device, dstImage); + VkFormat tgt = get_format_for_bcn(format); + /* Write to stderr, which for a D3D process is redirected into the + * diag file (wrapper_emit_diag), so this lands in the one file. */ + fprintf(stderr, + "[WRAPPER_TEX %d] bc=%d %dx%d mip=%u rowLen=%u imgH=%u off=%d srcStride=%d" + " -> target=%d uploadSize=%llu", + tex_n, format, w, h, copy_region.imageSubresource.mipLevel, + copy_region.bufferRowLength, copy_region.bufferImageHeight, + offset, src_w, tgt, (unsigned long long)upload_size); + if (twi) + fprintf(stderr, " | img: fmt=%d extent=%ux%ux%u mips=%u tiling=%d usage=0x%x flags=0x%x", + twi->info.format, twi->info.extent.width, twi->info.extent.height, + twi->info.extent.depth, twi->info.mipLevels, twi->info.tiling, + twi->info.usage, twi->info.flags); + fprintf(stderr, "\n"); + if (tex_n < 4) { + unsigned char *src = (unsigned char *)wb->mapped_address + offset; + unsigned char *out = (unsigned char *)staging_wb->mapped_address; + int ns = 96, no = (upload_size < 256) ? (int)upload_size : 256; + fprintf(stderr, " src:"); + for (int b = 0; b < ns; b++) fprintf(stderr, "%02x", src[b]); + fprintf(stderr, "\n out:"); + for (int b = 0; b < no; b++) fprintf(stderr, "%02x", out[b]); + fprintf(stderr, "\n"); + } + tex_n++; + } + } + copy_region.bufferOffset = 0; copy_region.bufferRowLength = 0; copy_region.bufferImageHeight = 0; @@ -1029,6 +1929,116 @@ wrapper_CmdCopyBufferToImage(VkCommandBuffer commandBuffer, simple_mtx_unlock(&device->resource_mutex); } +/* Append a line to the per-game diag file and mirror to logcat, when + * WRAPPER_DIAG is set. Used for the copy-level texture log below. */ +static void +wrapper_diag_append(const char *fmt, ...) +{ + static int on = -1; + if (on == -1) + on = getenv("WRAPPER_DIAG") ? atoi(getenv("WRAPPER_DIAG")) : 0; + if (!on) + return; + const char *aid = getenv("WRAPPER_DIAG_APPID"); + char tp[256]; + snprintf(tp, sizeof(tp), + "/data/data/app.gamenative/files/imagefs/usr/tmp/wrapper_diag_%s.txt", + (aid && aid[0]) ? aid : "unknown"); + FILE *f = fopen(tp, "a"); + va_list ap; + va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); + if (f) { va_start(ap, fmt); vfprintf(f, fmt, ap); va_end(ap); fclose(f); } +} + +/* Log every buffer->image copy that targets a tracked image (any format, + * emulated or not) so nothing that could corrupt is invisible. */ +static void +wrapper_diag_log_copy(struct wrapper_device *device, VkImage dstImage, + struct wrapper_image *wi, struct wrapper_buffer *wb, + uint32_t w, uint32_t h, uint32_t mip, uint32_t rowLen, + uint32_t regionCount) +{ + if (!wi) + return; + VkFormat req = wi->info.format; + int emu = is_emulated_bcn(device->physical, req); + wrapper_diag_append( + "[COPY] img=%04x fmt=%d emulated=%d -> stored=%d %ux%u mip=%u rowLen=%u" + " tiling=%d usage=0x%x mips=%u bufTracked=%d regions=%u\n", + (unsigned)((uintptr_t)dstImage & 0xffff), req, emu, + emu ? get_format_for_bcn(req) : req, w, h, mip, rowLen, + (int)wi->info.tiling, wi->info.usage, wi->info.mipLevels, + wb ? 1 : 0, regionCount); +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_CmdCopyBufferToImage(VkCommandBuffer commandBuffer, + VkBuffer srcBuffer, + VkImage dstImage, + VkImageLayout dstLayout, + uint32_t regionCount, + const VkBufferImageCopy *pRegions) +{ + VK_FROM_HANDLE(wrapper_command_buffer, wcb, commandBuffer); + struct wrapper_device *device = wcb->device; + struct wrapper_image *wi = get_wrapper_image_from_handle(device, dstImage); + struct wrapper_buffer *wb = get_wrapper_buffer_from_handle(device, srcBuffer); + VkFormat format = wi ? wi->info.format : VK_FORMAT_UNDEFINED; + + if (regionCount) + wrapper_diag_log_copy(device, dstImage, wi, wb, + pRegions[0].imageExtent.width, pRegions[0].imageExtent.height, + pRegions[0].imageSubresource.mipLevel, pRegions[0].bufferRowLength, + regionCount); + + if (!wi || !wb || !is_emulated_bcn(device->physical, format)) { + device->dispatch_table.CmdCopyBufferToImage(wcb->dispatch_handle, + srcBuffer, dstImage, dstLayout, regionCount, pRegions); + return; + } + + wrapper_bcn_do_copy(wcb, device, wb, dstImage, dstLayout, format, + regionCount, pRegions); +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_CmdCopyBufferToImage2(VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2 *pInfo) +{ + VK_FROM_HANDLE(wrapper_command_buffer, wcb, commandBuffer); + struct wrapper_device *device = wcb->device; + struct wrapper_image *wi = get_wrapper_image_from_handle(device, pInfo->dstImage); + struct wrapper_buffer *wb = get_wrapper_buffer_from_handle(device, pInfo->srcBuffer); + VkFormat format = wi ? wi->info.format : VK_FORMAT_UNDEFINED; + + if (pInfo->regionCount) + wrapper_diag_log_copy(device, pInfo->dstImage, wi, wb, + pInfo->pRegions[0].imageExtent.width, pInfo->pRegions[0].imageExtent.height, + pInfo->pRegions[0].imageSubresource.mipLevel, + pInfo->pRegions[0].bufferRowLength, pInfo->regionCount); + + if (!wi || !wb || !is_emulated_bcn(device->physical, format)) { + device->dispatch_table.CmdCopyBufferToImage2(wcb->dispatch_handle, pInfo); + return; + } + + VkBufferImageCopy regions[pInfo->regionCount]; + for (uint32_t i = 0; i < pInfo->regionCount; i++) { + const VkBufferImageCopy2 *r = &pInfo->pRegions[i]; + regions[i] = (VkBufferImageCopy){ + .bufferOffset = r->bufferOffset, + .bufferRowLength = r->bufferRowLength, + .bufferImageHeight = r->bufferImageHeight, + .imageSubresource = r->imageSubresource, + .imageOffset = r->imageOffset, + .imageExtent = r->imageExtent, + }; + } + + wrapper_bcn_do_copy(wcb, device, wb, pInfo->dstImage, pInfo->dstImageLayout, + format, pInfo->regionCount, regions); +} + VKAPI_ATTR void VKAPI_CALL wrapper_FreeCommandBuffers(VkDevice _device, VkCommandPool commandPool, diff --git a/src/vulkan/wrapper/wrapper_device_memory.c b/src/vulkan/wrapper/wrapper_device_memory.c index 49855b0f..c7a4f144 100644 --- a/src/vulkan/wrapper/wrapper_device_memory.c +++ b/src/vulkan/wrapper/wrapper_device_memory.c @@ -10,6 +10,7 @@ #include #include #include +#include static int safe_ioctl(int fd, unsigned long request, void *arg) diff --git a/src/vulkan/wrapper/wrapper_log.c b/src/vulkan/wrapper/wrapper_log.c index 11a630a2..d522d0c7 100644 --- a/src/vulkan/wrapper/wrapper_log.c +++ b/src/vulkan/wrapper/wrapper_log.c @@ -111,6 +111,22 @@ void write_to_logfile(const char *fmt, const char *level, ...) { fflush(wrapper_log_file); } + /* When WRAPPER_DIAG is on, also emit to stderr — which for a D3D process is + * redirected into the single per-game diag file, so the wrapper's own + * decisions (faked extensions, disabled features) join the device report and + * the vkd3d/DXVK output in one shareable file. */ + static int diag = -1; + if (diag == -1) + diag = getenv("WRAPPER_DIAG") ? atoi(getenv("WRAPPER_DIAG")) : 0; + if (diag) { + va_list va2; + va_start(va2, level); + fprintf(stderr, "[%s]: ", level); + vfprintf(stderr, fmt, va2); + fprintf(stderr, "\n"); + va_end(va2); + } + va_end(va_args); } diff --git a/src/vulkan/wrapper/wrapper_physical_device.c b/src/vulkan/wrapper/wrapper_physical_device.c index fca5a79a..a6e5bc46 100644 --- a/src/vulkan/wrapper/wrapper_physical_device.c +++ b/src/vulkan/wrapper/wrapper_physical_device.c @@ -1,4 +1,5 @@ #include +#include #include "wrapper_private.h" #include "wrapper_log.h" @@ -237,7 +238,7 @@ VkResult enumerate_physical_device(struct vk_instance *_instance) WRAPPER_LOG(info, "GPU Name: %s", pdevice->properties2.properties.deviceName); WRAPPER_LOG(info, "Driver Version: %s", get_driver_version(pdevice->properties2.properties.driverVersion)); - + const char *app_name = instance->vk.app_info.app_name ? instance->vk.app_info.app_name : "wrapper"; @@ -271,19 +272,65 @@ VkResult enumerate_physical_device(struct vk_instance *_instance) } if (pdevice->driver_properties.driverID == VK_DRIVER_ID_ARM_PROPRIETARY) { - if (strstr(engine_name, "DXVK")) { - WRAPPER_LOG(info, "Faking VK_EXT_robustness2"); + bool is_dxvk = strstr(engine_name, "DXVK"); + bool is_vkd3d = strstr(engine_name, "vkd3d"); + bool is_d3d = is_dxvk || is_vkd3d; + pdevice->is_vkd3d = is_vkd3d; + if (is_d3d) { + WRAPPER_LOG(info, "Faking VK_EXT_robustness2 for engine '%s'", engine_name); pdevice->vk.supported_extensions.EXT_robustness2 = true; - WRAPPER_LOG(info, "Faking dualSrcBlend feature"); + supported_features->robustBufferAccess2 = true; + supported_features->nullDescriptor = true; + if (is_dxvk && engine_version >= VK_MAKE_VERSION(2, 7, 0)) { + WRAPPER_LOG(info, "Faking VK_KHR_pipeline_library"); + pdevice->vk.supported_extensions.KHR_pipeline_library = true; + } + supported_features->extendedDynamicState = true; + supported_features->extendedDynamicState2 = true; supported_features->dualSrcBlend = true; - WRAPPER_LOG(info, "Faking multiDrawIndirect feature"); supported_features->multiDrawIndirect = true; } + if (pdevice->base_supported_extensions.KHR_vertex_attribute_divisor) { + WRAPPER_LOG(info, "Aliasing VK_EXT_vertex_attribute_divisor -> KHR (Mali has KHR)"); + pdevice->vk.supported_extensions.EXT_vertex_attribute_divisor = true; + pdevice->vk.supported_extensions.KHR_vertex_attribute_divisor = false; + } WRAPPER_LOG(info, "Disabling VK_EXT_calibrated_timestamps"); pdevice->vk.supported_extensions.EXT_calibrated_timestamps = false; - WRAPPER_LOG(info, "Disabling VK_EXT_extended_dynamic_state and VK_EXT_extended_dynamic_state2"); - pdevice->vk.supported_extensions.EXT_extended_dynamic_state = false; - pdevice->vk.supported_extensions.EXT_extended_dynamic_state2 = false; + if (!is_d3d) { + WRAPPER_LOG(info, "Disabling VK_EXT_extended_dynamic_state and VK_EXT_extended_dynamic_state2"); + pdevice->vk.supported_extensions.EXT_extended_dynamic_state = false; + pdevice->vk.supported_extensions.EXT_extended_dynamic_state2 = false; + } + } + + /* Samsung Xclipse: vkd3d 3.x needs VK_EXT_dynamic_rendering_unused_attachments + * for correct rendering (draws with unused/mismatched render targets get + * dropped -> objects vanish, e.g. the player character), but Xclipse doesn't + * expose it. Advertise it -- it is a validation relaxation the RDNA driver + * tolerates; the feature is faked in Features2 and the struct is unlinked from + * the real CreateDevice pNext. */ + if (pdevice->driver_properties.driverID == VK_DRIVER_ID_SAMSUNG_PROPRIETARY) { + bool samsung_d3d = strstr(engine_name, "DXVK") || strstr(engine_name, "vkd3d"); + pdevice->is_vkd3d = strstr(engine_name, "vkd3d") != NULL; + if (samsung_d3d && + !pdevice->base_supported_extensions.EXT_dynamic_rendering_unused_attachments) { + WRAPPER_LOG(info, "Faking VK_EXT_dynamic_rendering_unused_attachments for Xclipse"); + pdevice->vk.supported_extensions.EXT_dynamic_rendering_unused_attachments = true; + } + } + + /* DXVK > 2.4.1 requires VK_KHR_maintenance5. Some drivers (e.g. Xclipse) + * don't expose it. Emulate it for any D3D client whose base driver lacks + * it (NOT Samsung-gated -- the base-lacks guard limits it to drivers that + * actually need it). Feature faked in Features2, struct unlinked from the + * real CreateDevice, entrypoints implemented in wrapper_device.c. */ + { + bool is_d3d = strstr(engine_name, "DXVK") || strstr(engine_name, "vkd3d"); + if (is_d3d && !pdevice->base_supported_extensions.KHR_maintenance5) { + WRAPPER_LOG(info, "Faking VK_KHR_maintenance5 (base driver lacks it)"); + pdevice->vk.supported_extensions.KHR_maintenance5 = true; + } } char *wrapper_emulate_bcn_env = getenv("WRAPPER_EMULATE_BCN"); @@ -357,8 +404,47 @@ wrapper_GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VKAPI_ATTR void VKAPI_CALL wrapper_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, - VkPhysicalDeviceFeatures2* pFeatures) { + VkPhysicalDeviceFeatures2* pFeatures) { + VK_FROM_HANDLE(wrapper_physical_device, pdevice, physicalDevice); vk_common_GetPhysicalDeviceFeatures2(physicalDevice, pFeatures); + + if (pdevice->driver_properties.driverID == VK_DRIVER_ID_ARM_PROPRIETARY && + pdevice->vk.supported_extensions.EXT_robustness2) { + vk_foreach_struct(s, pFeatures->pNext) { + if (s->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT) { + VkPhysicalDeviceRobustness2FeaturesEXT *r2 = + (VkPhysicalDeviceRobustness2FeaturesEXT *)s; + r2->robustBufferAccess2 = VK_TRUE; + r2->nullDescriptor = VK_TRUE; + if (pdevice->is_vkd3d) + r2->robustImageAccess2 = VK_TRUE; + } + if (s->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT) { + ((VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *)s)->extendedDynamicState = VK_TRUE; + } + if (s->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT) { + ((VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *)s)->extendedDynamicState2 = VK_TRUE; + } + if (s->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT) { + VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *vad = + (VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *)s; + vad->vertexAttributeInstanceRateDivisor = VK_TRUE; + vad->vertexAttributeInstanceRateZeroDivisor = VK_TRUE; + } + } + } + + if (pdevice->driver_properties.driverID == VK_DRIVER_ID_SAMSUNG_PROPRIETARY) { + vk_foreach_struct(s, pFeatures->pNext) { + if (s->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT && + pdevice->vk.supported_extensions.EXT_dynamic_rendering_unused_attachments) + ((VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT *)s) + ->dynamicRenderingUnusedAttachments = VK_TRUE; + if (s->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES && + pdevice->vk.supported_extensions.KHR_maintenance5) + ((VkPhysicalDeviceMaintenance5Features *)s)->maintenance5 = VK_TRUE; + } + } } VKAPI_ATTR void VKAPI_CALL @@ -390,6 +476,12 @@ wrapper_GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, if (api_version > 0) pProperties->apiVersion = api_version; + + /* See wrapper_GetPhysicalDeviceProperties2: bump push constant size to the + * DXVK-required minimum on Xclipse. */ + if (pdevice->driver_properties.driverID == VK_DRIVER_ID_SAMSUNG_PROPRIETARY && + pProperties->limits.maxPushConstantsSize < 256) + pProperties->limits.maxPushConstantsSize = 256; } VKAPI_ATTR void VKAPI_CALL @@ -424,8 +516,33 @@ wrapper_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, if (api_version > 0) pProperties->properties.apiVersion = api_version; + /* DXVK 2.6+ requires maxPushConstantsSize >= 256 (its unified "push data" + * model) and skips the adapter otherwise. Xclipse reports less; the RDNA + * hardware underneath handles 256 (desktop AMD reports it), Samsung's driver + * just reports conservatively -- bump it so DXVK proceeds. NOTE: unlike the + * extension fakes, this is a real driver limit; if the driver enforces it in + * vkCreatePipelineLayout this will surface as pipeline-creation failures. */ + if (pdevice->driver_properties.driverID == VK_DRIVER_ID_SAMSUNG_PROPRIETARY && + pProperties->properties.limits.maxPushConstantsSize < 256) + pProperties->properties.limits.maxPushConstantsSize = 256; + vk_foreach_struct(prop, pProperties->pNext) { switch (prop->sType) { + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: + { + VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR khr_vad = { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR, + }; + VkPhysicalDeviceProperties2 p2 = { + .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, + .pNext = &khr_vad, + }; + pdevice->dispatch_table.GetPhysicalDeviceProperties2( + pdevice->dispatch_handle, &p2); + ((VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *)prop)->maxVertexAttribDivisor = + khr_vad.maxVertexAttribDivisor; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT: { VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *placed_prop = @@ -679,9 +796,9 @@ wrapper_GetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice, break; } - return pdevice->dispatch_table.GetPhysicalDeviceImageFormatProperties2(pdevice->dispatch_handle, + return pdevice->dispatch_table.GetPhysicalDeviceImageFormatProperties2(pdevice->dispatch_handle, pImageFormatInfo, pImageFormatProperties); -} +} VKAPI_ATTR void VKAPI_CALL wrapper_GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, @@ -720,8 +837,59 @@ wrapper_GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, break; } - pdevice->dispatch_table.GetPhysicalDeviceFormatProperties(pdevice->dispatch_handle, - format, pFormatProperties); + pdevice->dispatch_table.GetPhysicalDeviceFormatProperties(pdevice->dispatch_handle, + format, pFormatProperties); +} + +VKAPI_ATTR void VKAPI_CALL +wrapper_GetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2* pFormatProperties) +{ + VK_FROM_HANDLE(wrapper_physical_device, pdevice, physicalDevice); + + pdevice->dispatch_table.GetPhysicalDeviceFormatProperties2(pdevice->dispatch_handle, + format, pFormatProperties); + + switch (format) { + case VK_FORMAT_BC1_RGB_UNORM_BLOCK: + case VK_FORMAT_BC1_RGB_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: + case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: + case VK_FORMAT_BC2_UNORM_BLOCK: + case VK_FORMAT_BC2_SRGB_BLOCK: + case VK_FORMAT_BC3_UNORM_BLOCK: + case VK_FORMAT_BC3_SRGB_BLOCK: + case VK_FORMAT_BC4_UNORM_BLOCK: + case VK_FORMAT_BC4_SNORM_BLOCK: + case VK_FORMAT_BC5_UNORM_BLOCK: + case VK_FORMAT_BC5_SNORM_BLOCK: + case VK_FORMAT_BC6H_UFLOAT_BLOCK: + case VK_FORMAT_BC6H_SFLOAT_BLOCK: + case VK_FORMAT_BC7_UNORM_BLOCK: + case VK_FORMAT_BC7_SRGB_BLOCK: + if (pdevice->driver_properties.driverID == VK_DRIVER_ID_SAMSUNG_PROPRIETARY && + format <= 138 && pdevice->emulate_bcn == 3) + break; + + if (pdevice->emulate_bcn > 0) { + VkFormatFeatureFlags bc = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | + VK_FORMAT_FEATURE_BLIT_SRC_BIT | + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_TRANSFER_DST_BIT; + pFormatProperties->formatProperties.optimalTilingFeatures |= bc; + + VkBaseOutStructure *s = (VkBaseOutStructure *)pFormatProperties->pNext; + while (s) { + if (s->sType == VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3) + ((VkFormatProperties3 *)s)->optimalTilingFeatures |= bc; + s = s->pNext; + } + } + break; + default: + break; + } } VKAPI_ATTR void VKAPI_CALL diff --git a/src/vulkan/wrapper/wrapper_private.h b/src/vulkan/wrapper/wrapper_private.h index 1f8271a2..bcdf7961 100644 --- a/src/vulkan/wrapper/wrapper_private.h +++ b/src/vulkan/wrapper/wrapper_private.h @@ -35,6 +35,7 @@ struct wrapper_physical_device { int dma_heap_fd; int emulate_bcn; + bool is_vkd3d; char *resource_type; VkPhysicalDevice dispatch_handle; VkPhysicalDeviceProperties2 properties2; @@ -75,6 +76,23 @@ struct wrapper_device { struct hash_table_u64 *fence_table; struct wrapper_physical_device *physical; struct vk_device_dispatch_table dispatch_table; + + bool emulate_null_descriptor; + VkBuffer null_buffer; + VkDeviceMemory null_buffer_memory; + VkImage null_image; + VkDeviceMemory null_image_memory; + VkImageView null_image_view; + VkSampler null_sampler; + + /* BCn->ASTC GPU transcode (compute), lazily initialized. */ + simple_mtx_t bcn_gpu_mutex; + int bcn_gpu_state; /* 0 uninit, 1 ready, -1 disabled */ + VkShaderModule bcn_shader; + VkDescriptorSetLayout bcn_set_layout; + VkPipelineLayout bcn_pipe_layout; + VkPipeline bcn_pipeline; + VkDeviceSize bcn_gpu_inflight; /* transient GPU-transcode bytes not yet freed */ }; VK_DEFINE_HANDLE_CASTS(wrapper_device, vk.base, VkDevice, @@ -92,6 +110,10 @@ struct wrapper_buffer { int is_mapped; VkDeviceMemory memory; struct wrapper_command_buffer *wcb; + /* For transient GPU-transcode buffers: a descriptor pool destroyed with it, + * and bytes to release from the device's in-flight counter when freed. */ + VkDescriptorPool desc_pool; + VkDeviceSize bcn_inflight; }; struct wrapper_image {