61 #define HT_SHIFT_SIGMA 0
62 #define HT_SHIFT_SCAN 4
63 #define HT_SHIFT_REF 3
64 #define HT_SHIFT_REF_IND 2
67 const static uint8_t
mel_e[13] = { 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5 };
94 return n *
c <=
c - 1;
103 return 1 + (0xffffffffffffffffull /
d);
148 uint32_t new_bits = 32;
150 if (
buffer->bits_left >= 32)
162 if ((
tmp & 0x7FFF000000) > 0x7F8F000000) {
166 if ((
tmp & 0x007FFF0000) > 0x007F8F0000) {
167 tmp = (
tmp & 0x007FFFFFFF) + ((
tmp & 0xFF00000000) >> 1);
170 if ((
tmp & 0x00007FFF00) > 0x00007F8F00) {
171 tmp = (
tmp & 0x00007FFFFF) + ((
tmp & 0xFFFF000000) >> 1);
174 if ((
tmp & 0x0000007FFF) > 0x0000007F8F) {
175 tmp = (
tmp & 0x0000007FFF) + ((
tmp & 0xFFFFFF0000) >> 1);
183 buffer->bits_left += new_bits;
195 while (
buffer->bits_left < 32) {
198 if (
buffer->pos <= length) {
230 uint64_t
mask = (1ull << nbits) - 1;
245 uint8_t nbits,
const uint8_t *buf,
249 uint64_t
mask = (1ull << nbits) - 1;
264 uint64_t
mask = (1ull << nbits) - 1;
273 s->pos = Lcup - 2 - Pcup;
274 s->last = Dcup[Lcup - 2];
275 s->tmp = (
s->last) >> 4;
276 s->bits = ((
s->tmp & 7) < 7) ? 4 : 3;
288 const uint8_t *Dcup, uint8_t *sig_pat,
289 uint8_t *res_off, uint8_t *emb_pat_k,
290 uint8_t *emb_pat_1, uint8_t
pos,
291 uint32_t Pcup, uint16_t
context)
300 code_word = vlc_stream->
bit_buf & 0x7f;
309 res_off[
pos] = (uint8_t) (
value & 1);
310 sig_pat[
pos] = (uint8_t) ((
value & 0x00F0) >> 4);
311 emb_pat_k[
pos] = (uint8_t) ((
value & 0x0F00) >> 8);
312 emb_pat_1[
pos] = (uint8_t) ((
value & 0xF000) >> 12);
325 static const uint8_t return_value[8] = { 5, 1, 2, 1, 3, 1, 2, 1 };
326 static const uint8_t drop_bits[8] = { 3, 1, 2, 1, 3, 1, 2, 1 };
336 return return_value[
bits];
345 const uint8_t *refill_array)
347 static const int mask[] = { 1, 31 };
348 static const int drop_bits[] = { 1, 5 };
370 const uint8_t *refill_array)
381 int32_t i_n,
const uint8_t *buf, uint32_t length)
393 int32_t known_1[2],
const uint8_t emb_pat_1[2],
395 uint32_t *mu_n,
const uint8_t *Dcup, uint32_t Pcup,
398 for (
int i = 0;
i < 4;
i++) {
401 known_1[
pos] = (emb_pat_1[
pos] >>
i) & 1;
406 mu_n[n] = (v[
pos][
i] >> 1) + 1;
408 mu_n[n] |= ((uint32_t) (v[
pos][
i] & 1)) << 31;
415 int cond = stream->
pos <= length;
417 if (stream->
bits == 0) {
418 stream->
bits = (stream->
tmp == 0xFF) ? 7 : 8;
423 return (stream->
tmp >> stream->
bits) & 1;
428 if (stream->
bits == 0) {
429 int cond = stream->
pos <= length;
431 stream->
bits = (stream->
tmp == 0xFF) ? 7 : 8;
435 return (stream->
tmp >> stream->
bits) & 1;
444 if (mel_state->
run == 0 && mel_state->
one == 0) {
448 eval =
mel_e[mel_state->
k];
451 mel_state->
run = 1 << eval;
452 mel_state->
k =
FFMIN(12, mel_state->
k + 1);
457 mel_state->
run = (2 * (mel_state->
run)) +
bit;
460 mel_state->
k =
FFMAX(0, mel_state->
k - 1);
464 if (mel_state->
run > 0) {
488 const uint16_t *vlc_table,
const uint8_t *Dcup,
489 uint8_t *sig_pat, uint8_t *res_off, uint8_t *emb_pat_k,
490 uint8_t *emb_pat_1, uint8_t
pos, uint16_t
context,
491 uint32_t Lcup, uint32_t Pcup)
505 res_off, emb_pat_k, emb_pat_1,
pos, Pcup,
511 const uint8_t *block_states)
513 return (block_states[(x1 + 1) * (
width + 2) + (x2 + 1)] >> shift_by) & 1;
518 int value, uint8_t *block_states)
520 block_states[(x1 + 1) * (
width + 2) + (x2 + 1)] |=
value;
528 StateVars *mag_sgn_stream,
const uint8_t *Dcup,
529 uint32_t Lcup, uint32_t Pcup, uint8_t pLSB,
531 uint8_t *block_states)
535 uint16_t context1, context2;
538 uint8_t sig_pat[2] = { 0 };
539 uint8_t res_off[2] = { 0 };
540 uint8_t emb_pat_k[2] = { 0 };
541 uint8_t emb_pat_1[2] = { 0 };
542 uint8_t gamma[2] = { 0 };
544 uint8_t E_n[2] = { 0 };
545 uint8_t E_ne[2] = { 0 };
546 uint8_t E_nw[2] = { 0 };
547 uint8_t E_nf[2] = { 0 };
549 uint8_t max_e[2] = { 0 };
550 uint8_t u_pfx[2] = { 0 };
551 uint8_t u_sfx[2] = { 0 };
552 uint8_t u_ext[2] = { 0 };
562 uint8_t kappa[2] = { 1, 1 };
573 const uint8_t *
vlc_buf = Dcup + Pcup;
576 const uint16_t is_border_x =
width % 2;
577 const uint16_t is_border_y =
height % 2;
582 size_t buf_size = 4 * quad_width * quad_height;
584 uint8_t *sigma_n =
av_calloc(buf_size,
sizeof(uint8_t));
585 uint8_t *
E =
av_calloc(buf_size,
sizeof(uint8_t));
586 uint32_t *mu_n =
av_calloc(buf_size,
sizeof(uint32_t));
588 if (!sigma_n || !
E || !mu_n) {
596 while (q < quad_width - 1) {
606 for (
int i = 0;
i < 4;
i++)
607 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
621 for (
int i = 0;
i < 4;
i++)
622 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
626 context |= sigma_n[4 * q2 + 1];
627 context += sigma_n[4 * q2 + 2] << 1;
628 context += sigma_n[4 * q2 + 3] << 2;
670 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
671 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
680 for (
int i = 0;
i < 4;
i++) {
686 E, mu_n, Dcup, Pcup, pLSB);
689 E, mu_n, Dcup, Pcup, pLSB);
694 if (quad_width % 2 == 1) {
703 for (
int i = 0;
i < 4;
i++)
704 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
708 if (res_off[
J2K_Q1] == 1) {
717 for (
int i = 0;
i < 4;
i++)
721 E, mu_n, Dcup, Pcup, pLSB);
740 for (
int row = 1; row < quad_height; row++) {
741 while ((q - (row * quad_width)) < quad_width - 1 && q < (quad_height * quad_width)) {
744 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
745 context1 += sigma_n[4 * (
q1 - quad_width) + 3] << 2;
748 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
749 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
752 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
756 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
761 for (
int i = 0;
i < 4;
i++)
762 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
764 context2 = sigma_n[4 * (q2 - quad_width) + 1];
765 context2 += sigma_n[4 * (q2 - quad_width) + 3] << 2;
768 context2 |= sigma_n[4 * (q2 - quad_width) - 1];
769 context2 += (sigma_n[4 * q2 - 1] | sigma_n[4 * q2 - 2]) << 1;
772 context2 |= sigma_n[4 * (q2 - quad_width) + 5] << 2;
776 emb_pat_k, emb_pat_1,
J2K_Q2, context2, Lcup,
781 for (
int i = 0;
i < 4;
i++)
782 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
802 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
803 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
815 if (
sp == 0 ||
sp == 1 ||
sp == 2 ||
sp == 4 ||
sp == 8)
822 if (
sp == 0 ||
sp == 1 ||
sp == 2 ||
sp == 4 ||
sp == 8)
825 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
826 E_n[
J2K_Q2] =
E[4 * (q2 - quad_width) + 1];
828 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
829 E_ne[
J2K_Q2] =
E[4 * (q2 - quad_width) + 3];
846 for (
int i = 0;
i < 4;
i++) {
851 E, mu_n, Dcup, Pcup, pLSB);
854 E, mu_n, Dcup, Pcup, pLSB);
859 if (quad_width % 2 == 1) {
863 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
864 context1 += (sigma_n[4 * (
q1 - quad_width) + 3] << 2);
867 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
868 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
871 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
875 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
879 for (
int i = 0;
i < 4;
i++)
880 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
885 if (res_off[
J2K_Q1] == 1) {
897 if (
sp == 0 ||
sp == 1 ||
sp == 2 ||
sp == 4 ||
sp == 8)
900 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
902 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
914 for (
int i = 0;
i < 4;
i++)
918 E, mu_n, Dcup, Pcup, pLSB);
924 for (
int y = 0; y < quad_height; y++) {
925 for (
int x = 0; x < quad_width; x++) {
937 x1 = y != quad_height - 1 || is_border_y == 0;
938 sample_buf[j2 + ((j1 + 1) *
width)] = ((
int32_t)*mu) * x1;
943 x2 = x != quad_width - 1 || is_border_x == 0;
944 sample_buf[(j2 + 1) + (j1 *
width)] = ((
int32_t)*mu) * x2;
950 sample_buf[(j2 + 1) + (j1 + 1) *
width] = ((
int32_t)*mu) * x3;
965 const uint32_t mbr_info, uint8_t causal_cond,
966 uint8_t *block_states,
int width)
1005 int32_t *sample_buf, uint8_t *block_states,
1006 uint8_t *magref_segment, uint32_t magref_length)
1008 for (
int j = j_s; j < j_s +
width; j++) {
1009 uint32_t mbr_info = 0;
1010 for (
int i = i_s;
i < i_s +
height;
i++) {
1011 int modify_state,
cond;
1013 uint8_t causal_cond =
i != (i_s +
height - 1);
1035 uint16_t
height, uint8_t *magref_segment,
1036 uint32_t magref_length, uint8_t pLSB,
1037 int32_t *sample_buf, uint8_t *block_states)
1041 const uint16_t num_v_stripe =
height / 4;
1042 const uint16_t num_h_stripe =
width / 4;
1048 uint16_t
i = 0, j = 0;
1052 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1054 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1056 pLSB, sample_buf, block_states, magref_segment,
1060 last_width =
width % 4;
1063 pLSB, sample_buf, block_states, magref_segment,
1071 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1073 pLSB, sample_buf, block_states, magref_segment,
1077 last_width =
width % 4;
1080 pLSB, sample_buf, block_states, magref_segment,
1089 uint8_t *magref_segment,uint32_t magref_length,
1090 uint8_t pLSB,
int32_t *sample_buf, uint8_t *block_states)
1094 const uint16_t num_v_stripe = block_height / 4;
1096 uint16_t i_start = 0;
1101 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1102 for (
int j = 0; j <
width; j++) {
1103 for (
int i = i_start;
i < i_start +
height;
i++) {
1117 height = block_height % 4;
1118 for (
int j = 0; j <
width; j++) {
1119 for (
int i = i_start;
i < i_start +
height;
i++) {
1133 int width,
int height,
int magp, uint8_t roi_shift)
1149 uint8_t empty_passes;
1162 uint8_t *block_states =
NULL;
1173 memset(
t1->data, 0,
t1->stride *
height *
sizeof(*
t1->data));
1174 memset(
t1->flags, 0,
t1->stride * (
height + 2) *
sizeof(*
t1->flags));
1181 else if (cblk->
length == 0)
1184 empty_passes = p0 * 3;
1185 z_blk = cblk->
npasses - empty_passes;
1195 "Cleanup pass length must be at least 2 bytes in length\n");
1199 Dref = cblk->
data + Lcup;
1200 S_blk = p0 + cblk->
zbp;
1203 Scup = (Dcup[Lcup - 1] << 4) + (Dcup[Lcup - 2] & 0x0F);
1205 if (Scup < 2 || Scup > Lcup || Scup > 4079) {
1214 Dcup[Lcup - 1] = 0xFF;
1215 Dcup[Lcup - 2] |= 0x0F;
1235 if (!sample_buf || !block_states) {
1240 &mag_sgn, Dcup, Lcup, Pcup, pLSB,
width,
1241 height, sample_buf, block_states)) < 0)
1246 pLSB - 1, sample_buf, block_states);
1256 pLSB - 1, sample_buf, block_states)) < 0)
1263 for (
int y = 0; y <
height; y++) {
1264 for (
int x = 0; x <
width; x++) {
1265 n = x + (y *
t1->stride);
1284 0x0016, 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086,
1285 0x003A, 0x0026, 0x00DE, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A,
1286 0x0046, 0x007D, 0x0086, 0x01FD, 0x0026, 0x007E, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026,
1287 0x111D, 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x00EE, 0x0016, 0x00CA, 0x0046, 0x00BD,
1288 0x0086, 0x005A, 0x0026, 0x11FF, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x2AAF, 0x0016,
1289 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086, 0x003A,
1290 0x0026, 0x44EF, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A, 0x0046,
1291 0x007D, 0x0086, 0x01FD, 0x0026, 0x00BE, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026, 0x111D,
1292 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x4CCF, 0x0016, 0x00CA, 0x0046, 0x00BD, 0x0086,
1293 0x005A, 0x0026, 0x00FE, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x006F, 0x0002, 0x0088,
1294 0x0002, 0x005C, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002,
1295 0x007E, 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x888F, 0x0002, 0x0028, 0x0002, 0x00FE,
1296 0x0002, 0x003A, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00BE, 0x0002,
1297 0x0028, 0x0002, 0x00BF, 0x0002, 0x004A, 0x0002, 0x006E, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018,
1298 0x0002, 0x444F, 0x0002, 0x0028, 0x0002, 0x00EE, 0x0002, 0x003A, 0x0002, 0x113F, 0x0002, 0x0088, 0x0002,
1299 0x005C, 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002, 0x006F,
1300 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x009F, 0x0002, 0x0028, 0x0002, 0x00EF, 0x0002,
1301 0x003A, 0x0002, 0x233F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00AF, 0x0002, 0x0028,
1302 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x005F, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018, 0x0002,
1303 0x007F, 0x0002, 0x0028, 0x0002, 0x00DF, 0x0002, 0x003A, 0x0002, 0x111F, 0x0002, 0x0028, 0x0002, 0x005C,
1304 0x0002, 0x008A, 0x0002, 0x00BF, 0x0002, 0x0018, 0x0002, 0x00FE, 0x0002, 0x00CC, 0x0002, 0x007E, 0x0002,
1305 0x0028, 0x0002, 0x8FFF, 0x0002, 0x004A, 0x0002, 0x007F, 0x0002, 0x0018, 0x0002, 0x00DF, 0x0002, 0x00AC,
1306 0x0002, 0x133F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x00BE, 0x0002, 0x0018, 0x0002,
1307 0x44EF, 0x0002, 0x2AAD, 0x0002, 0x006E, 0x0002, 0x0028, 0x0002, 0x15FF, 0x0002, 0x004A, 0x0002, 0x009E,
1308 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x003C, 0x0002, 0x223F, 0x0002, 0x0028, 0x0002, 0x005C, 0x0002,
1309 0x008A, 0x0002, 0x2BBF, 0x0002, 0x0018, 0x0002, 0x04EF, 0x0002, 0x00CC, 0x0002, 0x006F, 0x0002, 0x0028,
1310 0x0002, 0x27FF, 0x0002, 0x004A, 0x0002, 0x009F, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x00AC, 0x0002,
1311 0x444F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x8AAF, 0x0002, 0x0018, 0x0002, 0x00EE,
1312 0x0002, 0x2AAD, 0x0002, 0x005F, 0x0002, 0x0028, 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x888F, 0x0002,
1313 0x0018, 0x0002, 0xAAAF, 0x0002, 0x003C, 0x0002, 0x111F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC,
1314 0x008A, 0x66FF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x8AAF, 0x0004, 0x00FC, 0x0028,
1315 0x133D, 0x0004, 0x00AC, 0x004A, 0x3BBF, 0x0004, 0x2BBD, 0x0018, 0x5FFF, 0x0004, 0x006C, 0x157D, 0x455F,
1316 0x0004, 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x44EF, 0x0004, 0x00CC, 0x0018, 0x4FFF, 0x0004,
1317 0x007C, 0x003A, 0x447F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x00DE, 0x0004, 0x88BD,
1318 0x0018, 0xAFFF, 0x0004, 0x115D, 0x1FFD, 0x444F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC, 0x008A,
1319 0x8CEF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x888F, 0x0004, 0x00FC, 0x0028, 0x133D,
1320 0x0004, 0x00AC, 0x004A, 0x44DF, 0x0004, 0x2BBD, 0x0018, 0x8AFF, 0x0004, 0x006C, 0x157D, 0x006F, 0x0004,
1321 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x00EE, 0x0004, 0x00CC, 0x0018, 0x2EEF, 0x0004, 0x007C,
1322 0x003A, 0x277F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x1BBF, 0x0004, 0x88BD, 0x0018,
1323 0x37FF, 0x0004, 0x115D, 0x1FFD, 0x333F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x4CCF,
1324 0x0002, 0x0048, 0x0002, 0x23FF, 0x0002, 0x001A, 0x0002, 0x888F, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002,
1325 0x002A, 0x0002, 0x00AF, 0x0002, 0x0048, 0x0002, 0x22EF, 0x0002, 0x00AC, 0x0002, 0x005F, 0x0002, 0x0088,
1326 0x0002, 0x444D, 0x0002, 0x00CA, 0x0002, 0xCCCF, 0x0002, 0x0048, 0x0002, 0x00FE, 0x0002, 0x001A, 0x0002,
1327 0x006F, 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009F, 0x0002, 0x0048, 0x0002, 0x00DF,
1328 0x0002, 0x03FD, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x8CCF, 0x0002,
1329 0x0048, 0x0002, 0x11FF, 0x0002, 0x001A, 0x0002, 0x007E, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002, 0x002A,
1330 0x0002, 0x007F, 0x0002, 0x0048, 0x0002, 0x00EE, 0x0002, 0x00AC, 0x0002, 0x003E, 0x0002, 0x0088, 0x0002,
1331 0x444D, 0x0002, 0x00CA, 0x0002, 0x00BE, 0x0002, 0x0048, 0x0002, 0x00BF, 0x0002, 0x001A, 0x0002, 0x003F,
1332 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009E, 0x0002, 0x0048, 0x0002, 0x00DE, 0x0002,
1333 0x03FD, 0x0002, 0x111F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0x3FFF, 0x0004, 0xCFFD,
1334 0x002A, 0x003D, 0x0004, 0x00BC, 0x005A, 0x8DDF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A,
1335 0x99FF, 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x009F, 0x0004, 0x2FFD, 0x0048, 0x007C,
1336 0x0004, 0x44CD, 0x00CA, 0x67FF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x8CCF, 0x0004,
1337 0x4FFD, 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x4EEF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C,
1338 0x001A, 0x222F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0xAFFF, 0x0004, 0xCFFD, 0x002A,
1339 0x003D, 0x0004, 0x00BC, 0x005A, 0x11BF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A, 0x22EF,
1340 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x227F, 0x0004, 0x2FFD, 0x0048, 0x007C, 0x0004,
1341 0x44CD, 0x00CA, 0x5DFF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x006F, 0x0004, 0x4FFD,
1342 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x11DF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C, 0x001A,
1343 0x155F, 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x4DDF, 0x0006, 0x2AAD, 0x005A, 0x67FF,
1344 0x0028, 0x223D, 0x00BC, 0xAAAF, 0x0006, 0x00EC, 0x0018, 0x5FFF, 0x0048, 0x006C, 0x008A, 0xCCCF, 0x0006,
1345 0x009D, 0x00CA, 0x44EF, 0x0028, 0x003C, 0x8FFD, 0x137F, 0x0006, 0x8EED, 0x0018, 0x1FFF, 0x0048, 0x007C,
1346 0x00AA, 0x4CCF, 0x0006, 0x227D, 0x005A, 0x1DDF, 0x0028, 0x444D, 0x4FFD, 0x155F, 0x0006, 0x00DC, 0x0018,
1347 0x2EEF, 0x0048, 0x445D, 0x008A, 0x22BF, 0x0006, 0x009C, 0x00CA, 0x8CDF, 0x0028, 0x222D, 0x2FFD, 0x226F,
1348 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x1BBF, 0x0006, 0x2AAD, 0x005A, 0x33FF, 0x0028,
1349 0x223D, 0x00BC, 0x8AAF, 0x0006, 0x00EC, 0x0018, 0x9BFF, 0x0048, 0x006C, 0x008A, 0x8ABF, 0x0006, 0x009D,
1350 0x00CA, 0x4EEF, 0x0028, 0x003C, 0x8FFD, 0x466F, 0x0006, 0x8EED, 0x0018, 0xCFFF, 0x0048, 0x007C, 0x00AA,
1351 0x8CCF, 0x0006, 0x227D, 0x005A, 0xAEEF, 0x0028, 0x444D, 0x4FFD, 0x477F, 0x0006, 0x00DC, 0x0018, 0xAFFF,
1352 0x0048, 0x445D, 0x008A, 0x2BBF, 0x0006, 0x009C, 0x00CA, 0x44DF, 0x0028, 0x222D, 0x2FFD, 0x133F, 0x00F6,
1353 0xAFFD, 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x11DF, 0x00F6, 0x45DD, 0x2FFB, 0x4EEF, 0x00DA, 0x177D,
1354 0xCFFD, 0x377F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x1BBF, 0x00F6, 0x00CD, 0x00BA,
1355 0x8DDF, 0x4FFB, 0x006C, 0x9BFD, 0x455F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x009F,
1356 0x00F6, 0x00AD, 0x2FFB, 0x7FFF, 0x00DA, 0x004C, 0x5FFD, 0x477F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008,
1357 0x008C, 0x005A, 0x888F, 0x00F6, 0x00CC, 0x00BA, 0x2EEF, 0x4FFB, 0x115D, 0x8AED, 0x113F, 0x00F6, 0xAFFD,
1358 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x1DDF, 0x00F6, 0x45DD, 0x2FFB, 0xBFFF, 0x00DA, 0x177D, 0xCFFD,
1359 0x447F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x277F, 0x00F6, 0x00CD, 0x00BA, 0x22EF,
1360 0x4FFB, 0x006C, 0x9BFD, 0x444F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x11BF, 0x00F6,
1361 0x00AD, 0x2FFB, 0xFFFF, 0x00DA, 0x004C, 0x5FFD, 0x233F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008, 0x008C,
1362 0x005A, 0x006F, 0x00F6, 0x00CC, 0x00BA, 0x8BBF, 0x4FFB, 0x115D, 0x8AED, 0x222F};
1365 0x0026, 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x8DDF, 0x0026, 0x01BD, 0x0046, 0x5FFF, 0x0086,
1366 0x027D, 0x005A, 0x155F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0xCCCF, 0x0026, 0x2EFD,
1367 0x0046, 0x99FF, 0x0086, 0x009C, 0x00CA, 0x133F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018,
1368 0x11DF, 0x0026, 0x4FFD, 0x0046, 0xCFFF, 0x0086, 0x009D, 0x005A, 0x007E, 0x0026, 0x003A, 0x0046, 0x1FFF,
1369 0x0086, 0x88AD, 0x0018, 0x00BE, 0x0026, 0x8FFD, 0x0046, 0x4EEF, 0x0086, 0x888D, 0x00CA, 0x111F, 0x0026,
1370 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x45DF, 0x0026, 0x01BD, 0x0046, 0x22EF, 0x0086, 0x027D,
1371 0x005A, 0x227F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0x11BF, 0x0026, 0x2EFD, 0x0046,
1372 0x00FE, 0x0086, 0x009C, 0x00CA, 0x223F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018, 0x00DE,
1373 0x0026, 0x4FFD, 0x0046, 0xABFF, 0x0086, 0x009D, 0x005A, 0x006F, 0x0026, 0x003A, 0x0046, 0x6EFF, 0x0086,
1374 0x88AD, 0x0018, 0x2AAF, 0x0026, 0x8FFD, 0x0046, 0x00EE, 0x0086, 0x888D, 0x00CA, 0x222F, 0x0004, 0x00CA,
1375 0x0088, 0x027D, 0x0004, 0x4CCD, 0x0028, 0x00FE, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018,
1376 0x00DE, 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x11DF, 0x0004, 0x8AED, 0x0048, 0x003C,
1377 0x0004, 0x888D, 0x0018, 0x111F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x88FF, 0x0004,
1378 0x8BFD, 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x00BE, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC,
1379 0x0028, 0x00EE, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x007E, 0x0004, 0x00CA, 0x0088,
1380 0x027D, 0x0004, 0x4CCD, 0x0028, 0x1FFF, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018, 0x11BF,
1381 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x22EF, 0x0004, 0x8AED, 0x0048, 0x003C, 0x0004,
1382 0x888D, 0x0018, 0x227F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x4EEF, 0x0004, 0x8BFD,
1383 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x2AAF, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC, 0x0028,
1384 0x8DDF, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x155F, 0x0004, 0x005A, 0x0088, 0x006C,
1385 0x0004, 0x88DD, 0x0028, 0x23FF, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x00BE, 0x0004,
1386 0x137D, 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x00DE, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D,
1387 0x0018, 0x007E, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x00EE, 0x0004, 0x1FFD, 0x0048,
1388 0x003C, 0x0004, 0x00AC, 0x0018, 0x555F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x477F,
1389 0x0004, 0x4CDD, 0x0048, 0x8FFF, 0x0004, 0x009C, 0x0018, 0x222F, 0x0004, 0x005A, 0x0088, 0x006C, 0x0004,
1390 0x88DD, 0x0028, 0x00FE, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x888F, 0x0004, 0x137D,
1391 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x8CCF, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D, 0x0018,
1392 0x006F, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x1DDF, 0x0004, 0x1FFD, 0x0048, 0x003C,
1393 0x0004, 0x00AC, 0x0018, 0x227F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x22BF, 0x0004,
1394 0x4CDD, 0x0048, 0x22EF, 0x0004, 0x009C, 0x0018, 0x233F, 0x0006, 0x4DDD, 0x4FFB, 0xCFFF, 0x0018, 0x113D,
1395 0x005A, 0x888F, 0x0006, 0x23BD, 0x008A, 0x00EE, 0x002A, 0x155D, 0xAAFD, 0x277F, 0x0006, 0x44CD, 0x8FFB,
1396 0x44EF, 0x0018, 0x467D, 0x004A, 0x2AAF, 0x0006, 0x00AC, 0x555B, 0x99DF, 0x1FFB, 0x003C, 0x5FFD, 0x266F,
1397 0x0006, 0x1DDD, 0x4FFB, 0x6EFF, 0x0018, 0x177D, 0x005A, 0x1BBF, 0x0006, 0x88AD, 0x008A, 0x5DDF, 0x002A,
1398 0x444D, 0x2FFD, 0x667F, 0x0006, 0x00CC, 0x8FFB, 0x2EEF, 0x0018, 0x455D, 0x004A, 0x119F, 0x0006, 0x009C,
1399 0x555B, 0x8CCF, 0x1FFB, 0x111D, 0x8CED, 0x006E, 0x0006, 0x4DDD, 0x4FFB, 0x3FFF, 0x0018, 0x113D, 0x005A,
1400 0x11BF, 0x0006, 0x23BD, 0x008A, 0x8DDF, 0x002A, 0x155D, 0xAAFD, 0x222F, 0x0006, 0x44CD, 0x8FFB, 0x00FE,
1401 0x0018, 0x467D, 0x004A, 0x899F, 0x0006, 0x00AC, 0x555B, 0x00DE, 0x1FFB, 0x003C, 0x5FFD, 0x446F, 0x0006,
1402 0x1DDD, 0x4FFB, 0x9BFF, 0x0018, 0x177D, 0x005A, 0x00BE, 0x0006, 0x88AD, 0x008A, 0xCDDF, 0x002A, 0x444D,
1403 0x2FFD, 0x007E, 0x0006, 0x00CC, 0x8FFB, 0x4EEF, 0x0018, 0x455D, 0x004A, 0x377F, 0x0006, 0x009C, 0x555B,
1404 0x8BBF, 0x1FFB, 0x111D, 0x8CED, 0x233F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x11DF,
1405 0x0004, 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x2BBF, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004,
1406 0x00CC, 0x0028, 0x00EE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x007E, 0x0004, 0x00AA,
1407 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x00FE, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018,
1408 0xAAAF, 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x4CCF, 0x0004, 0x44ED, 0x0048, 0x4FFF,
1409 0x0004, 0x223D, 0x0018, 0x111F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x99FF, 0x0004,
1410 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x00BE, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004, 0x00CC,
1411 0x0028, 0x00DE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x444F, 0x0004, 0x00AA, 0x0088,
1412 0x006D, 0x0004, 0x88CD, 0x0028, 0x2EEF, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018, 0x447F,
1413 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x009F, 0x0004, 0x44ED, 0x0048, 0x67FF, 0x0004,
1414 0x223D, 0x0018, 0x133F, 0x0006, 0x00CC, 0x008A, 0x9DFF, 0x2FFB, 0x467D, 0x1FFD, 0x99BF, 0x0006, 0x2AAD,
1415 0x002A, 0x66EF, 0x4FFB, 0x005C, 0x2EED, 0x377F, 0x0006, 0x89BD, 0x004A, 0x00FE, 0x8FFB, 0x006C, 0x67FD,
1416 0x889F, 0x0006, 0x888D, 0x001A, 0x5DDF, 0x00AA, 0x222D, 0x89DD, 0x444F, 0x0006, 0x2BBD, 0x008A, 0xCFFF,
1417 0x2FFB, 0x226D, 0x009C, 0x00BE, 0x0006, 0xAAAD, 0x002A, 0x1DDF, 0x4FFB, 0x003C, 0x4DDD, 0x466F, 0x0006,
1418 0x8AAD, 0x004A, 0xAEEF, 0x8FFB, 0x445D, 0x8EED, 0x177F, 0x0006, 0x233D, 0x001A, 0x4CCF, 0x00AA, 0xAFFF,
1419 0x88CD, 0x133F, 0x0006, 0x00CC, 0x008A, 0x77FF, 0x2FFB, 0x467D, 0x1FFD, 0x3BBF, 0x0006, 0x2AAD, 0x002A,
1420 0x00EE, 0x4FFB, 0x005C, 0x2EED, 0x007E, 0x0006, 0x89BD, 0x004A, 0x4EEF, 0x8FFB, 0x006C, 0x67FD, 0x667F,
1421 0x0006, 0x888D, 0x001A, 0x00DE, 0x00AA, 0x222D, 0x89DD, 0x333F, 0x0006, 0x2BBD, 0x008A, 0x57FF, 0x2FFB,
1422 0x226D, 0x009C, 0x199F, 0x0006, 0xAAAD, 0x002A, 0x99DF, 0x4FFB, 0x003C, 0x4DDD, 0x155F, 0x0006, 0x8AAD,
1423 0x004A, 0xCEEF, 0x8FFB, 0x445D, 0x8EED, 0x277F, 0x0006, 0x233D, 0x001A, 0x1BBF, 0x00AA, 0x3FFF, 0x88CD,
1424 0x111F, 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0xCCCF, 0x0006, 0x19BD, 0x004A, 0x22EF,
1425 0x002A, 0x222D, 0x3FFD, 0x888F, 0x0006, 0x00CC, 0x008A, 0x00FE, 0x0018, 0x115D, 0xCFFD, 0x8AAF, 0x0006,
1426 0x00AC, 0x003A, 0x8CDF, 0x1FFB, 0x133D, 0x66FD, 0x466F, 0x0006, 0x8CCD, 0x2FFB, 0x5FFF, 0x0018, 0x006C,
1427 0x4FFD, 0xABBF, 0x0006, 0x22AD, 0x004A, 0x00EE, 0x002A, 0x233D, 0xAEFD, 0x377F, 0x0006, 0x2BBD, 0x008A,
1428 0x55DF, 0x0018, 0x005C, 0x177D, 0x119F, 0x0006, 0x009C, 0x003A, 0x4CCF, 0x1FFB, 0x333D, 0x8EED, 0x444F,
1429 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0x99BF, 0x0006, 0x19BD, 0x004A, 0x2EEF, 0x002A,
1430 0x222D, 0x3FFD, 0x667F, 0x0006, 0x00CC, 0x008A, 0x4EEF, 0x0018, 0x115D, 0xCFFD, 0x899F, 0x0006, 0x00AC,
1431 0x003A, 0x00DE, 0x1FFB, 0x133D, 0x66FD, 0x226F, 0x0006, 0x8CCD, 0x2FFB, 0x9BFF, 0x0018, 0x006C, 0x4FFD,
1432 0x00BE, 0x0006, 0x22AD, 0x004A, 0x1DDF, 0x002A, 0x233D, 0xAEFD, 0x007E, 0x0006, 0x2BBD, 0x008A, 0xCEEF,
1433 0x0018, 0x005C, 0x177D, 0x277F, 0x0006, 0x009C, 0x003A, 0x8BBF, 0x1FFB, 0x333D, 0x8EED, 0x455F, 0x1FF9,
1434 0x1DDD, 0xAFFB, 0x00DE, 0x8FF9, 0x001C, 0xFFFB, 0x477F, 0x4FF9, 0x177D, 0x3FFB, 0x3BBF, 0x2FF9, 0xAEEF,
1435 0x8EED, 0x444F, 0x1FF9, 0x22AD, 0x000A, 0x8BBF, 0x8FF9, 0x00FE, 0xCFFD, 0x007E, 0x4FF9, 0x115D, 0x5FFB,
1436 0x577F, 0x2FF9, 0x8DDF, 0x2EED, 0x333F, 0x1FF9, 0x2BBD, 0xAFFB, 0x88CF, 0x8FF9, 0xBFFF, 0xFFFB, 0x377F,
1437 0x4FF9, 0x006D, 0x3FFB, 0x00BE, 0x2FF9, 0x66EF, 0x9FFD, 0x133F, 0x1FF9, 0x009D, 0x000A, 0xABBF, 0x8FF9,
1438 0xDFFF, 0x6FFD, 0x006E, 0x4FF9, 0x002C, 0x5FFB, 0x888F, 0x2FF9, 0xCDDF, 0x4DDD, 0x222F, 0x1FF9, 0x1DDD,
1439 0xAFFB, 0x4CCF, 0x8FF9, 0x001C, 0xFFFB, 0x277F, 0x4FF9, 0x177D, 0x3FFB, 0x99BF, 0x2FF9, 0xCEEF, 0x8EED,
1440 0x004E, 0x1FF9, 0x22AD, 0x000A, 0x00AE, 0x8FF9, 0x7FFF, 0xCFFD, 0x005E, 0x4FF9, 0x115D, 0x5FFB, 0x009E,
1441 0x2FF9, 0x5DDF, 0x2EED, 0x003E, 0x1FF9, 0x2BBD, 0xAFFB, 0x00CE, 0x8FF9, 0xEFFF, 0xFFFB, 0x667F, 0x4FF9,
1442 0x006D, 0x3FFB, 0x8AAF, 0x2FF9, 0x00EE, 0x9FFD, 0x233F, 0x1FF9, 0x009D, 0x000A, 0x1BBF, 0x8FF9, 0x4EEF,
1443 0x6FFD, 0x455F, 0x4FF9, 0x002C, 0x5FFB, 0x008E, 0x2FF9, 0x99DF, 0x4DDD, 0x111F};