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 };
570 uint8_t *sigma, *sigma_n, *
E;
573 const uint8_t *
vlc_buf = Dcup + Pcup;
581 int maxbp = cblk->
zbp + 2;
584 const uint16_t is_border_x =
width % 2;
585 const uint16_t is_border_y =
height % 2;
590 size_t buf_size = 4 * quad_width * quad_height;
596 sigma_n =
av_calloc(buf_size,
sizeof(uint8_t));
598 mu_n =
av_calloc(buf_size,
sizeof(uint32_t));
600 if (!sigma_n || !
E || !mu_n) {
608 while (q < quad_width - 1) {
618 for (
int i = 0;
i < 4;
i++)
619 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
633 for (
int i = 0;
i < 4;
i++)
634 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
638 context |= sigma_n[4 * q2 + 1];
639 context += sigma_n[4 * q2 + 2] << 1;
640 context += sigma_n[4 * q2 + 3] << 2;
682 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
683 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
696 for (
int i = 0;
i < 4;
i++) {
702 E, mu_n, Dcup, Pcup, pLSB);
705 E, mu_n, Dcup, Pcup, pLSB);
710 if (quad_width % 2 == 1) {
719 for (
int i = 0;
i < 4;
i++)
720 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
724 if (res_off[
J2K_Q1] == 1) {
737 for (
int i = 0;
i < 4;
i++)
741 E, mu_n, Dcup, Pcup, pLSB);
760 for (
int row = 1; row < quad_height; row++) {
761 while ((q - (row * quad_width)) < quad_width - 1 && q < (quad_height * quad_width)) {
764 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
765 context1 += sigma_n[4 * (
q1 - quad_width) + 3] << 2;
768 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
769 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
772 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
776 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
781 for (
int i = 0;
i < 4;
i++)
782 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
784 context2 = sigma_n[4 * (q2 - quad_width) + 1];
785 context2 += sigma_n[4 * (q2 - quad_width) + 3] << 2;
788 context2 |= sigma_n[4 * (q2 - quad_width) - 1];
789 context2 += (sigma_n[4 * q2 - 1] | sigma_n[4 * q2 - 2]) << 1;
792 context2 |= sigma_n[4 * (q2 - quad_width) + 5] << 2;
796 emb_pat_k, emb_pat_1,
J2K_Q2, context2, Lcup,
801 for (
int i = 0;
i < 4;
i++)
802 sigma_n[4 * q2 +
i] = (sig_pat[
J2K_Q2] >>
i) & 1;
822 }
else if (res_off[
J2K_Q1] == 1 || res_off[
J2K_Q2] == 1) {
823 uint8_t
pos = res_off[
J2K_Q1] == 1 ? 0 : 1;
835 if (
sp == 0 ||
sp == 1 ||
sp == 2 ||
sp == 4 ||
sp == 8)
842 if (
sp == 0 ||
sp == 1 ||
sp == 2 ||
sp == 4 ||
sp == 8)
845 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
846 E_n[
J2K_Q2] =
E[4 * (q2 - quad_width) + 1];
848 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
849 E_ne[
J2K_Q2] =
E[4 * (q2 - quad_width) + 3];
870 for (
int i = 0;
i < 4;
i++) {
875 E, mu_n, Dcup, Pcup, pLSB);
878 E, mu_n, Dcup, Pcup, pLSB);
883 if (quad_width % 2 == 1) {
887 context1 = sigma_n[4 * (
q1 - quad_width) + 1];
888 context1 += (sigma_n[4 * (
q1 - quad_width) + 3] << 2);
891 context1 |= sigma_n[4 * (
q1 - quad_width) - 1];
892 context1 += (sigma_n[4 *
q1 - 1] | sigma_n[4 *
q1 - 2]) << 1;
895 context1 |= sigma_n[4 * (
q1 - quad_width) + 5] << 2;
899 emb_pat_k, emb_pat_1,
J2K_Q1, context1, Lcup,
903 for (
int i = 0;
i < 4;
i++)
904 sigma_n[4 *
q1 +
i] = (sig_pat[
J2K_Q1] >>
i) & 1;
909 if (res_off[
J2K_Q1] == 1) {
921 if (
sp == 0 ||
sp == 1 ||
sp == 2 ||
sp == 4 ||
sp == 8)
924 E_n[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 1];
926 E_ne[
J2K_Q1] =
E[4 * (
q1 - quad_width) + 3];
942 for (
int i = 0;
i < 4;
i++)
946 E, mu_n, Dcup, Pcup, pLSB);
952 for (
int y = 0; y < quad_height; y++) {
953 for (
int x = 0; x < quad_width; x++) {
965 x1 = y != quad_height - 1 || is_border_y == 0;
966 sample_buf[j2 + ((j1 + 1) *
width)] = ((
int32_t)*mu) * x1;
971 x2 = x != quad_width - 1 || is_border_x == 0;
972 sample_buf[(j2 + 1) + (j1 *
width)] = ((
int32_t)*mu) * x2;
978 sample_buf[(j2 + 1) + (j1 + 1) *
width] = ((
int32_t)*mu) * x3;
993 const uint32_t mbr_info, uint8_t causal_cond,
994 uint8_t *block_states,
int width)
1033 int32_t *sample_buf, uint8_t *block_states,
1034 uint8_t *magref_segment, uint32_t magref_length)
1036 for (
int j = j_s; j < j_s +
width; j++) {
1037 uint32_t mbr_info = 0;
1038 for (
int i = i_s;
i < i_s +
height;
i++) {
1039 int modify_state,
cond;
1041 uint8_t causal_cond =
i != (i_s +
height - 1);
1063 uint16_t
height, uint8_t *magref_segment,
1064 uint32_t magref_length, uint8_t pLSB,
1065 int32_t *sample_buf, uint8_t *block_states)
1069 const uint16_t num_v_stripe =
height / 4;
1070 const uint16_t num_h_stripe =
width / 4;
1076 uint16_t
i = 0, j = 0;
1080 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1082 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1084 pLSB, sample_buf, block_states, magref_segment,
1088 last_width =
width % 4;
1091 pLSB, sample_buf, block_states, magref_segment,
1099 for (
int n2 = 0; n2 < num_h_stripe; n2++) {
1101 pLSB, sample_buf, block_states, magref_segment,
1105 last_width =
width % 4;
1108 pLSB, sample_buf, block_states, magref_segment,
1117 uint8_t *magref_segment,uint32_t magref_length,
1118 uint8_t pLSB,
int32_t *sample_buf, uint8_t *block_states)
1122 const uint16_t num_v_stripe = block_height / 4;
1124 uint16_t i_start = 0;
1129 for (
int n1 = 0; n1 < num_v_stripe; n1++) {
1130 for (
int j = 0; j <
width; j++) {
1131 for (
int i = i_start;
i < i_start +
height;
i++) {
1145 height = block_height % 4;
1146 for (
int j = 0; j <
width; j++) {
1147 for (
int i = i_start;
i < i_start +
height;
i++) {
1161 int width,
int height,
int magp, uint8_t roi_shift)
1177 uint8_t empty_passes;
1190 uint8_t *block_states =
NULL;
1204 memset(
t1->data, 0,
t1->stride *
height *
sizeof(*
t1->data));
1205 memset(
t1->flags, 0,
t1->stride * (
height + 2) *
sizeof(*
t1->flags));
1212 else if (cblk->
length == 0)
1215 empty_passes = p0 * 3;
1216 z_blk = cblk->
npasses - empty_passes;
1226 "Cleanup pass length must be at least 2 bytes in length\n");
1230 Dref = cblk->
data + Lcup;
1231 S_blk = p0 + cblk->
zbp;
1234 Scup = (Dcup[Lcup - 1] << 4) + (Dcup[Lcup - 2] & 0x0F);
1236 if (Scup < 2 || Scup > Lcup || Scup > 4079) {
1245 Dcup[Lcup - 1] = 0xFF;
1246 Dcup[Lcup - 2] |= 0x0F;
1266 if (!sample_buf || !block_states) {
1271 &mag_sgn, Dcup, Lcup, Pcup, pLSB,
width,
1272 height, sample_buf, block_states)) < 0) {
1279 pLSB - 1, sample_buf, block_states);
1289 pLSB - 1, sample_buf, block_states)) < 0)
1296 for (
int y = 0; y <
height; y++) {
1297 for (
int x = 0; x <
width; x++) {
1298 n = x + (y *
t1->stride);
1317 0x0016, 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086,
1318 0x003A, 0x0026, 0x00DE, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A,
1319 0x0046, 0x007D, 0x0086, 0x01FD, 0x0026, 0x007E, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026,
1320 0x111D, 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x00EE, 0x0016, 0x00CA, 0x0046, 0x00BD,
1321 0x0086, 0x005A, 0x0026, 0x11FF, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x2AAF, 0x0016,
1322 0x006A, 0x0046, 0x00DD, 0x0086, 0x888B, 0x0026, 0x444D, 0x0016, 0x00AA, 0x0046, 0x88AD, 0x0086, 0x003A,
1323 0x0026, 0x44EF, 0x0016, 0x00CA, 0x0046, 0x009D, 0x0086, 0x005A, 0x0026, 0x222D, 0x0016, 0x009A, 0x0046,
1324 0x007D, 0x0086, 0x01FD, 0x0026, 0x00BE, 0x0016, 0x006A, 0x0046, 0x88CD, 0x0086, 0x888B, 0x0026, 0x111D,
1325 0x0016, 0x00AA, 0x0046, 0x005D, 0x0086, 0x003A, 0x0026, 0x4CCF, 0x0016, 0x00CA, 0x0046, 0x00BD, 0x0086,
1326 0x005A, 0x0026, 0x00FE, 0x0016, 0x009A, 0x0046, 0x003D, 0x0086, 0x04ED, 0x0026, 0x006F, 0x0002, 0x0088,
1327 0x0002, 0x005C, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002,
1328 0x007E, 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x888F, 0x0002, 0x0028, 0x0002, 0x00FE,
1329 0x0002, 0x003A, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00BE, 0x0002,
1330 0x0028, 0x0002, 0x00BF, 0x0002, 0x004A, 0x0002, 0x006E, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018,
1331 0x0002, 0x444F, 0x0002, 0x0028, 0x0002, 0x00EE, 0x0002, 0x003A, 0x0002, 0x113F, 0x0002, 0x0088, 0x0002,
1332 0x005C, 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x0028, 0x0002, 0x009C, 0x0002, 0x004A, 0x0002, 0x006F,
1333 0x0002, 0x0088, 0x0002, 0x00CC, 0x0002, 0x0018, 0x0002, 0x009F, 0x0002, 0x0028, 0x0002, 0x00EF, 0x0002,
1334 0x003A, 0x0002, 0x233F, 0x0002, 0x0088, 0x0002, 0x04FD, 0x0002, 0x0018, 0x0002, 0x00AF, 0x0002, 0x0028,
1335 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x005F, 0x0002, 0x0088, 0x0002, 0x00AC, 0x0002, 0x0018, 0x0002,
1336 0x007F, 0x0002, 0x0028, 0x0002, 0x00DF, 0x0002, 0x003A, 0x0002, 0x111F, 0x0002, 0x0028, 0x0002, 0x005C,
1337 0x0002, 0x008A, 0x0002, 0x00BF, 0x0002, 0x0018, 0x0002, 0x00FE, 0x0002, 0x00CC, 0x0002, 0x007E, 0x0002,
1338 0x0028, 0x0002, 0x8FFF, 0x0002, 0x004A, 0x0002, 0x007F, 0x0002, 0x0018, 0x0002, 0x00DF, 0x0002, 0x00AC,
1339 0x0002, 0x133F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x00BE, 0x0002, 0x0018, 0x0002,
1340 0x44EF, 0x0002, 0x2AAD, 0x0002, 0x006E, 0x0002, 0x0028, 0x0002, 0x15FF, 0x0002, 0x004A, 0x0002, 0x009E,
1341 0x0002, 0x0018, 0x0002, 0x00CF, 0x0002, 0x003C, 0x0002, 0x223F, 0x0002, 0x0028, 0x0002, 0x005C, 0x0002,
1342 0x008A, 0x0002, 0x2BBF, 0x0002, 0x0018, 0x0002, 0x04EF, 0x0002, 0x00CC, 0x0002, 0x006F, 0x0002, 0x0028,
1343 0x0002, 0x27FF, 0x0002, 0x004A, 0x0002, 0x009F, 0x0002, 0x0018, 0x0002, 0x00DE, 0x0002, 0x00AC, 0x0002,
1344 0x444F, 0x0002, 0x0028, 0x0002, 0x222D, 0x0002, 0x008A, 0x0002, 0x8AAF, 0x0002, 0x0018, 0x0002, 0x00EE,
1345 0x0002, 0x2AAD, 0x0002, 0x005F, 0x0002, 0x0028, 0x0002, 0x44FF, 0x0002, 0x004A, 0x0002, 0x888F, 0x0002,
1346 0x0018, 0x0002, 0xAAAF, 0x0002, 0x003C, 0x0002, 0x111F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC,
1347 0x008A, 0x66FF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x8AAF, 0x0004, 0x00FC, 0x0028,
1348 0x133D, 0x0004, 0x00AC, 0x004A, 0x3BBF, 0x0004, 0x2BBD, 0x0018, 0x5FFF, 0x0004, 0x006C, 0x157D, 0x455F,
1349 0x0004, 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x44EF, 0x0004, 0x00CC, 0x0018, 0x4FFF, 0x0004,
1350 0x007C, 0x003A, 0x447F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x00DE, 0x0004, 0x88BD,
1351 0x0018, 0xAFFF, 0x0004, 0x115D, 0x1FFD, 0x444F, 0x0004, 0x8FFD, 0x0028, 0x005C, 0x0004, 0x00BC, 0x008A,
1352 0x8CEF, 0x0004, 0x00CD, 0x0018, 0x111D, 0x0004, 0x009C, 0x003A, 0x888F, 0x0004, 0x00FC, 0x0028, 0x133D,
1353 0x0004, 0x00AC, 0x004A, 0x44DF, 0x0004, 0x2BBD, 0x0018, 0x8AFF, 0x0004, 0x006C, 0x157D, 0x006F, 0x0004,
1354 0x2FFD, 0x0028, 0x222D, 0x0004, 0x22AD, 0x008A, 0x00EE, 0x0004, 0x00CC, 0x0018, 0x2EEF, 0x0004, 0x007C,
1355 0x003A, 0x277F, 0x0004, 0x04DD, 0x0028, 0x233D, 0x0004, 0x009D, 0x004A, 0x1BBF, 0x0004, 0x88BD, 0x0018,
1356 0x37FF, 0x0004, 0x115D, 0x1FFD, 0x333F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x4CCF,
1357 0x0002, 0x0048, 0x0002, 0x23FF, 0x0002, 0x001A, 0x0002, 0x888F, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002,
1358 0x002A, 0x0002, 0x00AF, 0x0002, 0x0048, 0x0002, 0x22EF, 0x0002, 0x00AC, 0x0002, 0x005F, 0x0002, 0x0088,
1359 0x0002, 0x444D, 0x0002, 0x00CA, 0x0002, 0xCCCF, 0x0002, 0x0048, 0x0002, 0x00FE, 0x0002, 0x001A, 0x0002,
1360 0x006F, 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009F, 0x0002, 0x0048, 0x0002, 0x00DF,
1361 0x0002, 0x03FD, 0x0002, 0x222F, 0x0002, 0x0088, 0x0002, 0x02ED, 0x0002, 0x00CA, 0x0002, 0x8CCF, 0x0002,
1362 0x0048, 0x0002, 0x11FF, 0x0002, 0x001A, 0x0002, 0x007E, 0x0002, 0x0088, 0x0002, 0x006C, 0x0002, 0x002A,
1363 0x0002, 0x007F, 0x0002, 0x0048, 0x0002, 0x00EE, 0x0002, 0x00AC, 0x0002, 0x003E, 0x0002, 0x0088, 0x0002,
1364 0x444D, 0x0002, 0x00CA, 0x0002, 0x00BE, 0x0002, 0x0048, 0x0002, 0x00BF, 0x0002, 0x001A, 0x0002, 0x003F,
1365 0x0002, 0x0088, 0x0002, 0x005C, 0x0002, 0x002A, 0x0002, 0x009E, 0x0002, 0x0048, 0x0002, 0x00DE, 0x0002,
1366 0x03FD, 0x0002, 0x111F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0x3FFF, 0x0004, 0xCFFD,
1367 0x002A, 0x003D, 0x0004, 0x00BC, 0x005A, 0x8DDF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A,
1368 0x99FF, 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x009F, 0x0004, 0x2FFD, 0x0048, 0x007C,
1369 0x0004, 0x44CD, 0x00CA, 0x67FF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x8CCF, 0x0004,
1370 0x4FFD, 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x4EEF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C,
1371 0x001A, 0x222F, 0x0004, 0x8AED, 0x0048, 0x888D, 0x0004, 0x00DC, 0x00CA, 0xAFFF, 0x0004, 0xCFFD, 0x002A,
1372 0x003D, 0x0004, 0x00BC, 0x005A, 0x11BF, 0x0004, 0x8FFD, 0x0048, 0x006C, 0x0004, 0x027D, 0x008A, 0x22EF,
1373 0x0004, 0x00EC, 0x00FA, 0x003C, 0x0004, 0x00AC, 0x001A, 0x227F, 0x0004, 0x2FFD, 0x0048, 0x007C, 0x0004,
1374 0x44CD, 0x00CA, 0x5DFF, 0x0004, 0x1FFD, 0x002A, 0x444D, 0x0004, 0x00AD, 0x005A, 0x006F, 0x0004, 0x4FFD,
1375 0x0048, 0x445D, 0x0004, 0x01BD, 0x008A, 0x11DF, 0x0004, 0x45DD, 0x00FA, 0x111D, 0x0004, 0x009C, 0x001A,
1376 0x155F, 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x4DDF, 0x0006, 0x2AAD, 0x005A, 0x67FF,
1377 0x0028, 0x223D, 0x00BC, 0xAAAF, 0x0006, 0x00EC, 0x0018, 0x5FFF, 0x0048, 0x006C, 0x008A, 0xCCCF, 0x0006,
1378 0x009D, 0x00CA, 0x44EF, 0x0028, 0x003C, 0x8FFD, 0x137F, 0x0006, 0x8EED, 0x0018, 0x1FFF, 0x0048, 0x007C,
1379 0x00AA, 0x4CCF, 0x0006, 0x227D, 0x005A, 0x1DDF, 0x0028, 0x444D, 0x4FFD, 0x155F, 0x0006, 0x00DC, 0x0018,
1380 0x2EEF, 0x0048, 0x445D, 0x008A, 0x22BF, 0x0006, 0x009C, 0x00CA, 0x8CDF, 0x0028, 0x222D, 0x2FFD, 0x226F,
1381 0x0006, 0x00FC, 0x0018, 0x111D, 0x0048, 0x888D, 0x00AA, 0x1BBF, 0x0006, 0x2AAD, 0x005A, 0x33FF, 0x0028,
1382 0x223D, 0x00BC, 0x8AAF, 0x0006, 0x00EC, 0x0018, 0x9BFF, 0x0048, 0x006C, 0x008A, 0x8ABF, 0x0006, 0x009D,
1383 0x00CA, 0x4EEF, 0x0028, 0x003C, 0x8FFD, 0x466F, 0x0006, 0x8EED, 0x0018, 0xCFFF, 0x0048, 0x007C, 0x00AA,
1384 0x8CCF, 0x0006, 0x227D, 0x005A, 0xAEEF, 0x0028, 0x444D, 0x4FFD, 0x477F, 0x0006, 0x00DC, 0x0018, 0xAFFF,
1385 0x0048, 0x445D, 0x008A, 0x2BBF, 0x0006, 0x009C, 0x00CA, 0x44DF, 0x0028, 0x222D, 0x2FFD, 0x133F, 0x00F6,
1386 0xAFFD, 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x11DF, 0x00F6, 0x45DD, 0x2FFB, 0x4EEF, 0x00DA, 0x177D,
1387 0xCFFD, 0x377F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x1BBF, 0x00F6, 0x00CD, 0x00BA,
1388 0x8DDF, 0x4FFB, 0x006C, 0x9BFD, 0x455F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x009F,
1389 0x00F6, 0x00AD, 0x2FFB, 0x7FFF, 0x00DA, 0x004C, 0x5FFD, 0x477F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008,
1390 0x008C, 0x005A, 0x888F, 0x00F6, 0x00CC, 0x00BA, 0x2EEF, 0x4FFB, 0x115D, 0x8AED, 0x113F, 0x00F6, 0xAFFD,
1391 0x1FFB, 0x003C, 0x0008, 0x23BD, 0x007A, 0x1DDF, 0x00F6, 0x45DD, 0x2FFB, 0xBFFF, 0x00DA, 0x177D, 0xCFFD,
1392 0x447F, 0x00F6, 0x3FFD, 0x8FFB, 0x111D, 0x0008, 0x009C, 0x005A, 0x277F, 0x00F6, 0x00CD, 0x00BA, 0x22EF,
1393 0x4FFB, 0x006C, 0x9BFD, 0x444F, 0x00F6, 0x67FD, 0x1FFB, 0x002C, 0x0008, 0x00AC, 0x007A, 0x11BF, 0x00F6,
1394 0x00AD, 0x2FFB, 0xFFFF, 0x00DA, 0x004C, 0x5FFD, 0x233F, 0x00F6, 0x00EC, 0x8FFB, 0x001C, 0x0008, 0x008C,
1395 0x005A, 0x006F, 0x00F6, 0x00CC, 0x00BA, 0x8BBF, 0x4FFB, 0x115D, 0x8AED, 0x222F};
1398 0x0026, 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x8DDF, 0x0026, 0x01BD, 0x0046, 0x5FFF, 0x0086,
1399 0x027D, 0x005A, 0x155F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0xCCCF, 0x0026, 0x2EFD,
1400 0x0046, 0x99FF, 0x0086, 0x009C, 0x00CA, 0x133F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018,
1401 0x11DF, 0x0026, 0x4FFD, 0x0046, 0xCFFF, 0x0086, 0x009D, 0x005A, 0x007E, 0x0026, 0x003A, 0x0046, 0x1FFF,
1402 0x0086, 0x88AD, 0x0018, 0x00BE, 0x0026, 0x8FFD, 0x0046, 0x4EEF, 0x0086, 0x888D, 0x00CA, 0x111F, 0x0026,
1403 0x00AA, 0x0046, 0x006C, 0x0086, 0x8AED, 0x0018, 0x45DF, 0x0026, 0x01BD, 0x0046, 0x22EF, 0x0086, 0x027D,
1404 0x005A, 0x227F, 0x0026, 0x003A, 0x0046, 0x444D, 0x0086, 0x4CCD, 0x0018, 0x11BF, 0x0026, 0x2EFD, 0x0046,
1405 0x00FE, 0x0086, 0x009C, 0x00CA, 0x223F, 0x0026, 0x00AA, 0x0046, 0x445D, 0x0086, 0x8CCD, 0x0018, 0x00DE,
1406 0x0026, 0x4FFD, 0x0046, 0xABFF, 0x0086, 0x009D, 0x005A, 0x006F, 0x0026, 0x003A, 0x0046, 0x6EFF, 0x0086,
1407 0x88AD, 0x0018, 0x2AAF, 0x0026, 0x8FFD, 0x0046, 0x00EE, 0x0086, 0x888D, 0x00CA, 0x222F, 0x0004, 0x00CA,
1408 0x0088, 0x027D, 0x0004, 0x4CCD, 0x0028, 0x00FE, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018,
1409 0x00DE, 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x11DF, 0x0004, 0x8AED, 0x0048, 0x003C,
1410 0x0004, 0x888D, 0x0018, 0x111F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x88FF, 0x0004,
1411 0x8BFD, 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x00BE, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC,
1412 0x0028, 0x00EE, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x007E, 0x0004, 0x00CA, 0x0088,
1413 0x027D, 0x0004, 0x4CCD, 0x0028, 0x1FFF, 0x0004, 0x2AFD, 0x0048, 0x005C, 0x0004, 0x009D, 0x0018, 0x11BF,
1414 0x0004, 0x01BD, 0x0088, 0x006C, 0x0004, 0x88AD, 0x0028, 0x22EF, 0x0004, 0x8AED, 0x0048, 0x003C, 0x0004,
1415 0x888D, 0x0018, 0x227F, 0x0004, 0x00CA, 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x4EEF, 0x0004, 0x8BFD,
1416 0x0048, 0x444D, 0x0004, 0x009C, 0x0018, 0x2AAF, 0x0004, 0x4EFD, 0x0088, 0x445D, 0x0004, 0x00AC, 0x0028,
1417 0x8DDF, 0x0004, 0x45DD, 0x0048, 0x222D, 0x0004, 0x003D, 0x0018, 0x155F, 0x0004, 0x005A, 0x0088, 0x006C,
1418 0x0004, 0x88DD, 0x0028, 0x23FF, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x00BE, 0x0004,
1419 0x137D, 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x00DE, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D,
1420 0x0018, 0x007E, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x00EE, 0x0004, 0x1FFD, 0x0048,
1421 0x003C, 0x0004, 0x00AC, 0x0018, 0x555F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x477F,
1422 0x0004, 0x4CDD, 0x0048, 0x8FFF, 0x0004, 0x009C, 0x0018, 0x222F, 0x0004, 0x005A, 0x0088, 0x006C, 0x0004,
1423 0x88DD, 0x0028, 0x00FE, 0x0004, 0x11FD, 0x0048, 0x444D, 0x0004, 0x00AD, 0x0018, 0x888F, 0x0004, 0x137D,
1424 0x0088, 0x155D, 0x0004, 0x00CC, 0x0028, 0x8CCF, 0x0004, 0x02ED, 0x0048, 0x111D, 0x0004, 0x009D, 0x0018,
1425 0x006F, 0x0004, 0x005A, 0x0088, 0x455D, 0x0004, 0x44CD, 0x0028, 0x1DDF, 0x0004, 0x1FFD, 0x0048, 0x003C,
1426 0x0004, 0x00AC, 0x0018, 0x227F, 0x0004, 0x47FD, 0x0088, 0x113D, 0x0004, 0x02BD, 0x0028, 0x22BF, 0x0004,
1427 0x4CDD, 0x0048, 0x22EF, 0x0004, 0x009C, 0x0018, 0x233F, 0x0006, 0x4DDD, 0x4FFB, 0xCFFF, 0x0018, 0x113D,
1428 0x005A, 0x888F, 0x0006, 0x23BD, 0x008A, 0x00EE, 0x002A, 0x155D, 0xAAFD, 0x277F, 0x0006, 0x44CD, 0x8FFB,
1429 0x44EF, 0x0018, 0x467D, 0x004A, 0x2AAF, 0x0006, 0x00AC, 0x555B, 0x99DF, 0x1FFB, 0x003C, 0x5FFD, 0x266F,
1430 0x0006, 0x1DDD, 0x4FFB, 0x6EFF, 0x0018, 0x177D, 0x005A, 0x1BBF, 0x0006, 0x88AD, 0x008A, 0x5DDF, 0x002A,
1431 0x444D, 0x2FFD, 0x667F, 0x0006, 0x00CC, 0x8FFB, 0x2EEF, 0x0018, 0x455D, 0x004A, 0x119F, 0x0006, 0x009C,
1432 0x555B, 0x8CCF, 0x1FFB, 0x111D, 0x8CED, 0x006E, 0x0006, 0x4DDD, 0x4FFB, 0x3FFF, 0x0018, 0x113D, 0x005A,
1433 0x11BF, 0x0006, 0x23BD, 0x008A, 0x8DDF, 0x002A, 0x155D, 0xAAFD, 0x222F, 0x0006, 0x44CD, 0x8FFB, 0x00FE,
1434 0x0018, 0x467D, 0x004A, 0x899F, 0x0006, 0x00AC, 0x555B, 0x00DE, 0x1FFB, 0x003C, 0x5FFD, 0x446F, 0x0006,
1435 0x1DDD, 0x4FFB, 0x9BFF, 0x0018, 0x177D, 0x005A, 0x00BE, 0x0006, 0x88AD, 0x008A, 0xCDDF, 0x002A, 0x444D,
1436 0x2FFD, 0x007E, 0x0006, 0x00CC, 0x8FFB, 0x4EEF, 0x0018, 0x455D, 0x004A, 0x377F, 0x0006, 0x009C, 0x555B,
1437 0x8BBF, 0x1FFB, 0x111D, 0x8CED, 0x233F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x11DF,
1438 0x0004, 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x2BBF, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004,
1439 0x00CC, 0x0028, 0x00EE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x007E, 0x0004, 0x00AA,
1440 0x0088, 0x006D, 0x0004, 0x88CD, 0x0028, 0x00FE, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018,
1441 0xAAAF, 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x4CCF, 0x0004, 0x44ED, 0x0048, 0x4FFF,
1442 0x0004, 0x223D, 0x0018, 0x111F, 0x0004, 0x00AA, 0x0088, 0x047D, 0x0004, 0x01DD, 0x0028, 0x99FF, 0x0004,
1443 0x27FD, 0x0048, 0x005C, 0x0004, 0x8AAD, 0x0018, 0x00BE, 0x0004, 0x009C, 0x0088, 0x006C, 0x0004, 0x00CC,
1444 0x0028, 0x00DE, 0x0004, 0x8CED, 0x0048, 0x222D, 0x0004, 0x888D, 0x0018, 0x444F, 0x0004, 0x00AA, 0x0088,
1445 0x006D, 0x0004, 0x88CD, 0x0028, 0x2EEF, 0x0004, 0x19FD, 0x0048, 0x003C, 0x0004, 0x2AAD, 0x0018, 0x447F,
1446 0x0004, 0x8BFD, 0x0088, 0x005D, 0x0004, 0x00BD, 0x0028, 0x009F, 0x0004, 0x44ED, 0x0048, 0x67FF, 0x0004,
1447 0x223D, 0x0018, 0x133F, 0x0006, 0x00CC, 0x008A, 0x9DFF, 0x2FFB, 0x467D, 0x1FFD, 0x99BF, 0x0006, 0x2AAD,
1448 0x002A, 0x66EF, 0x4FFB, 0x005C, 0x2EED, 0x377F, 0x0006, 0x89BD, 0x004A, 0x00FE, 0x8FFB, 0x006C, 0x67FD,
1449 0x889F, 0x0006, 0x888D, 0x001A, 0x5DDF, 0x00AA, 0x222D, 0x89DD, 0x444F, 0x0006, 0x2BBD, 0x008A, 0xCFFF,
1450 0x2FFB, 0x226D, 0x009C, 0x00BE, 0x0006, 0xAAAD, 0x002A, 0x1DDF, 0x4FFB, 0x003C, 0x4DDD, 0x466F, 0x0006,
1451 0x8AAD, 0x004A, 0xAEEF, 0x8FFB, 0x445D, 0x8EED, 0x177F, 0x0006, 0x233D, 0x001A, 0x4CCF, 0x00AA, 0xAFFF,
1452 0x88CD, 0x133F, 0x0006, 0x00CC, 0x008A, 0x77FF, 0x2FFB, 0x467D, 0x1FFD, 0x3BBF, 0x0006, 0x2AAD, 0x002A,
1453 0x00EE, 0x4FFB, 0x005C, 0x2EED, 0x007E, 0x0006, 0x89BD, 0x004A, 0x4EEF, 0x8FFB, 0x006C, 0x67FD, 0x667F,
1454 0x0006, 0x888D, 0x001A, 0x00DE, 0x00AA, 0x222D, 0x89DD, 0x333F, 0x0006, 0x2BBD, 0x008A, 0x57FF, 0x2FFB,
1455 0x226D, 0x009C, 0x199F, 0x0006, 0xAAAD, 0x002A, 0x99DF, 0x4FFB, 0x003C, 0x4DDD, 0x155F, 0x0006, 0x8AAD,
1456 0x004A, 0xCEEF, 0x8FFB, 0x445D, 0x8EED, 0x277F, 0x0006, 0x233D, 0x001A, 0x1BBF, 0x00AA, 0x3FFF, 0x88CD,
1457 0x111F, 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0xCCCF, 0x0006, 0x19BD, 0x004A, 0x22EF,
1458 0x002A, 0x222D, 0x3FFD, 0x888F, 0x0006, 0x00CC, 0x008A, 0x00FE, 0x0018, 0x115D, 0xCFFD, 0x8AAF, 0x0006,
1459 0x00AC, 0x003A, 0x8CDF, 0x1FFB, 0x133D, 0x66FD, 0x466F, 0x0006, 0x8CCD, 0x2FFB, 0x5FFF, 0x0018, 0x006C,
1460 0x4FFD, 0xABBF, 0x0006, 0x22AD, 0x004A, 0x00EE, 0x002A, 0x233D, 0xAEFD, 0x377F, 0x0006, 0x2BBD, 0x008A,
1461 0x55DF, 0x0018, 0x005C, 0x177D, 0x119F, 0x0006, 0x009C, 0x003A, 0x4CCF, 0x1FFB, 0x333D, 0x8EED, 0x444F,
1462 0x0006, 0x45DD, 0x2FFB, 0x111D, 0x0018, 0x467D, 0x8FFD, 0x99BF, 0x0006, 0x19BD, 0x004A, 0x2EEF, 0x002A,
1463 0x222D, 0x3FFD, 0x667F, 0x0006, 0x00CC, 0x008A, 0x4EEF, 0x0018, 0x115D, 0xCFFD, 0x899F, 0x0006, 0x00AC,
1464 0x003A, 0x00DE, 0x1FFB, 0x133D, 0x66FD, 0x226F, 0x0006, 0x8CCD, 0x2FFB, 0x9BFF, 0x0018, 0x006C, 0x4FFD,
1465 0x00BE, 0x0006, 0x22AD, 0x004A, 0x1DDF, 0x002A, 0x233D, 0xAEFD, 0x007E, 0x0006, 0x2BBD, 0x008A, 0xCEEF,
1466 0x0018, 0x005C, 0x177D, 0x277F, 0x0006, 0x009C, 0x003A, 0x8BBF, 0x1FFB, 0x333D, 0x8EED, 0x455F, 0x1FF9,
1467 0x1DDD, 0xAFFB, 0x00DE, 0x8FF9, 0x001C, 0xFFFB, 0x477F, 0x4FF9, 0x177D, 0x3FFB, 0x3BBF, 0x2FF9, 0xAEEF,
1468 0x8EED, 0x444F, 0x1FF9, 0x22AD, 0x000A, 0x8BBF, 0x8FF9, 0x00FE, 0xCFFD, 0x007E, 0x4FF9, 0x115D, 0x5FFB,
1469 0x577F, 0x2FF9, 0x8DDF, 0x2EED, 0x333F, 0x1FF9, 0x2BBD, 0xAFFB, 0x88CF, 0x8FF9, 0xBFFF, 0xFFFB, 0x377F,
1470 0x4FF9, 0x006D, 0x3FFB, 0x00BE, 0x2FF9, 0x66EF, 0x9FFD, 0x133F, 0x1FF9, 0x009D, 0x000A, 0xABBF, 0x8FF9,
1471 0xDFFF, 0x6FFD, 0x006E, 0x4FF9, 0x002C, 0x5FFB, 0x888F, 0x2FF9, 0xCDDF, 0x4DDD, 0x222F, 0x1FF9, 0x1DDD,
1472 0xAFFB, 0x4CCF, 0x8FF9, 0x001C, 0xFFFB, 0x277F, 0x4FF9, 0x177D, 0x3FFB, 0x99BF, 0x2FF9, 0xCEEF, 0x8EED,
1473 0x004E, 0x1FF9, 0x22AD, 0x000A, 0x00AE, 0x8FF9, 0x7FFF, 0xCFFD, 0x005E, 0x4FF9, 0x115D, 0x5FFB, 0x009E,
1474 0x2FF9, 0x5DDF, 0x2EED, 0x003E, 0x1FF9, 0x2BBD, 0xAFFB, 0x00CE, 0x8FF9, 0xEFFF, 0xFFFB, 0x667F, 0x4FF9,
1475 0x006D, 0x3FFB, 0x8AAF, 0x2FF9, 0x00EE, 0x9FFD, 0x233F, 0x1FF9, 0x009D, 0x000A, 0x1BBF, 0x8FF9, 0x4EEF,
1476 0x6FFD, 0x455F, 0x4FF9, 0x002C, 0x5FFB, 0x008E, 0x2FF9, 0x99DF, 0x4DDD, 0x111F};