From 0f4bd5bccdf33cfb2b58146c6958fc5164332a73 Mon Sep 17 00:00:00 2001 From: Thomas HUET Date: Sun, 7 Dec 2014 18:58:18 +0100 Subject: [PATCH] 0.9.1 --- ChangeLog | 9 + Makefile | 20 +- README | 21 +- VERSION | 2 +- bpgdec.c | 61 ++++-- bpgenc.c | 494 ++++++++++++++++++++++++++++-------------- bpgenc.h | 1 + config.h | 2 +- doc/bpg_spec.txt | 30 ++- html/bpgdec.js | 148 ++++++------- html/lena512color.bpg | Bin 15119 -> 15157 bytes libbpg.c | 425 ++++++++++++++++++++++++------------ libbpg.h | 52 ++++- post.js | 39 ++-- x265_glue.c | 42 +--- 15 files changed, 873 insertions(+), 473 deletions(-) create mode 100644 ChangeLog diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 00000000..fa3a58ec --- /dev/null +++ b/ChangeLog @@ -0,0 +1,9 @@ +version 0.9.1: + +- Added new meta data tags: ICC profile, XMP and thumbnail. +- Disabled metadata copying by default. +- Use same chroma pixel position as JPEG for 4:2:2 and 4:2:0. + +version 0.9: + +- Initial release. diff --git a/Makefile b/Makefile index 48047b5c..bd604938 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,8 @@ USE_JCTVC=y #USE_JCTVC_HIGH_BIT_DEPTH=y # Enable the cross compilation for Windows #CONFIG_WIN32=y +# Enable for compilation on MacOS X +#CONFIG_APPLE=y # Installation prefix prefix=/usr/local @@ -43,13 +45,18 @@ CFLAGS+=-DRExt__HIGH_BIT_DEPTH_SUPPORT endif # Emscriptem config -EMLDFLAGS:=-s "EXPORTED_FUNCTIONS=['_bpg_decoder_open','_bpg_decoder_get_info','_bpg_decoder_start','_bpg_decoder_get_line','_bpg_decoder_close','_malloc','_free']" +EMLDFLAGS:=-s "EXPORTED_FUNCTIONS=['_bpg_decoder_open','_bpg_decoder_decode','_bpg_decoder_get_info','_bpg_decoder_start','_bpg_decoder_get_line','_bpg_decoder_close','_malloc','_free']" EMLDFLAGS+=-s NO_FILESYSTEM=1 -s NO_BROWSER=1 -s TOTAL_MEMORY=33554432 #EMLDFLAGS+=-O1 --post-js post.js EMLDFLAGS+=-O3 --memory-init-file 0 --closure 1 --post-js post.js EMCFLAGS:=$(CFLAGS) -LDFLAGS= -g -Wl,--gc-sections +LDFLAGS=-g +ifdef CONFIG_APPLE +LDFLAGS+=-Wl,-dead_strip +else +LDFLAGS+=-Wl,--gc-sections +endif CFLAGS+=-g CXXFLAGS=$(CFLAGS) @@ -113,8 +120,13 @@ ifdef CONFIG_WIN32 LIBS:=-lz LDFLAGS+=-static else -LIBS:=-lrt -lm -lpthread -endif +ifdef CONFIG_APPLE +LIBS:= +else +LIBS:=-lrt +endif # !CONFIG_APPLE +LIBS+=-lm -lpthread +endif # !CONFIG_WIN32 BPGENC_LIBS+=-lpng -ljpeg $(LIBS) diff --git a/README b/README index a4925c06..72c5e1fd 100644 --- a/README +++ b/README @@ -51,7 +51,7 @@ BPG Image Encoder and Decoder mode is less tested that the lossy mode but it usually gives better results that PNG on photographic images. -- There is a difference of interpreation of the quantizer parameter +- There is a difference of interpretation of the quantizer parameter (-q option) between the x265 and JCTVC encoder. The default value is optimized for the JCTVC encoder, not for x265. We will try to align the x265 value to JCTVC in the future. @@ -61,6 +61,25 @@ BPG Image Encoder and Decoder Makefile define: USE_JCTVC_HIGH_BIT_DEPTH. The encoder is sligthly slower in this case. +- Color space and chroma format: + + * For JPEG input, the color space of the input image is not + modified (it is YCbCr, RGB, YCbCrK or CMYK). The chroma is + subsampled according to the preferred chroma format ('-f' + option). Images with vertically subsampled chroma are currently + not supported. + + * For PNG input, grayscale images are not modified. For RGB + images, the input image is converted to the preferred color + space ('-c' option). Its chroma is then subsampled according to + the preferred chroma format. + + * grayscale images are kept unmodified. + +- By default, bpgenc does not copy the metadata. You can copy them + with the '-keepmetadata' option. For JPEG input, EXIF, ICCP and XMP + are copied. For PNG input, ICCP is copied. + 3) FFmpeg modifications ----------------------- diff --git a/VERSION b/VERSION index b63ba696..f374f666 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.9 +0.9.1 diff --git a/bpgdec.c b/bpgdec.c index f662731b..9d79cceb 100644 --- a/bpgdec.c +++ b/bpgdec.c @@ -167,14 +167,13 @@ static void png_save(BPGDecoderContext *img, const char *filename, int bit_depth } #endif /* USE_PNG */ - - -static void bpg_show_info(const char *filename) +static void bpg_show_info(const char *filename, int show_extensions) { - uint8_t buf[BPG_DECODER_INFO_BUF_SIZE]; - int buf_len, ret; + uint8_t *buf; + int buf_len, ret, buf_len_max; FILE *f; BPGImageInfo p_s, *p = &p_s; + BPGExtensionData *first_md, *md; static const char *format_str[4] = { "Gray", "4:2:0", @@ -188,15 +187,34 @@ static void bpg_show_info(const char *filename) "YCbCrK", "CMYK", }; - + static const char *extension_tag_str[] = { + "Unknown", + "EXIF", + "ICC profile", + "XMP", + "Thumbnail", + }; + f = fopen(filename, "rb"); if (!f) { fprintf(stderr, "Could not open %s\n", filename); exit(1); } - buf_len = fread(buf, 1, sizeof(buf), f); - ret = bpg_decoder_get_info_from_buf(p, buf, buf_len); + if (show_extensions) { + fseek(f, 0, SEEK_END); + buf_len_max = ftell(f); + fseek(f, 0, SEEK_SET); + } else { + /* if no extension are shown, just need the header */ + buf_len_max = BPG_DECODER_INFO_BUF_SIZE; + } + buf = malloc(buf_len_max); + buf_len = fread(buf, 1, buf_len_max, f); + + ret = bpg_decoder_get_info_from_buf(p, show_extensions ? &first_md : NULL, + buf, buf_len); + free(buf); fclose(f); if (ret < 0) { fprintf(stderr, "Not a BPG image\n"); @@ -208,6 +226,19 @@ static void bpg_show_info(const char *filename) p->has_alpha, format_str[p->format], p->bit_depth); + if (first_md) { + const char *tag_name; + printf("Extension data:\n"); + for(md = first_md; md != NULL; md = md->next) { + if (md->tag <= 4) + tag_name = extension_tag_str[md->tag]; + else + tag_name = extension_tag_str[0]; + printf(" tag=%d (%s) length=%d\n", + md->tag, tag_name, md->buf_len); + } + bpg_decoder_free_extension_data(first_md); + } } static void help(void) @@ -217,7 +248,7 @@ static void help(void) "Options:\n" "-o outfile.[ppm|png] set the output filename (default = out.png)\n" "-b bit_depth PNG output only: use bit_depth per component (8 or 16, default = 8)\n" - "-i display information about the picture\n"); + "-i display information about the image\n"); exit(1); } @@ -261,7 +292,7 @@ int main(int argc, char **argv) filename = argv[optind++]; if (show_info) { - bpg_show_info(filename); + bpg_show_info(filename, 1); return 0; } @@ -283,14 +314,14 @@ int main(int argc, char **argv) fclose(f); - img = bpg_decoder_open(buf, buf_len); - free(buf); - - if (!img) { + img = bpg_decoder_open(); + + if (bpg_decoder_decode(img, buf, buf_len) < 0) { fprintf(stderr, "Could not decode image\n"); exit(1); } - + free(buf); + #ifdef USE_PNG p = strrchr(outfilename, '.'); if (p) diff --git a/bpgenc.c b/bpgenc.c index aabd28c8..1e98d880 100644 --- a/bpgenc.c +++ b/bpgenc.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -351,13 +352,13 @@ static void gray_neg_c(ColorConvertState *s, PIXEL *y_ptr, int n) /* decimation */ -#define DTAPS2 7 -#define DTAPS (2 * DTAPS2 + 1) -#define DC0 64 -#define DC1 40 -#define DC2 (-11) -#define DC3 4 -#define DC4 (-1) +#define DTAPS2 5 +#define DTAPS (2 * DTAPS2) +#define DC0 57 +#define DC1 17 +#define DC2 (-8) +#define DC3 (-4) +#define DC4 2 static void decimate2_simple(PIXEL *dst, PIXEL *src, int n, int bit_depth) { @@ -365,11 +366,11 @@ static void decimate2_simple(PIXEL *dst, PIXEL *src, int n, int bit_depth) pixel_max = (1 << bit_depth) - 1; n2 = (n + 1) / 2; for(i = 0; i < n2; i++) { - dst[i] = clamp_pix(((src[-7] + src[7]) * DC4 + - (src[-5] + src[5]) * DC3 + - (src[-3] + src[3]) * DC2 + - (src[-1] + src[1]) * DC1 + - src[0] * DC0 + 64) >> 7, pixel_max); + dst[i] = clamp_pix(((src[-4] + src[5]) * DC4 + + (src[-3] + src[4]) * DC3 + + (src[-2] + src[3]) * DC2 + + (src[-1] + src[2]) * DC1 + + (src[0] + src[1]) * DC0 + 64) >> 7, pixel_max); src += 2; } } @@ -401,11 +402,11 @@ static void decimate2_simple16(int16_t *dst, PIXEL *src, int n, int bit_depth) rnd = 1 << (shift - 1); n2 = (n + 1) / 2; for(i = 0; i < n2; i++) { - dst[i] = ((src[-7] + src[7]) * DC4 + - (src[-5] + src[5]) * DC3 + - (src[-3] + src[3]) * DC2 + - (src[-1] + src[1]) * DC1 + - src[0] * DC0 + rnd) >> shift; + dst[i] = ((src[-4] + src[5]) * DC4 + + (src[-3] + src[4]) * DC3 + + (src[-2] + src[3]) * DC2 + + (src[-1] + src[2]) * DC1 + + (src[0] + src[1]) * DC0 + rnd) >> shift; src += 2; } } @@ -432,37 +433,39 @@ static void decimate2_h16(int16_t *dst, PIXEL *src, int n, PIXEL *src1, static void decimate2_v(PIXEL *dst, int16_t **src, int pos, int n, int bit_depth) { - int16_t *src0, *src1, *src3, *src5, *src7, *srcm1, *srcm3, *srcm5, *srcm7; + int16_t *src0, *src1, *src2, *src3, *src4, *src5, *srcm1, *srcm2, *srcm3, *srcm4; int i, shift, offset, pixel_max; - pos = sub_mod_int(pos, 7, DTAPS); - srcm7 = src[pos]; - pos = add_mod_int(pos, 2, DTAPS); - srcm5 = src[pos]; - pos = add_mod_int(pos, 2, DTAPS); + pos = sub_mod_int(pos, 4, DTAPS); + srcm4 = src[pos]; + pos = add_mod_int(pos, 1, DTAPS); srcm3 = src[pos]; - pos = add_mod_int(pos, 2, DTAPS); + pos = add_mod_int(pos, 1, DTAPS); + srcm2 = src[pos]; + pos = add_mod_int(pos, 1, DTAPS); srcm1 = src[pos]; pos = add_mod_int(pos, 1, DTAPS); src0 = src[pos]; pos = add_mod_int(pos, 1, DTAPS); src1 = src[pos]; - pos = add_mod_int(pos, 2, DTAPS); + pos = add_mod_int(pos, 1, DTAPS); + src2 = src[pos]; + pos = add_mod_int(pos, 1, DTAPS); src3 = src[pos]; - pos = add_mod_int(pos, 2, DTAPS); + pos = add_mod_int(pos, 1, DTAPS); + src4 = src[pos]; + pos = add_mod_int(pos, 1, DTAPS); src5 = src[pos]; - pos = add_mod_int(pos, 2, DTAPS); - src7 = src[pos]; shift = 21 - bit_depth; offset = 1 << (shift - 1); pixel_max = (1 << bit_depth) - 1; for(i = 0; i < n; i++) { - dst[i] = clamp_pix(((srcm7[i] + src7[i]) * DC4 + - (srcm5[i] + src5[i]) * DC3 + - (srcm3[i] + src3[i]) * DC2 + - (srcm1[i] + src1[i]) * DC1 + - src0[i] * DC0 + offset) >> shift, pixel_max); + dst[i] = clamp_pix(((srcm4[i] + src5[i]) * DC4 + + (srcm3[i] + src4[i]) * DC3 + + (srcm2[i] + src3[i]) * DC2 + + (srcm1[i] + src2[i]) * DC1 + + (src0[i] + src1[i]) * DC0 + offset) >> shift, pixel_max); } } @@ -523,13 +526,27 @@ static void decimate2_hv(uint8_t *dst, int dst_linesize, free(buf1); } +static void get_plane_res(Image *img, int *pw, int *ph, int i) +{ + if (img->format == BPG_FORMAT_420 && (i == 1 || i == 2)) { + *pw = (img->w + 1) / 2; + *ph = (img->h + 1) / 2; + } else if (img->format == BPG_FORMAT_422 && (i == 1 || i == 2)) { + *pw = (img->w + 1) / 2; + *ph = img->h; + } else { + *pw = img->w; + *ph = img->h; + } +} + #define W_PAD 16 Image *image_alloc(int w, int h, BPGImageFormatEnum format, int has_alpha, BPGColorSpaceEnum color_space, int bit_depth) { Image *img; - int i, bpp, linesize, hshift, vshift, w1, h1, c_count; + int i, linesize, w1, h1, c_count; img = malloc(sizeof(Image)); memset(img, 0, sizeof(*img)); @@ -540,19 +557,7 @@ Image *image_alloc(int w, int h, BPGImageFormatEnum format, int has_alpha, img->has_alpha = has_alpha; img->bit_depth = bit_depth; img->color_space = color_space; - - switch(img->format) { - case BPG_FORMAT_420: - hshift = vshift = 1; - break; - case BPG_FORMAT_422: - hshift = 1; - vshift = 0; - break; - default: - hshift = vshift = 0; - break; - } + img->pixel_shift = 1; if (img->format == BPG_FORMAT_GRAY) c_count = 1; @@ -561,32 +566,38 @@ Image *image_alloc(int w, int h, BPGImageFormatEnum format, int has_alpha, if (has_alpha) c_count++; for(i = 0; i < c_count; i++) { - bpp = 2; - w1 = w; - h1 = h; + get_plane_res(img, &w1, &h1, i); /* multiple of 16 pixels to add borders */ w1 = (w1 + (W_PAD - 1)) & ~(W_PAD - 1); h1 = (h1 + (W_PAD - 1)) & ~(W_PAD - 1); - if (i == 1 || i == 2) { - if (hshift) - w1 = (w + 1) / 2; - if (vshift) - h1 = (h + 1) / 2; - } - linesize = w1 * bpp; + linesize = w1 << img->pixel_shift; img->data[i] = malloc(linesize * h1); img->linesize[i] = linesize; } return img; } +void image_free(Image *img) +{ + int i, c_count; + if (img->format == BPG_FORMAT_GRAY) + c_count = 1; + else + c_count = 3; + if (img->has_alpha) + c_count++; + for(i = 0; i < c_count; i++) + free(img->data[i]); + free(img); +} + int image_ycc444_to_ycc422(Image *img) { uint8_t *data1; int w1, h1, bpp, linesize1, i, y; - if (img->format != BPG_FORMAT_444) + if (img->format != BPG_FORMAT_444 || img->pixel_shift != 1) return -1; bpp = 2; w1 = (img->w + 1) / 2; @@ -613,7 +624,7 @@ int image_ycc444_to_ycc420(Image *img) uint8_t *data1; int w1, h1, bpp, linesize1, i; - if (img->format != BPG_FORMAT_444) + if (img->format != BPG_FORMAT_444 || img->pixel_shift != 1) return -1; bpp = 2; w1 = (img->w + 1) / 2; @@ -641,6 +652,7 @@ void image_pad(Image *img, int cb_size) int w1, h1, x, y, c_count, c_w, c_h, c_w1, c_h1, h_shift, v_shift, c_idx; PIXEL *ptr, v, *ptr1; + assert(img->pixel_shift == 1); if (cb_size <= 1) return; w1 = (img->w + cb_size - 1) & ~(cb_size - 1); @@ -691,7 +703,69 @@ void image_pad(Image *img, int cb_size) img->h = h1; } -Image *read_png(FILE *f, BPGColorSpaceEnum color_space, int out_bit_depth) +/* convert the 16 bit components to 8 bits */ +void image_convert16to8(Image *img) +{ + int w, h, stride, y, x, c_count, i; + uint8_t *plane; + + if (img->bit_depth > 8 || img->pixel_shift != 1) + return; + if (img->format == BPG_FORMAT_GRAY) + c_count = 1; + else + c_count = 3; + if (img->has_alpha) + c_count++; + for(i = 0; i < c_count; i++) { + get_plane_res(img, &w, &h, i); + stride = w; + plane = malloc(stride * h); + for(y = 0; y < h; y++) { + const uint16_t *src; + uint8_t *dst; + dst = plane + stride * y; + src = (uint16_t *)(img->data[i] + img->linesize[i] * y); + for(x = 0; x < w; x++) + dst[x] = src[x]; + } + free(img->data[i]); + img->data[i] = plane; + img->linesize[i] = stride; + } + img->pixel_shift = 0; +} + +typedef struct BPGMetaData { + uint32_t tag; + uint8_t *buf; + int buf_len; + struct BPGMetaData *next; +} BPGMetaData; + +BPGMetaData *bpg_md_alloc(uint32_t tag) +{ + BPGMetaData *md; + md = malloc(sizeof(BPGMetaData)); + memset(md, 0, sizeof(*md)); + md->tag = tag; + return md; +} + +void bpg_md_free(BPGMetaData *md) +{ + BPGMetaData *md_next; + + while (md != NULL) { + md_next = md->next; + free(md->buf); + free(md); + md = md_next; + } +} + +Image *read_png(BPGMetaData **pmd, + FILE *f, BPGColorSpaceEnum color_space, int out_bit_depth) { png_structp png_ptr; png_infop info_ptr; @@ -701,7 +775,8 @@ Image *read_png(FILE *f, BPGColorSpaceEnum color_space, int out_bit_depth) int y, has_alpha; BPGImageFormatEnum format; ColorConvertState cvt_s, *cvt = &cvt_s; - + BPGMetaData *md, **plast_md, *first_md; + png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (png_ptr == NULL) { @@ -826,36 +901,148 @@ Image *read_png(FILE *f, BPGColorSpaceEnum color_space, int out_bit_depth) png_read_end(png_ptr, info_ptr); + /* get the ICC profile if present */ + first_md = NULL; + plast_md = &first_md; + { + png_charp name; + int comp_type; + png_bytep iccp_buf; + png_uint_32 iccp_buf_len; + + if (png_get_iCCP(png_ptr, info_ptr, + &name, &comp_type, &iccp_buf, &iccp_buf_len) == + PNG_INFO_iCCP) { + md = bpg_md_alloc(BPG_EXTENSION_TAG_ICCP); + md->buf_len = iccp_buf_len; + md->buf = malloc(iccp_buf_len); + memcpy(md->buf, iccp_buf, iccp_buf_len); + *plast_md = md; + plast_md = &md->next; + } + } + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); + *pmd = first_md; return img; } -#define EXIF_MAX_LEN 65535 +static BPGMetaData *jpeg_get_metadata(jpeg_saved_marker_ptr first_marker) +{ + static const char app1_exif[] = "Exif"; + static const char app1_xmp[] = "http://ns.adobe.com/xap/1.0/"; + static const char app2_iccp[] = "ICC_PROFILE"; + jpeg_saved_marker_ptr marker; + BPGMetaData *md, **plast_md, *first_md; + int has_exif, has_xmp, l, iccp_chunk_count, i; + jpeg_saved_marker_ptr iccp_chunks[256]; + + iccp_chunk_count = 0; + has_exif = 0; + has_xmp = 0; + first_md = NULL; + plast_md = &first_md; + for (marker = first_marker; marker != NULL; marker = marker->next) { +#if 0 + printf("marker=APP%d len=%d\n", + marker->marker - JPEG_APP0, marker->data_length); +#endif + if (!has_exif && marker->marker == JPEG_APP0 + 1 && + marker->data_length > sizeof(app1_exif) && + !memcmp(marker->data, app1_exif, sizeof(app1_exif))) { + md = bpg_md_alloc(BPG_EXTENSION_TAG_EXIF); + l = sizeof(app1_exif); + md->buf_len = marker->data_length - l; + md->buf = malloc(md->buf_len); + memcpy(md->buf, marker->data + l, md->buf_len); + *plast_md = md; + plast_md = &md->next; + has_exif = 1; + } else if (!has_xmp && marker->marker == JPEG_APP0 + 1 && + marker->data_length > sizeof(app1_xmp) && + !memcmp(marker->data, app1_xmp, sizeof(app1_xmp)) && + !has_xmp) { + md = bpg_md_alloc(BPG_EXTENSION_TAG_XMP); + l = sizeof(app1_xmp); + md->buf_len = marker->data_length - l; + md->buf = malloc(md->buf_len); + memcpy(md->buf, marker->data + l, md->buf_len); + *plast_md = md; + plast_md = &md->next; + has_xmp = 1; + } else if (marker->marker == JPEG_APP0 + 2 && + marker->data_length > (sizeof(app2_iccp) + 2) && + !memcmp(marker->data, app2_iccp, sizeof(app2_iccp))) { + int chunk_count, chunk_index; + l = sizeof(app2_iccp); + chunk_index = marker->data[l]; + chunk_count = marker->data[l]; + if (chunk_index == 0 || chunk_count == 0) + continue; + if (iccp_chunk_count == 0) { + iccp_chunk_count = chunk_count; + for(i = 0; i < chunk_count; i++) { + iccp_chunks[i] = NULL; + } + } else { + if (chunk_count != iccp_chunk_count) + continue; + } + if (chunk_index > iccp_chunk_count) + continue; + iccp_chunks[chunk_index - 1] = marker; + } + } + + if (iccp_chunk_count != 0) { + int len, hlen, idx; + /* check that no chunk are missing */ + len = 0; + hlen = sizeof(app2_iccp) + 2; + for(i = 0; i < iccp_chunk_count; i++) { + if (!iccp_chunks[i]) + break; + len += iccp_chunks[i]->data_length - hlen; + } + if (i == iccp_chunk_count) { + md = bpg_md_alloc(BPG_EXTENSION_TAG_ICCP); + md->buf_len = len; + md->buf = malloc(md->buf_len); + idx = 0; + for(i = 0; i < iccp_chunk_count; i++) { + l = iccp_chunks[i]->data_length - hlen; + memcpy(md->buf + idx, iccp_chunks[i]->data + hlen, l); + idx += l; + } + assert(idx == len); + *plast_md = md; + plast_md = &md->next; + } + } + return first_md; +} -Image *read_jpeg(uint8_t **pexif_buf, int *pexif_buf_len, FILE *f, +Image *read_jpeg(BPGMetaData **pmd, FILE *f, int out_bit_depth) { struct jpeg_decompress_struct cinfo; struct jpeg_error_mgr jerr; JSAMPROW rows[4][16]; JSAMPROW *plane_pointer[4]; - jpeg_saved_marker_ptr marker; - int w, h, w1, i, y_h, c_h, y, v_shift, c_w, y1, exif_buf_len, idx, c_idx; + int w, h, w1, i, y_h, c_h, y, v_shift, c_w, y1, idx, c_idx; int h1, plane_idx[4], has_alpha; Image *img; - uint8_t *exif_buf; BPGImageFormatEnum format; BPGColorSpaceEnum color_space; ColorConvertState cvt_s, *cvt = &cvt_s; - - exif_buf = NULL; - exif_buf_len = 0; + BPGMetaData *first_md = NULL; cinfo.err = jpeg_std_error(&jerr); jpeg_create_decompress(&cinfo); - jpeg_save_markers(&cinfo, JPEG_APP0 + 1, EXIF_MAX_LEN); + jpeg_save_markers(&cinfo, JPEG_APP0 + 1, 65535); + jpeg_save_markers(&cinfo, JPEG_APP0 + 2, 65535); jpeg_stdio_src(&cinfo, f); @@ -1007,93 +1194,36 @@ Image *read_jpeg(uint8_t **pexif_buf, int *pexif_buf_len, FILE *f, } } - /* get the metadata (EXIF) */ - for (marker = cinfo.marker_list; marker != NULL; marker = marker->next) { - if (marker->marker == JPEG_APP0 + 1 && - marker->data_length > 6 && - !memcmp(marker->data, "Exif\0", 6)) { - uint8_t *q; - - /* Add EXIF tag */ - exif_buf = malloc(marker->data_length + 5 * 2); - q = exif_buf; - put_ue(&q, BPG_EXTENSION_TAG_EXIF); - put_ue(&q, marker->data_length); - memcpy(q, marker->data, marker->data_length); - q += marker->data_length; - exif_buf_len = q - exif_buf; - break; - } - } + first_md = jpeg_get_metadata(cinfo.marker_list); the_end: jpeg_finish_decompress(&cinfo); jpeg_destroy_decompress(&cinfo); - *pexif_buf = exif_buf; - *pexif_buf_len = exif_buf_len; + *pmd = first_md; return img; } -static void save_plane(FILE *f, uint8_t *data, int linesize, int w, int h, - int bpp) -{ - uint8_t *buf, *ptr; - int y, i; - - if (bpp == 1) - buf = malloc(w); - else - buf = NULL; - for(y = 0; y < h; y++) { - ptr = data + y * linesize; - if (bpp == 1) { - for(i = 0; i < w; i++) - buf[i] = ((uint16_t *)ptr)[i]; - ptr = buf; - } - fwrite(ptr, 1, w * bpp, f); - } - free(buf); -} - void save_yuv(Image *img, const char *filename) { - int bpp, hshift, vshift, c_w, c_h, i; + int c_w, c_h, i, c_count, y; FILE *f; + f = fopen(filename, "wb"); if (!f) { fprintf(stderr, "Could not open %s\n", filename); exit(1); } - bpp = (img->bit_depth + 7) / 8; - save_plane(f, img->data[0], img->linesize[0], img->w, img->h, bpp); - if (img->format != BPG_FORMAT_GRAY) { - switch(img->format) { - case BPG_FORMAT_420: - hshift = vshift = 1; - break; - case BPG_FORMAT_422: - hshift = 1; - vshift = 0; - break; - default: - hshift = vshift = 0; - break; - } - for(i = 1; i < 3; i++) { - if (hshift) { - c_w = (img->w + 1) / 2; - } else { - c_w = img->w; - } - if (vshift) { - c_h = (img->h + 1) / 2; - } else { - c_h = img->h; - } - save_plane(f, img->data[i], img->linesize[i], c_w, c_h, bpp); + if (img->format == BPG_FORMAT_GRAY) + c_count = 1; + else + c_count = 3; + for(i = 0; i < c_count; i++) { + get_plane_res(img, &c_w, &c_h, i); + for(y = 0; y < c_h; y++) { + fwrite(img->data[i] + y * img->linesize[i], + 1, c_w << img->pixel_shift, f); } } fclose(f); @@ -1295,9 +1425,12 @@ static int build_modified_hevc(uint8_t **pout_buf, idx = extract_nal(&nal_buf, &nal_len, buf, buf_len); if (idx < 0) return -1; - if (nal_len < 2) + if (nal_len < 2) { + free(nal_buf); return -1; + } nal_unit_type = (nal_buf[0] >> 1) & 0x3f; + free(nal_buf); if (nal_unit_type != 32) { fprintf(stderr, "expecting VPS nal (%d)\n", nal_unit_type); return -1; /* expect VPS nal */ @@ -1627,7 +1760,7 @@ void help(int is_full) "usage: bpgenc [options] infile.[jpg|png]\n" "\n" "Main options:\n" - "-h show the full help\n" + "-h show the full help (including the advanced options)\n" "-o outfile set output filename (default = %s)\n" "-q qp set quantizer parameter (smaller gives better quality,\n" " range: 0-51, default = %d)\n" @@ -1645,7 +1778,7 @@ void help(int is_full) printf("\nAdvanced options:\n" "-alphaq set quantizer parameter for the alpha channel (default = same as -q value)\n" "-hash include MD5 hash in HEVC bitstream\n" - "-nometadata do not keep EXIF metadata\n" + "-keepmetadata keep the metadata (from JPEG: EXIF, ICC profile, XMP, from PNG: ICC profile)\n" "-v show debug messages\n" ); } @@ -1655,7 +1788,7 @@ void help(int is_full) struct option long_opts[] = { { "hash", no_argument }, - { "nometadata", no_argument }, + { "keepmetadata", no_argument }, { "alphaq", required_argument }, { "lossless", no_argument }, { NULL }, @@ -1666,14 +1799,15 @@ int main(int argc, char **argv) const char *infilename, *outfilename; Image *img, *img_alpha; HEVCEncodeParams p_s, *p = &p_s; - uint8_t *out_buf, *alpha_buf, *exif_buf; + uint8_t *out_buf, *alpha_buf, *extension_buf; int out_buf_len, alpha_buf_len, verbose; FILE *f; - int qp, c, option_index, sei_decoded_picture_hash, is_png, exif_buf_len; + int qp, c, option_index, sei_decoded_picture_hash, is_png, extension_buf_len; int keep_metadata, cb_size, width, height, compress_level, alpha_qp; int bit_depth, lossless_mode; BPGImageFormatEnum format; BPGColorSpaceEnum color_space; + BPGMetaData *md; outfilename = DEFAULT_OUTFILENAME; qp = DEFAULT_QP; @@ -1681,7 +1815,7 @@ int main(int argc, char **argv) sei_decoded_picture_hash = 0; format = BPG_FORMAT_420; color_space = BPG_CS_YCbCr; - keep_metadata = 1; + keep_metadata = 0; verbose = 0; compress_level = 7; bit_depth = DEFAULT_BIT_DEPTH; @@ -1697,7 +1831,7 @@ int main(int argc, char **argv) sei_decoded_picture_hash = 1; break; case 1: - keep_metadata = 0; + keep_metadata = 1; break; case 2: alpha_qp = atoi(optarg); @@ -1797,22 +1931,19 @@ int main(int argc, char **argv) fseek(f, 0, SEEK_SET); } - exif_buf = NULL; - exif_buf_len = 0; - if (is_png) { - img = read_png(f, color_space, bit_depth); + img = read_png(&md, f, color_space, bit_depth); } else { - img = read_jpeg(&exif_buf, &exif_buf_len, f, bit_depth); + img = read_jpeg(&md, f, bit_depth); } if (!img) { fprintf(stderr, "Could not read '%s'\n", infilename); } fclose(f); - if (!keep_metadata) { - free(exif_buf); - exif_buf_len = 0; + if (!keep_metadata && md) { + bpg_md_free(md); + md = NULL; } /* extract the alpha plane */ @@ -1832,6 +1963,7 @@ int main(int argc, char **argv) img_alpha->has_alpha = 0; img_alpha->color_space = BPG_CS_YCbCr; img_alpha->bit_depth = bit_depth; + img_alpha->pixel_shift = img->pixel_shift; img_alpha->data[0] = img->data[c_idx]; img_alpha->linesize[0] = img->linesize[c_idx]; @@ -1861,6 +1993,14 @@ int main(int argc, char **argv) image_pad(img, cb_size); if (img_alpha) image_pad(img_alpha, cb_size); + + /* convert to the allocated pixel width to 8 bit if needed by the + HEVC encoder */ + if (img->bit_depth == 8) { + image_convert16to8(img); + if (img_alpha) + image_convert16to8(img_alpha); + } memset(p, 0, sizeof(*p)); p->qp = qp; @@ -1894,18 +2034,43 @@ int main(int argc, char **argv) } } + /* prepare the extension data */ + extension_buf = NULL; + extension_buf_len = 0; + if (md) { + BPGMetaData *md1; + int max_len; + uint8_t *q; + + max_len = 0; + for(md1 = md; md1 != NULL; md1 = md1->next) { + max_len += md1->buf_len + 5 * 2; + } + extension_buf = malloc(max_len); + q = extension_buf; + for(md1 = md; md1 != NULL; md1 = md1->next) { + put_ue(&q, md1->tag); + put_ue(&q, md1->buf_len); + memcpy(q, md1->buf, md1->buf_len); + q += md1->buf_len; + } + extension_buf_len = q - extension_buf; + + bpg_md_free(md); + } + f = fopen(outfilename, "wb"); if (!f) { perror(outfilename); exit(1); } - + { uint8_t img_header[128], *q; int v, has_alpha, has_extension; has_alpha = (img_alpha != NULL); - has_extension = (exif_buf_len > 0); + has_extension = (extension_buf_len > 0); q = img_header; *q++ = (IMAGE_HEADER_MAGIC >> 24) & 0xff; @@ -1921,7 +2086,7 @@ int main(int argc, char **argv) put_ue(&q, out_buf_len); if (has_extension) { - put_ue(&q, exif_buf_len); /* extension data length */ + put_ue(&q, extension_buf_len); /* extension data length */ } if (has_alpha) { put_ue(&q, alpha_buf_len); @@ -1930,10 +2095,11 @@ int main(int argc, char **argv) fwrite(img_header, 1, q - img_header, f); if (has_extension) { - if (fwrite(exif_buf, 1, exif_buf_len, f) != exif_buf_len) { - fprintf(stderr, "Error while writing EXIF data\n"); + if (fwrite(extension_buf, 1, extension_buf_len, f) != extension_buf_len) { + fprintf(stderr, "Error while writing extension data\n"); exit(1); } + free(extension_buf); } /* HEVC YUV/RGB data */ @@ -1941,6 +2107,7 @@ int main(int argc, char **argv) fprintf(stderr, "Error while writing HEVC image planes\n"); exit(1); } + free(out_buf); if (has_alpha) { /* alpha data */ @@ -1948,10 +2115,15 @@ int main(int argc, char **argv) fprintf(stderr, "Error while writing HEVC alpha plane\n"); exit(1); } + free(alpha_buf); } } fclose(f); + image_free(img); + if (img_alpha) + image_free(img_alpha); + return 0; } diff --git a/bpgenc.h b/bpgenc.h index 18490409..3aa671dd 100644 --- a/bpgenc.h +++ b/bpgenc.h @@ -33,6 +33,7 @@ typedef struct { uint8_t has_alpha; BPGColorSpaceEnum color_space; uint8_t bit_depth; + uint8_t pixel_shift; /* (1 << pixel_shift) bytes per pixel */ uint8_t *data[4]; int linesize[4]; } Image; diff --git a/config.h b/config.h index 06261ed0..7afb20d5 100644 --- a/config.h +++ b/config.h @@ -189,7 +189,7 @@ #define HAVE_MACH_MACH_TIME_H 0 #define HAVE_MACHINE_IOCTL_BT848_H 0 #define HAVE_MACHINE_IOCTL_METEOR_H 0 -#define HAVE_MALLOC_H 1 +#define HAVE_MALLOC_H 0 #define HAVE_OPENJPEG_1_5_OPENJPEG_H 0 #define HAVE_OPENGL_GL3_H 0 #define HAVE_POLL_H 1 diff --git a/doc/bpg_spec.txt b/doc/bpg_spec.txt index 6a80f212..4d0dd17b 100644 --- a/doc/bpg_spec.txt +++ b/doc/bpg_spec.txt @@ -1,5 +1,7 @@ BPG Specification +version 0.9.1 + Copyright (c) 2014 Fabrice Bellard 1) Introduction @@ -15,7 +17,8 @@ In the YCbCr case, the chroma can be subsampled by a factor of two in horizontal or both in horizontal or vertical directions (4:4:4, 4:2:2 or 4:2:0 formats). The chroma is sampled at the same position relative to the luma as in the JPEG format [2] and uses the full range of -values. Arbitrary meta data (such as EXIF [3]) are supported. +values. Arbitrary metadata (such as EXIF, ICC profile, XMP) are +supported. 2) Bitstream conventions ------------------------ @@ -161,9 +164,6 @@ hevc_data() minus 8. In this version of the specification, bit_depth_minus_8 shall be 2. - 'exif_present_flag' indicates that EXIF meta data (Exchangeable - image file format) data are present. - 'extension_present_flag' indicates that extension data are present. These data are ignored by the current decoders. @@ -217,8 +217,16 @@ hevc_data() 'extension_data()' is the extension data. 'extension_tag' is the extension tag. The following values are defined: + 1: EXIF data. - + + 2: ICC profile (see [4]) + + 3: XMP (see [5]) + + 4: Thumbnail (the thumbnail shall be a lower resolution version + of the image stored in BPG format). + The decoder shall ignore the tags it does not support. 'extension_tag_length' is the length in bytes of the extension tag. @@ -354,6 +362,13 @@ information. code which is not useful. It is still possible to reconstruct a standard HEVC stream to feed an unmodified hardware decoder if needed. +- Extensions: the metadata are stored at the beginning of the file so + that they can be read at the same time as the header. Since metadata + tend to evolve faster than the image formats, we left room for + extension by using a (tag, lengh) representation. The decoder can + easily skip all the metadata because their length is explicitly + stored in the image header. + 5) References ------------- @@ -362,3 +377,8 @@ information. [2] JPEG Standard (JPEG ISO/IEC 10918-1 ITU-T Recommendation T.81) [3] EXIF version 2.2 (JEITA CP-3451) + +[4] The International Color Consortium ( http://www.color.org/ ) + +[5] Extensible Metadata Platform (XMP) http://www.adobe.com/devnet/xmp.html + diff --git a/html/bpgdec.js b/html/bpgdec.js index dfe958e8..2f477559 100644 --- a/html/bpgdec.js +++ b/html/bpgdec.js @@ -1,34 +1,34 @@ -function e(a){throw a;}var j=!0,k=null,l=!1,m,r;r||(r=eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));var aa={},s;for(s in r)r.hasOwnProperty(s)&&(aa[s]=r[s]);var ba="object"===typeof process&&"function"===typeof require,ca="object"===typeof window,da="function"===typeof importScripts,ea=!ca&&!ba&&!da; -if(ba){r.print||(r.print=function(a){process.stdout.write(a+"\n")});r.printErr||(r.printErr=function(a){process.stderr.write(a+"\n")});var fa=require("fs"),ga=require("path");r.read=function(a,c){var a=ga.normalize(a),b=fa.readFileSync(a);!b&&a!=ga.resolve(a)&&(a=path.join(__dirname,"..","src",a),b=fa.readFileSync(a));b&&!c&&(b=b.toString());return b};r.readBinary=function(a){return r.read(a,j)};r.load=function(a){ha(read(a))};r.thisProgram=process.argv[1].replace(/\\/g,"/");r.arguments=process.argv.slice(2); -"undefined"!==typeof module&&(module.exports=r);process.on("uncaughtException",function(a){a instanceof ia||e(a)})}else ea?(r.print||(r.print=print),"undefined"!=typeof printErr&&(r.printErr=printErr),r.read="undefined"!=typeof read?read:function(){e("no read() available (jsc?)")},r.readBinary=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");t("object"===typeof a);return a},"undefined"!=typeof scriptArgs?r.arguments=scriptArgs:"undefined"!=typeof arguments&& -(r.arguments=arguments),this.Module=r,eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined")):ca||da?(r.read=function(a){var c=new XMLHttpRequest;c.open("GET",a,l);c.send(k);return c.responseText},"undefined"!=typeof arguments&&(r.arguments=arguments),"undefined"!==typeof console?(r.print||(r.print=function(a){console.log(a)}),r.printErr||(r.printErr=function(a){console.log(a)})):r.print||(r.print=function(){}),ca?window.Module=r:r.load=importScripts): -e("Unknown runtime environment. Where are we?");function ha(a){eval.call(k,a)}!r.load&&r.read&&(r.load=function(a){ha(r.read(a))});r.print||(r.print=function(){});r.printErr||(r.printErr=r.print);r.arguments||(r.arguments=[]);r.thisProgram||(r.thisProgram="./this.program");r.print=r.print;r.K=r.printErr;r.preRun=[];r.postRun=[];for(s in aa)aa.hasOwnProperty(s)&&(r[s]=aa[s]); -var y={cb:function(a){ja=a},Ua:function(){return ja},fa:function(){return u},xa:function(a){u=a},sa:function(a){switch(a){case "i1":case "i8":return 1;case "i16":return 2;case "i32":return 4;case "i64":return 8;case "float":return 4;case "double":return 8;default:return"*"===a[a.length-1]?y.T:"i"===a[0]?(a=parseInt(a.substr(1)),t(0===a%8),a/8):0}},Ta:function(a){return Math.max(y.sa(a),y.T)},gb:16,ub:function(a,c,b){return!b&&("i64"==a||"double"==a)?8:!a?Math.min(c,8):Math.min(c||(a?y.Ta(a):0),y.T)}, -ba:function(a,c,b){return b&&b.length?(b.splice||(b=Array.prototype.slice.call(b)),b.splice(0,0,c),r["dynCall_"+a].apply(k,b)):r["dynCall_"+a].call(k,c)},Q:[],Ea:function(a){for(var c=0;c=F&&B("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+F+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.");return c},W:function(a,c){return Math.ceil(a/(c?c:16))*(c?c:16)},Bb:function(a,c,b){return b?+(a>>>0)+4294967296*+(c>>>0):+(a>>>0)+4294967296*+(c|0)},Ba:8,T:4,kb:0}; -r.Runtime=y;y.addFunction=y.Ea;y.removeFunction=y.bb;var ka=l,G,la,ja;function t(a,c){a||B("Assertion failed: "+c)}function ma(a){var c=r["_"+a];if(!c)try{c=eval("_"+a)}catch(b){}t(c,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");return c}var na,oa; -(function(){function a(a){a=a.toString().match(g).slice(1);return{arguments:a[0],body:a[1],returnValue:a[2]}}var c=0,b={stackSave:function(){c=y.fa()},stackRestore:function(){y.xa(c)},arrayToC:function(a){var b=y.R(a.length);pa(a,b);return b},stringToC:function(a){var b=0;a!==k&&(void 0!==a&&0!==a)&&(b=y.R((a.length<<2)+1),qa(a,b));return b}},d={string:b.stringToC,array:b.arrayToC};oa=function(a,f,g,h){var a=ma(a),q=[];if(h)for(var w=0;w>0]=c;break;case "i8":H[a>>0]=c;break;case "i16":I[a>>1]=c;break;case "i32":J[a>>2]=c;break;case "i64":la=[c>>>0,(G=c,1<=+sa(G)?0>>0:~~+va((G-+(~~G>>>0))/4294967296)>>>0:0)];J[a>>2]=la[0];J[a+4>>2]=la[1];break;case "float":wa[a>>2]=c;break;case "double":xa[a>>3]=c;break;default:B("invalid type for setValue: "+b)}}r.setValue=ra; -function ya(a,c){c=c||"i8";"*"===c.charAt(c.length-1)&&(c="i32");switch(c){case "i1":return H[a>>0];case "i8":return H[a>>0];case "i16":return I[a>>1];case "i32":return J[a>>2];case "i64":return J[a>>2];case "float":return wa[a>>2];case "double":return xa[a>>3];default:B("invalid type for setValue: "+c)}return k}r.getValue=ya;var za=2,Aa=4;r.ALLOC_NORMAL=0;r.ALLOC_STACK=1;r.ALLOC_STATIC=za;r.ALLOC_DYNAMIC=3;r.ALLOC_NONE=Aa; -function K(a,c,b,d){var g,f;"number"===typeof a?(g=j,f=a):(g=l,f=a.length);var h="string"===typeof c?c:k,b=b==Aa?d:[Ba,y.R,y.ya,y.P][void 0===b?za:b](Math.max(f,h?1:c.length));if(g){d=b;t(0==(b&3));for(a=b+(f&-4);d>2]=0;for(a=b+f;d>0]=0;return b}if("i8"===h)return a.subarray||a.slice?L.set(a,b):L.set(new Uint8Array(a),b),b;for(var d=0,i,p;d>0];if(128<=d)b=j;else if(0==d&&!c)break;g++;if(c&&g==c)break}c||(c=g);var f="";if(!b){for(;0>0],f+=b.Za(d);return f}r.Pointer_stringify=A;r.UTF16ToString=function(a){for(var c=0,b="";;){var d=I[a+2*c>>1];if(0==d)return b;++c;b+=String.fromCharCode(d)}}; -r.stringToUTF16=function(a,c){for(var b=0;b>1]=a.charCodeAt(b);I[c+2*a.length>>1]=0};r.UTF32ToString=function(a){for(var c=0,b="";;){var d=J[a+4*c>>2];if(0==d)return b;++c;65536<=d?(d-=65536,b+=String.fromCharCode(55296|d>>10,56320|d&1023)):b+=String.fromCharCode(d)}};r.stringToUTF32=function(a,c){for(var b=0,d=0;d=g)var f=a.charCodeAt(++d),g=65536+((g&1023)<<10)|f&1023;J[c+4*b>>2]=g;++b}J[c+4*b>>2]=0}; -function Ca(a){function c(b,d,g){var d=d||Infinity,f="",h=[],q;if("N"===a[i]){i++;"K"===a[i]&&i++;for(q=[];"E"!==a[i];)if("S"===a[i]){i++;var x=a.indexOf("_",i);q.push(n[a.substring(i,x)||0]||"?");i=x+1}else if("C"===a[i])q.push(q[q.length-1]),i+=2;else{var x=parseInt(a.substr(i)),O=x.toString().length;if(!x||!O){i--;break}var Qa=a.substr(i+O,x);q.push(Qa);n.push(Qa);i+=O+x}i++;q=q.join("::");d--;if(0===d)return b?[q]:q}else if(("K"===a[i]||v&&"L"===a[i])&&i++,x=parseInt(a.substr(i)))O=x.toString().length, -q=a.substr(i+O,x),i+=O+x;v=l;"I"===a[i]?(i++,x=c(j),O=c(j,1,j),f+=O[0]+" "+q+"<"+x.join(", ")+">"):f=q;a:for(;iM?2*M:M+16777216; -M!==F&&(r.K("increasing TOTAL_MEMORY to "+M+" to be compliant with the asm.js spec"),F=M);t("undefined"!==typeof Int32Array&&"undefined"!==typeof Float64Array&&!!(new Int32Array(1)).subarray&&!!(new Int32Array(1)).set,"JS engine does not provide full typed array support");var N=new ArrayBuffer(F);H=new Int8Array(N);I=new Int16Array(N);J=new Int32Array(N);L=new Uint8Array(N);Fa=new Uint16Array(N);Ga=new Uint32Array(N);wa=new Float32Array(N);xa=new Float64Array(N);J[0]=255;t(255===L[0]&&0===L[3],"Typed arrays 2 must be run on a little-endian system"); -r.HEAP=void 0;r.buffer=N;r.HEAP8=H;r.HEAP16=I;r.HEAP32=J;r.HEAPU8=L;r.HEAPU16=Fa;r.HEAPU32=Ga;r.HEAPF32=wa;r.HEAPF64=xa;function P(a){for(;0>0]=a[b],b+=1}r.writeStringToMemory=qa;function pa(a,c){for(var b=0;b>0]=a[b]}r.writeArrayToMemory=pa; -r.writeAsciiToMemory=function(a,c,b){for(var d=0;d>0]=a.charCodeAt(d);b||(H[c+a.length>>0]=0)};if(!Math.imul||-5!==Math.imul(4294967295,5))Math.imul=function(a,c){var b=a&65535,d=c&65535;return b*d+((a>>>16)*d+b*(c>>>16)<<16)|0};Math.zb=Math.imul;var sa=Math.abs,va=Math.ceil,ua=Math.floor,ta=Math.min,Q=0,Xa=k,Ya=k;function Za(){Q++;r.monitorRunDependencies&&r.monitorRunDependencies(Q)}r.addRunDependency=Za; -function $a(){Q--;r.monitorRunDependencies&&r.monitorRunDependencies(Q);if(0==Q&&(Xa!==k&&(clearInterval(Xa),Xa=k),Ya)){var a=Ya;Ya=k;a()}}r.removeRunDependency=$a;r.preloadedImages={};r.preloadedAudios={};var R=k,Ha=8,C=Ha+8272;Oa.push(); -K([1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,1,2,0,1,2,3,1,2,3,2,3,3,0,1,0,2,1,0,3,2,1,0,3,2,1,3,2,3,0,0,1,0,1,2,0,1,2,3,0,1,2,3,4,0,1,2,3,4,5,0,1,2,3,4,5,6,0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,2,3,4,5,6,7,3,4,5,6,7,4,5,6,7,5,6,7,6,7,7,0,1,0,2,1,0,3,2,1,0,4,3,2,1,0,5,4,3,2,1,0,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,7,6,5,4,3,2,7,6,5,4,3,7,6,5,4,7,6,5,7,6,7,67,65,66,65,67,95,77,65,88,95,66,73,78,32,58,32,37,100,10,0,0,0,0,0,40,45,51,57,64,72,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0, +function b(a){throw a;}var j=!0,k=null,l=!1,n;n||(n=eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));var p={},v;for(v in n)n.hasOwnProperty(v)&&(p[v]=n[v]);var w="object"===typeof process&&"function"===typeof require,x="object"===typeof window,aa="function"===typeof importScripts,ba=!x&&!w&&!aa; +if(w){n.print||(n.print=function(a){process.stdout.write(a+"\n")});n.printErr||(n.printErr=function(a){process.stderr.write(a+"\n")});var ca=require("fs"),da=require("path");n.read=function(a,d){var a=da.normalize(a),c=ca.readFileSync(a);!c&&a!=da.resolve(a)&&(a=path.join(__dirname,"..","src",a),c=ca.readFileSync(a));c&&!d&&(c=c.toString());return c};n.readBinary=function(a){return n.read(a,j)};n.load=function(a){ea(read(a))};n.thisProgram=process.argv[1].replace(/\\/g,"/");n.arguments=process.argv.slice(2); +"undefined"!==typeof module&&(module.exports=n);process.on("uncaughtException",function(a){a instanceof y||b(a)})}else ba?(n.print||(n.print=print),"undefined"!=typeof printErr&&(n.printErr=printErr),n.read="undefined"!=typeof read?read:function(){b("no read() available (jsc?)")},n.readBinary=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");z("object"===typeof a);return a},"undefined"!=typeof scriptArgs?n.arguments=scriptArgs:"undefined"!=typeof arguments&& +(n.arguments=arguments),this.Module=n,eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined")):x||aa?(n.read=function(a){var d=new XMLHttpRequest;d.open("GET",a,l);d.send(k);return d.responseText},"undefined"!=typeof arguments&&(n.arguments=arguments),"undefined"!==typeof console?(n.print||(n.print=function(a){console.log(a)}),n.printErr||(n.printErr=function(a){console.log(a)})):n.print||(n.print=function(){}),x?window.Module=n:n.load=importScripts): +b("Unknown runtime environment. Where are we?");function ea(a){eval.call(k,a)}!n.load&&n.read&&(n.load=function(a){ea(n.read(a))});n.print||(n.print=function(){});n.printErr||(n.printErr=n.print);n.arguments||(n.arguments=[]);n.thisProgram||(n.thisProgram="./this.program");n.print=n.print;n.e=n.printErr;n.preRun=[];n.postRun=[];for(v in p)p.hasOwnProperty(v)&&(n[v]=p[v]); +var B={ca:function(a){fa=a},Z:function(){return fa},D:function(){return A},J:function(a){A=a},H:function(a){switch(a){case "i1":case "i8":return 1;case "i16":return 2;case "i32":return 4;case "i64":return 8;case "float":return 4;case "double":return 8;default:return"*"===a[a.length-1]?B.p:"i"===a[0]?(a=parseInt(a.substr(1)),z(0===a%8),a/8):0}},Y:function(a){return Math.max(B.H(a),B.p)},da:16,oa:function(a,d,c){return!c&&("i64"==a||"double"==a)?8:!a?Math.min(d,8):Math.min(d||(a?B.Y(a):0),B.p)},A:function(a, +d,c){return c&&c.length?(c.splice||(c=Array.prototype.slice.call(c)),c.splice(0,0,d),n["dynCall_"+a].apply(k,c)):n["dynCall_"+a].call(k,d)},n:[],M:function(a){for(var d=0;d=I&&E("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+I+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.");return d},q:function(a,d){return Math.ceil(a/(d?d:16))*(d?d:16)},ua:function(a,d,c){return c?+(a>>>0)+4294967296*+(d>>>0):+(a>>>0)+4294967296*+(d|0)},L:8,p:4,ea:0};n.Runtime=B;B.addFunction=B.M; +B.removeFunction=B.ba;var J=l,K,ga,fa;function z(a,d){a||E("Assertion failed: "+d)}function ha(a){var d=n["_"+a];if(!d)try{d=eval("_"+a)}catch(c){}z(d,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");return d}var ia,ja; +(function(){function a(a){a=a.toString().match(f).slice(1);return{arguments:a[0],body:a[1],returnValue:a[2]}}var d=0,c={stackSave:function(){d=B.D()},stackRestore:function(){B.J(d)},arrayToC:function(a){var c=B.o(a.length);ka(a,c);return c},stringToC:function(a){var c=0;a!==k&&(void 0!==a&&0!==a)&&(c=B.o((a.length<<2)+1),la(a,c));return c}},e={string:c.stringToC,array:c.arrayToC};ja=function(a,f,g,h){var a=ha(a),m=[];if(h)for(var u=0;u>0]=d;break;case "i8":L[a>>0]=d;break;case "i16":M[a>>1]=d;break;case "i32":N[a>>2]=d;break;case "i64":ga=[d>>>0,(K=d,1<=+na(K)?0>>0:~~+qa((K-+(~~K>>>0))/4294967296)>>>0:0)];N[a>>2]=ga[0];N[a+4>>2]=ga[1];break;case "float":O[a>>2]=d;break;case "double":ra[a>>3]=d;break;default:E("invalid type for setValue: "+c)}}n.setValue=ma; +function sa(a,d){d=d||"i8";"*"===d.charAt(d.length-1)&&(d="i32");switch(d){case "i1":return L[a>>0];case "i8":return L[a>>0];case "i16":return M[a>>1];case "i32":return N[a>>2];case "i64":return N[a>>2];case "float":return O[a>>2];case "double":return ra[a>>3];default:E("invalid type for setValue: "+d)}return k}n.getValue=sa;var ta=2,ua=4;n.ALLOC_NORMAL=0;n.ALLOC_STACK=1;n.ALLOC_STATIC=ta;n.ALLOC_DYNAMIC=3;n.ALLOC_NONE=ua; +function P(a,d,c,e){var f,g;"number"===typeof a?(f=j,g=a):(f=l,g=a.length);var h="string"===typeof d?d:k,c=c==ua?e:[va,B.o,B.K,B.k][void 0===c?ta:c](Math.max(g,h?1:d.length));if(f){e=c;z(0==(c&3));for(a=c+(g&-4);e>2]=0;for(a=c+g;e>0]=0;return c}if("i8"===h)return a.subarray||a.slice?S.set(a,c):S.set(new Uint8Array(a),c),c;for(var e=0,i,q;e>0];if(128<=e)c=j;else if(0==e&&!d)break;f++;if(d&&f==d)break}d||(d=f);var g="";if(!c){for(;0>0],g+=c.$(e);return g}n.Pointer_stringify=D;n.UTF16ToString=function(a){for(var d=0,c="";;){var e=M[a+2*d>>1];if(0==e)return c;++d;c+=String.fromCharCode(e)}}; +n.stringToUTF16=function(a,d){for(var c=0;c>1]=a.charCodeAt(c);M[d+2*a.length>>1]=0};n.UTF32ToString=function(a){for(var d=0,c="";;){var e=N[a+4*d>>2];if(0==e)return c;++d;65536<=e?(e-=65536,c+=String.fromCharCode(55296|e>>10,56320|e&1023)):c+=String.fromCharCode(e)}};n.stringToUTF32=function(a,d){for(var c=0,e=0;e=f)var g=a.charCodeAt(++e),f=65536+((f&1023)<<10)|g&1023;N[d+4*c>>2]=f;++c}N[d+4*c>>2]=0}; +function wa(a){function d(c,e,f){var e=e||Infinity,g="",h=[],t;if("N"===a[i]){i++;"K"===a[i]&&i++;for(t=[];"E"!==a[i];)if("S"===a[i]){i++;var r=a.indexOf("_",i);t.push(s[a.substring(i,r)||0]||"?");i=r+1}else if("C"===a[i])t.push(t[t.length-1]),i+=2;else{var r=parseInt(a.substr(i)),m=r.toString().length;if(!r||!m){i--;break}var Ga=a.substr(i+m,r);t.push(Ga);s.push(Ga);i+=m+r}i++;t=t.join("::");e--;if(0===e)return c?[t]:t}else if(("K"===a[i]||C&&"L"===a[i])&&i++,r=parseInt(a.substr(i)))m=r.toString().length, +t=a.substr(i+m,r),i+=m+r;C=l;"I"===a[i]?(i++,r=d(j),m=d(j,1,j),g+=m[0]+" "+t+"<"+r.join(", ")+">"):g=t;a:for(;iT?2*T:T+16777216; +T!==I&&(n.e("increasing TOTAL_MEMORY to "+T+" to be compliant with the asm.js spec"),I=T);z("undefined"!==typeof Int32Array&&"undefined"!==typeof Float64Array&&!!(new Int32Array(1)).subarray&&!!(new Int32Array(1)).set,"JS engine does not provide full typed array support");var U=new ArrayBuffer(I);L=new Int8Array(U);M=new Int16Array(U);N=new Int32Array(U);S=new Uint8Array(U);za=new Uint16Array(U);Aa=new Uint32Array(U);O=new Float32Array(U);ra=new Float64Array(U);N[0]=255;z(255===S[0]&&0===S[3],"Typed arrays 2 must be run on a little-endian system"); +n.HEAP=void 0;n.buffer=U;n.HEAP8=L;n.HEAP16=M;n.HEAP32=N;n.HEAPU8=S;n.HEAPU16=za;n.HEAPU32=Aa;n.HEAPF32=O;n.HEAPF64=ra;function V(a){for(;0>0]=a[c],c+=1}n.writeStringToMemory=la;function ka(a,d){for(var c=0;c>0]=a[c]}n.writeArrayToMemory=ka; +n.writeAsciiToMemory=function(a,d,c){for(var e=0;e>0]=a.charCodeAt(e);c||(L[d+a.length>>0]=0)};if(!Math.imul||-5!==Math.imul(4294967295,5))Math.imul=function(a,d){var c=a&65535,e=d&65535;return c*e+((a>>>16)*e+c*(d>>>16)<<16)|0};Math.ta=Math.imul;var na=Math.abs,qa=Math.ceil,pa=Math.floor,oa=Math.min,W=0,Ra=k,X=k;function Sa(){W++;n.monitorRunDependencies&&n.monitorRunDependencies(W)}n.addRunDependency=Sa; +function Ta(){W--;n.monitorRunDependencies&&n.monitorRunDependencies(W);if(0==W&&(Ra!==k&&(clearInterval(Ra),Ra=k),X)){var a=X;X=k;a()}}n.removeRunDependency=Ta;n.preloadedImages={};n.preloadedAudios={};var Y=k,Ba=8,F=Ba+8272;Ja.push(); +P([1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,1,2,0,1,2,3,1,2,3,2,3,3,0,1,0,2,1,0,3,2,1,0,3,2,1,3,2,3,0,0,1,0,1,2,0,1,2,3,0,1,2,3,4,0,1,2,3,4,5,0,1,2,3,4,5,6,0,1,2,3,4,5,6,7,1,2,3,4,5,6,7,2,3,4,5,6,7,3,4,5,6,7,4,5,6,7,5,6,7,6,7,7,0,1,0,2,1,0,3,2,1,0,4,3,2,1,0,5,4,3,2,1,0,6,5,4,3,2,1,0,7,6,5,4,3,2,1,0,7,6,5,4,3,2,1,7,6,5,4,3,2,7,6,5,4,3,7,6,5,4,7,6,5,7,6,7,67,65,66,65,67,95,77,65,88,95,66,73,78,32,58,32,37,100,10,0,0,0,0,0,40,45,51,57,64,72,0,0,29,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0, 0,0,33,0,0,0,34,0,0,0,34,0,0,0,35,0,0,0,35,0,0,0,36,0,0,0,36,0,0,0,37,0,0,0,37,0,0,0,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,2,3,4,5,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,7,7,7,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,12,12,0,0,0,0,0,0,0,2,5,9,1,4,8,12,3,7,11,14,6,10,13,15,0,0,0,0,0,0,0,0,0,2,1,3,0,0,0,0,0,2,5,9,14,20, 27,35,1,4,8,13,19,26,34,42,3,7,12,18,25,33,41,48,6,11,17,24,32,40,47,53,10,16,23,31,39,46,52,57,15,22,30,38,45,51,56,60,21,29,37,44,50,55,59,62,28,36,43,49,54,58,61,63,0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,0,1,2,3,16,17,18,19,4,5,6,7,20,21,22,23,8,9,10,11,24,25,26,27,12,13,14,15,28,29,30,31,32,33,34,35,48,49,50,51,36,37,38,39,52,53,54,55,40,41,42,43,56,57,58,59,44,45,46,47,60,61,62,63,0,1,4,5,2,3,4,5,6,6,8,8,7,7,8,8,1,1,1,0,1,1,0,0,1,0,0,0, 0,0,0,0,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,2,1,0,0,2,1,0,0,2,1,0,0,2,1,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,153,200,139,141,157,154,154,154,154,154,154,154,154,184,154,154,154,184,63,139,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,154,153,138,138,111,141,94,138,182,154,139,139,139,139,139,139,110,110,124,125,140,153,125,127,140,109,111,143,127,111,79,108,123,63,110,110,124,125,140,153,125,127,140,109,111,143,127,111,79,108,123,63,91,171,134,141,111,111,125,110,110,94,124,108,124,107, @@ -72,77 +72,51 @@ K([1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,1,2,0,1,2,3,1,2,3,2,3 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,54,0,0,0,0,0,0,0,3,1,1,0,36,120,37,120,38,120,0,0,0,0,0,0,56,0,0,0,0,0,0,0,3, 1,0,16,36,120,37,120,38,120,0,0,0,0,0,0,58,0,0,0,0,0,0,0,3,0,0,16,36,120,37,120,38,120,0,0,0,0,0,0,32,0,0,0,0,0,0,0,1,0,0,0,36,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",Aa,y.Ba);var S=y.W(K(12,"i8",za),8);t(0==S%8);r._bitshift64Ashr=ab;function bb(a){r.exit(a)}r._i64Subtract=cb;r._i64Add=db;r._memset=eb;r._bitshift64Shl=fb;function gb(a){return 0.5!==Math.abs(a%1)?Math.round(a):a+a%2+(0>a?1:-1)}r._memcpy=hb;var ib=0;function jb(a){return J[ib>>2]=a} -function kb(a){kb.Na||(D=D+4095&-4096,kb.Na=j,t(y.P),kb.Fa=y.P,y.P=function(){B("cannot dynamically allocate, sbrk now has control")});var c=D;0!=a&&kb.Fa(a);return c}r._strlen=lb;r._llvm_bswap_i32=mb;ib=y.ya(4);J[ib>>2]=0;Ia=u=y.W(C);Ja=Ia+La;Ka=D=y.W(Ja);t(Ka>2]=c);return c},_emscripten_memcpy_big:function(a,c,b){L.set(L.subarray(c,c+b),a);return a},_rint:gb,_exit:function(a){bb(a)},_sysconf:function(a){switch(a){case 30:return 4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809; +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",ua,B.L);var Ua=B.q(P(12,"i8",ta),8);z(0==Ua%8);n._bitshift64Ashr=Va;function Wa(a){n.exit(a)}n._i64Subtract=Xa;n._i64Add=Ya;n._memset=Za;n._bitshift64Shl=$a;function ab(a){return 0.5!==Math.abs(a%1)?Math.round(a):a+a%2+(0>a?1:-1)}n._memcpy=bb;var cb=0;function db(a){return N[cb>>2]=a} +function Z(a){Z.W||(H=H+4095&-4096,Z.W=j,z(B.k),Z.N=B.k,B.k=function(){E("cannot dynamically allocate, sbrk now has control")});var d=H;0!=a&&Z.N(a);return d}n._strlen=eb;n._llvm_bswap_i32=fb;cb=B.K(4);N[cb>>2]=0;Da=A=B.q(F);Ea=Da+Ha;Fa=H=B.q(Ea);z(Fa>2]=d);return d},_emscripten_memcpy_big:function(a,d,c){S.set(S.subarray(d,d+c),a);return a},_rint:ab,_exit:function(a){Wa(a)},_sysconf:function(a){switch(a){case 30:return 4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809; case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; -case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}jb(22);return-1}, -___errno_location:function(){return ib},STACKTOP:u,STACK_MAX:Ja,tempDoublePtr:S,ABORT:ka,cttz_i8:ob,ctlz_i8:nb,NaN:NaN,Infinity:Infinity};// EMSCRIPTEN_START_ASM -var T=(function(global,env,buffer) { +case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}db(22);return-1}, +___errno_location:function(){return cb},STACKTOP:A,STACK_MAX:Ea,tempDoublePtr:Ua,ABORT:J,cttz_i8:hb,ctlz_i8:gb,NaN:NaN,Infinity:Infinity};// EMSCRIPTEN_START_ASM +var $=(function(global,env,buffer) { "use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=env.ctlz_i8|0;var o=0;var p=0;var q=0;var r=0;var s=+env.NaN,t=+env.Infinity;var u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0.0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=env.abort;var ba=env.assert;var ca=env.min;var da=env.invoke_iiii;var ea=env.invoke_viiiiiiiiii;var fa=env.invoke_viiiiiii;var ga=env.invoke_viiiiiiiiiiiii;var ha=env.invoke_vi;var ia=env.invoke_vii;var ja=env.invoke_iiiiiii;var ka=env.invoke_ii;var la=env.invoke_viii;var ma=env.invoke_viiiiiiii;var na=env.invoke_iiiii;var oa=env.invoke_viiiiii;var pa=env.invoke_iii;var qa=env.invoke_iiiiii;var ra=env.invoke_viiii;var sa=env._lrint;var ta=env.__exit;var ua=env._abort;var va=env.___setErrNo;var wa=env._sbrk;var xa=env._time;var ya=env._emscripten_memcpy_big;var za=env._rint;var Aa=env._exit;var Ba=env._sysconf;var Ca=env.___errno_location;var Da=0.0; // EMSCRIPTEN_START_FUNCS -function nc(e,f,g,h,j,k,l,m,n,o,p,q,r){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;s=i;i=i+32|0;D=s;w=s+24|0;t=s+16|0;z=e+136|0;v=c[z>>2]|0;M=c[q>>2]|0;c[w>>2]=M;O=c[q+4>>2]|0;A=w+4|0;c[A>>2]=O;N=c[r>>2]|0;c[t>>2]=N;q=c[r+4>>2]|0;x=t+4|0;c[x>>2]=q;y=a[v+31254>>0]|0;do if(y<<24>>24){if((o|0)==1){c[v+288>>2]=d[v+p+31268>>0];if((c[(c[e+180>>2]|0)+4>>2]|0)==3){c[v+292>>2]=d[v+p+31277>>0];c[v+296>>2]=d[v+p+31281>>0];break}else{c[v+292>>2]=d[v+31277>>0];c[v+296>>2]=d[v+31281>>0];break}}}else{c[v+288>>2]=d[v+31268>>0];c[v+292>>2]=d[v+31277>>0];c[v+296>>2]=d[v+31281>>0]}while(0);r=e+180|0;G=c[r>>2]|0;B=(c[G+13076>>2]|0)>>>0>>0;if(((!B?(c[G+13072>>2]|0)>>>0>>0:0)?(d[v+31255>>0]|0)>(o|0):0)?!(y<<24>>24!=0&(o|0)==0):0)y=(Pb(e,n)|0)&255;else{if((c[G+13088>>2]|0)==0?(c[v+31244>>2]|0)==0:0)G=(o|0)==0&(c[v+31248>>2]|0)!=0;else G=0;if(B)y=1;else y=(y<<24>>24!=0&(o|0)==0|G)&1}B=(n|0)>2;G=c[(c[r>>2]|0)+4>>2]|0;if(B)if(!G)L=q;else F=20;else if((G|0)==3)F=20;else L=q;do if((F|0)==20){G=(o|0)==0;if(!((M|0)==0&(G^1))){M=Qb(e,o)|0;c[w>>2]=M;if((c[(c[r>>2]|0)+4>>2]|0)==2?y<<24>>24==0|(n|0)==3:0){O=Qb(e,o)|0;c[A>>2]=O}if(!G)F=25}else{M=0;F=25}if((F|0)==25)if(!N){N=0;L=q;break}N=Qb(e,o)|0;c[t>>2]=N;if((c[(c[r>>2]|0)+4>>2]|0)==2?y<<24>>24==0|(n|0)==3:0){L=Qb(e,o)|0;c[x>>2]=L}else L=q}while(0);if(!(y<<24>>24)){A=c[r>>2]|0;x=c[A+13072>>2]|0;q=1<>2]|0;if(((o|0)==0?(c[v+31244>>2]|0)!=1:0)&(M|0)==0&(N|0)==0)if((c[A+4>>2]|0)==2?(O|L|0)!=0:0)F=37;else o=1;else F=37;if((F|0)==37){o=Rb(e,o)|0;A=c[r>>2]|0}G=c[z>>2]|0;A=n-(c[A+13172>>2]|0)|0;z=G+31244|0;if((c[z>>2]|0)==1){K=1<>2]&15](e,f,g,0)}K=(o|0)!=0;M=(M|N|0)==0;do if(K)if(M)F=46;else{H=0;F=48}else if(M){M=c[r>>2]|0;N=c[M+4>>2]|0;if((N|0)==2){if(O){F=46;break}if(L){O=0;F=46;break}}if(!((c[z>>2]|0)!=1|(N|0)==0)){if(B|(N|0)==3){t=1<<(c[M+13172>>2]|0)+A;h=1<<(c[M+13184>>2]|0)+A;nd(e,f,g,t,h);w=e+(A+ -2<<2)+5832|0;Sa[c[w>>2]&15](e,f,g,1);Sa[c[w>>2]&15](e,f,g,2);if((c[(c[r>>2]|0)+4>>2]|0)!=2)break;O=(1<>2]&15](e,f,O,1);Sa[c[w>>2]&15](e,f,O,2);break}if((p|0)==3?(J=1<>2]|0)+n,nd(e,h,j,J,I),H=e+(n+ -2<<2)+5832|0,Sa[c[H>>2]&15](e,h,j,1),Sa[c[H>>2]&15](e,h,j,2),(c[(c[r>>2]|0)+4>>2]|0)==2):0){O=(1<>2]&15](e,h,O,1);Sa[c[H>>2]&15](e,h,O,2)}}}else{H=0;F=48}while(0);if((F|0)==46)if((c[(c[r>>2]|0)+4>>2]|0)==2){H=(O|L|0)==0;F=48}else{H=1;F=48}a:do if((F|0)==48){F=e+184|0;do if((a[(c[F>>2]|0)+22>>0]|0)!=0?(E=G+300|0,(a[E>>0]|0)==0):0){O=Db(e)|0;J=G+280|0;c[J>>2]=O;if(O){O=(Eb(e)|0)==1;I=c[J>>2]|0;if(O){I=0-I|0;c[J>>2]=I}}else I=0;a[E>>0]=1;E=(c[(c[r>>2]|0)+13192>>2]|0)/2|0;J=-26-E|0;E=E+25|0;if(!((I|0)<(J|0)|(I|0)>(E|0))){Wb(e,k,l,m);break}O=c[e+4>>2]|0;c[D>>2]=I;c[D+4>>2]=J;c[D+8>>2]=E;$a(O,16,1944,D);O=-1094995529;i=s;return O|0}while(0);if((!((a[e+3048>>0]|0)==0|H)?(a[G+31256>>0]|0)==0:0)?(C=G+301|0,(a[C>>0]|0)==0):0){if(!(Fb(e)|0)){a[G+302>>0]=0;a[G+303>>0]=0}else{m=c[F>>2]|0;if(!(a[m+1633>>0]|0))l=0;else{l=Gb(e)|0;$a(c[e+4>>2]|0,16,2008,D);m=c[F>>2]|0}a[G+302>>0]=a[m+l+1634>>0]|0;a[G+303>>0]=a[(c[F>>2]|0)+l+1639>>0]|0}a[C>>0]=1}if((c[z>>2]|0)==1&(n|0)<4){m=c[G+288>>2]|0;if((m+ -6|0)>>>0<9)k=2;else k=(m+ -22|0)>>>0<9&1;m=c[G+292>>2]|0;if((m+ -6|0)>>>0<9)m=2;else m=(m+ -22|0)>>>0<9&1}else{k=0;m=0}l=G+304|0;a[l>>0]=0;if(K)Ub(e,f,g,n,k,0);k=c[r>>2]|0;C=c[k+4>>2]|0;if(C){if(!(B|(C|0)==3)){if((p|0)!=3)break;A=1<>2]|0)+n;l=e+(n+ -2<<2)+5832|0;k=0;do{if((c[z>>2]|0)==1){O=(k<>2]&15](e,h,O,1)}if(c[w+(k<<2)>>2]|0)Ub(e,h,(k<>2]|0)+4>>2]|0)==2?2:1)|0));w=0;while(1){if((c[z>>2]|0)==1){O=(w<>2]&15](e,h,O,2)}if(c[t+(w<<2)>>2]|0)Ub(e,h,(w<=(((c[(c[r>>2]|0)+4>>2]|0)==2?2:1)|0))break a}}h=1<<(c[k+13172>>2]|0)+A;j=1<<(c[k+13184>>2]|0)+A;do if((a[(c[F>>2]|0)+1630>>0]|0)==0|K^1)a[l>>0]=0;else{if(c[z>>2]|0){O=(c[G+296>>2]|0)==4;a[l>>0]=O&1;if(!O)break}else a[l>>0]=1;oc(e,0)}while(0);B=A+ -2|0;k=e+(B<<2)+5832|0;p=e+160|0;D=G+320|0;F=G+11680|0;C=1<0;B=e+(B<<2)+5888|0;G=G+284|0;K=0;do{if((c[z>>2]|0)==1){O=(K<>2]&15](e,f,O,1)}do if(!(c[w+(K<<2)>>2]|0)){if(!(a[l>>0]|0))break;O=c[p>>2]|0;I=c[O+36>>2]|0;H=c[r>>2]|0;J=$(g>>c[H+13184>>2],I)|0;J=(c[O+4>>2]|0)+(J+(f>>c[H+13172>>2]<>2]))|0;if(E){K=0;do{b[F+(K<<1)>>1]=($(b[D+(K<<1)>>1]|0,c[G>>2]|0)|0)>>>3;K=K+1|0}while((K|0)!=(C|0));K=C}else K=0;Sa[c[B>>2]&15](J,F,I,c[H+52>>2]|0)}else Ub(e,f,(K<>2]|0)+4>>2]|0)==2?2:1)|0));if(!(a[l>>0]|0))J=0;else{oc(e,1);J=0}do{if((c[z>>2]|0)==1){O=(J<>2]&15](e,f,O,2)}do if(!(c[t+(J<<2)>>2]|0)){if(!(a[l>>0]|0))break;O=c[p>>2]|0;w=c[O+40>>2]|0;H=c[r>>2]|0;I=$(g>>c[H+13188>>2],w)|0;I=(c[O+8>>2]|0)+(I+(f>>c[H+13176>>2]<>2]))|0;if(E){J=0;do{b[F+(J<<1)>>1]=($(b[D+(J<<1)>>1]|0,c[G>>2]|0)|0)>>>3;J=J+1|0}while((J|0)!=(C|0));J=C}else J=0;Sa[c[B>>2]&15](I,F,w,c[H+52>>2]|0)}else Ub(e,f,(J<>2]|0)+4>>2]|0)==2?2:1)|0))}}while(0);if((o|0)!=0?(u=1<0):0){t=e+7620|0;r=0;do{w=$(r+g>>x,y)|0;o=0;do{a[(c[t>>2]|0)+((o+f>>x)+w)>>0]=1;o=o+q|0}while((o|0)<(u|0));r=r+q|0}while((r|0)<(u|0))}if(((a[e+3029>>0]|0)==0?(Xb(e,f,g,n),(a[(c[e+184>>2]|0)+40>>0]|0)!=0):0)?(a[v+31256>>0]|0)!=0:0)mc(e,f,g,n)}else{v=n+ -1|0;u=1<>2]|0;f=Sb(a,b)|0;if(!f){c[e+284>>2]=0;i=d;return}else{c[e+284>>2]=1-((Tb(a,b)|0)<<1)<>2]|0;f=a+8|0;g=c[f>>2]|0;a=c[a+16>>2]|0;l=e+(g>>>3)|0;l=(ye(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0)|0)<<(g&7);h=g+16|0;h=a>>>0>h>>>0?h:a;j=e+(h>>>3)|0;h=(ye(d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24|0)|0)<<(h&7)>>>16|l&-65536;j=h>>>0>65535;h=j?l>>>16:h;j=j?16:0;if(h&65280){j=j|8;h=h>>>8}h=(d[7416+h>>0]|0)+j|0;j=31-h|0;l=0-g|0;k=a-g|0;if((j|0)>=(l|0))l=(k|0)<(j|0)?k:j;g=l+g|0;c[f>>2]=g;l=j+1|0;if(!l){l=0;l=l+ -1|0;i=b;return l|0}k=e+(g>>>3)|0;k=(ye(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0)<<(g&7);if((l|0)<26){l=g+l|0;c[f>>2]=a>>>0>l>>>0?l:a;l=k>>>h;l=l+ -1|0;i=b;return l|0}else{h=g+16|0;h=a>>>0>h>>>0?h:a;c[f>>2]=h;l=j+ -15|0;g=e+(h>>>3)|0;j=(ye(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0)<<(h&7)>>>(47-j|0);h=h+l|0;c[f>>2]=a>>>0>h>>>0?h:a;l=j|k>>>16<>2]=1;c[a+4>>2]=2;c[a+8>>2]=3;c[a+12>>2]=4;c[a+16>>2]=5;c[a+20>>2]=6;c[a+24>>2]=7;c[a+28>>2]=8;c[a+32>>2]=1;c[a+36>>2]=1;c[a+40>>2]=2;c[a+44>>2]=3;c[a+48>>2]=4;return}function rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Gc(a,b,c,2,d);i=e;return}function sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Gc(a,b,c,3,d);i=e;return}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Gc(a,b,c,4,d);i=e;return}function uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Gc(a,b,c,5,d);i=e;return}function vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Fc(a,b,c,d,2);i=e;return}function wc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Fc(a,b,c,d,3);i=e;return}function xc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Fc(a,b,c,d,4);i=e;return}function yc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Fc(a,b,c,d,5);i=e;return}function zc(c,d,f,g,h,j){c=c|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;k=1<0;if(m){n=k;o=0;do{n=(e[f+(o<<1)>>1]|0)+n+(e[d+(o<<1)>>1]|0)|0;o=o+1|0}while((o|0)!=(k|0));n=n>>h+1;h=Fe(n|0,((n|0)<0)<<31>>31|0,65537,65537)|0;o=D;if(m){m=0;do{p=$(m,g)|0;q=0;do{r=c+(q+p<<1)|0;s=r;a[s>>0]=h;a[s+1>>0]=h>>8;a[s+2>>0]=h>>16;a[s+3>>0]=h>>24;r=r+4|0;a[r>>0]=o;a[r+1>>0]=o>>8;a[r+2>>0]=o>>16;a[r+3>>0]=o>>24;q=q+4|0}while((q|0)<(k|0));m=m+1|0}while((m|0)!=(k|0))}}else n=k>>h+1;if(!((j|0)==0&(k|0)<32)){i=l;return}b[c>>1]=((n<<1)+2+(e[f>>1]|0)+(e[d>>1]|0)|0)>>>2;j=(k|0)>1;if(!j){i=l;return}m=(n*3|0)+2|0;h=1;do{b[c+(h<<1)>>1]=(m+(e[d+(h<<1)>>1]|0)|0)>>>2;h=h+1|0}while((h|0)!=(k|0));if(!j){i=l;return}d=(n*3|0)+2|0;j=1;do{b[c+(($(j,g)|0)<<1)>>1]=(d+(e[f+(j<<1)>>1]|0)|0)>>>2;j=j+1|0}while((j|0)!=(k|0));i=l;return}function Ac(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Ec(a,b,c,d,e,f,4,g,h);i=j;return}function Bc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Ec(a,b,c,d,e,f,8,g,h);i=j;return}function Cc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Ec(a,b,c,d,e,f,16,g,h);i=j;return}function Dc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Ec(a,b,c,d,e,f,32,g,h);i=j;return}function Ec(f,g,h,j,k,l,m,n,o){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;p=i;i=i+208|0;s=p;q=c[2576+(l+ -2<<2)>>2]|0;r=s+(m<<1)|0;t=($(q,m)|0)>>5;if((l|0)>17){v=g+ -2|0;u=l+ -11|0;if(u>>>0<15&(t|0)<-1){if((m|0)>=0){v=0;do{x=g+(v+ -1<<1)|0;z=x;z=d[z>>0]|d[z+1>>0]<<8|d[z+2>>0]<<16|d[z+3>>0]<<24;x=x+4|0;x=d[x>>0]|d[x+1>>0]<<8|d[x+2>>0]<<16|d[x+3>>0]<<24;y=s+(v+m<<1)|0;w=y;b[w>>1]=z;b[w+2>>1]=z>>>16;y=y+4|0;b[y>>1]=x;b[y+2>>1]=x>>>16;v=v+4|0}while((v|0)<=(m|0))}if((t|0)<0){u=c[2712+(u<<2)>>2]|0;do{b[s+(t+m<<1)>>1]=b[h+((($(u,t)|0)+128>>8)+ -1<<1)>>1]|0;t=t+1|0}while((t|0)!=0)}}else r=v;s=(m|0)>0;if(s){t=0;do{x=t;t=t+1|0;w=$(t,q)|0;u=w>>5;w=w&31;if(!w){u=u+1|0;w=$(x,j)|0;v=0;do{y=r+(u+v<<1)|0;A=y;A=d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24;y=y+4|0;y=d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24;z=f+(v+w<<1)|0;x=z;a[x>>0]=A;a[x+1>>0]=A>>8;a[x+2>>0]=A>>16;a[x+3>>0]=A>>24;z=z+4|0;a[z>>0]=y;a[z+1>>0]=y>>8;a[z+2>>0]=y>>16;a[z+3>>0]=y>>24;v=v+4|0}while((v|0)<(m|0))}else{v=32-w|0;x=$(x,j)|0;y=0;do{A=y+u|0;z=$(e[r+(A+1<<1)>>1]|0,v)|0;b[f+(y+x<<1)>>1]=(z+16+($(e[r+(A+2<<1)>>1]|0,w)|0)|0)>>>5;A=y|1;z=A+u|0;B=$(e[r+(z+1<<1)>>1]|0,v)|0;b[f+(A+x<<1)>>1]=(B+16+($(e[r+(z+2<<1)>>1]|0,w)|0)|0)>>>5;A=y|2;z=A+u|0;B=$(e[r+(z+1<<1)>>1]|0,v)|0;b[f+(A+x<<1)>>1]=(B+16+($(e[r+(z+2<<1)>>1]|0,w)|0)|0)>>>5;A=y|3;z=A+u|0;B=$(e[r+(z+1<<1)>>1]|0,v)|0;b[f+(A+x<<1)>>1]=(B+16+($(e[r+(z+2<<1)>>1]|0,w)|0)|0)>>>5;y=y+4|0}while((y|0)<(m|0))}}while((t|0)!=(m|0))}if(!((l|0)==26&(k|0)==0&(m|0)<32&(n|0)==0&s)){i=p;return}k=h+ -2|0;l=1<>1]|0)-(e[k>>1]|0)>>1)+(e[g>>1]|0)|0;if(q&n)q=0-q>>31&l;b[f+(($(o,j)|0)<<1)>>1]=q;o=o+1|0}while((o|0)!=(m|0));i=p;return}v=h+ -2|0;u=l+ -11|0;if(u>>>0<15&(t|0)<-1){if((m|0)>=0){v=0;do{A=h+(v+ -1<<1)|0;y=A;y=d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24;A=A+4|0;A=d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24;B=s+(v+m<<1)|0;z=B;b[z>>1]=y;b[z+2>>1]=y>>>16;B=B+4|0;b[B>>1]=A;b[B+2>>1]=A>>>16;v=v+4|0}while((v|0)<=(m|0))}if((t|0)<0){u=c[2712+(u<<2)>>2]|0;do{b[s+(t+m<<1)>>1]=b[g+((($(u,t)|0)+128>>8)+ -1<<1)>>1]|0;t=t+1|0}while((t|0)!=0)}}else r=v;s=(m|0)>0;if(s){u=0;do{t=u;u=u+1|0;x=$(u,q)|0;y=x>>5;x=x&31;if(!x){w=y+1|0;v=0;do{b[f+(($(v,j)|0)+t<<1)>>1]=b[r+(w+v<<1)>>1]|0;v=v+1|0}while((v|0)!=(m|0))}else{w=32-x|0;v=0;do{B=v+y|0;A=$(e[r+(B+1<<1)>>1]|0,w)|0;b[f+(($(v,j)|0)+t<<1)>>1]=(A+16+($(e[r+(B+2<<1)>>1]|0,x)|0)|0)>>>5;v=v+1|0}while((v|0)!=(m|0))}}while((u|0)!=(m|0))}if(!((l|0)==10&(k|0)==0&(m|0)<32&(n|0)==0&s)){i=p;return}j=g+ -2|0;k=1<>1]|0)-(e[j>>1]|0)>>1)+(e[h>>1]|0)|0;if(n&o)n=0-n>>31&k;b[f+(l<<1)>>1]=n;n=l|1;q=((e[g+(n<<1)>>1]|0)-(e[j>>1]|0)>>1)+(e[h>>1]|0)|0;if(q&o)q=0-q>>31&k;b[f+(n<<1)>>1]=q;n=l|2;q=((e[g+(n<<1)>>1]|0)-(e[j>>1]|0)>>1)+(e[h>>1]|0)|0;if(q&o)q=0-q>>31&k;b[f+(n<<1)>>1]=q;n=l|3;q=((e[g+(n<<1)>>1]|0)-(e[j>>1]|0)>>1)+(e[h>>1]|0)|0;if(q&o)q=0-q>>31&k;b[f+(n<<1)>>1]=q;l=l+4|0}while((l|0)<(m|0));i=p;return}function Fc(a,c,d,f,g){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;m=i;j=1<>1]|0,l-r|0)|0;s=r;r=r+1|0;u=$(e[h>>1]|0,r)|0;t=$(e[c+(s<<1)>>1]|0,p)|0;b[a+(s+q<<1)>>1]=v+j+u+t+($(e[k>>1]|0,n)|0)>>g}while((r|0)!=(j|0))}while((n|0)!=(j|0));i=m;return}function Gc(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;k=i;i=i+528|0;t=k+390|0;y=k+260|0;v=k+130|0;u=k;p=c[d+136>>2]|0;q=c[d+180>>2]|0;m=c[q+52>>2]|0;P=c[q+(j<<2)+13168>>2]|0;Q=c[q+(j<<2)+13180>>2]|0;G=1<>2]|0;pa=G<>2]|0;ea=f>>da&fa;R=g>>da&fa;Z=fa+2|0;ha=($(R,Z)|0)+ea|0;Y=c[d+184>>2]|0;ga=c[Y+1684>>2]|0;ha=c[ga+(ha<<2)>>2]|0;ca=c[d+160>>2]|0;o=(c[ca+(j<<2)+32>>2]|0)>>>1;ca=c[ca+(j<<2)>>2]|0;ia=($(o,g>>Q)|0)+(f>>P)|0;l=ca+(ia<<1)|0;O=c[q+13156>>2]|0;F=(j|0)==0;n=c[(F?p+288|0:p+292|0)>>2]|0;s=t+2|0;x=v+2|0;w=y+2|0;r=u+2|0;if(!(c[p+31288>>2]|0))ra=0;else ra=(ha|0)>(c[ga+(ea+ -1+($(fa&R+(pa>>da),Z)|0)<<2)>>2]|0);na=ra&1;U=c[p+31292>>2]|0;T=c[p+31300>>2]|0;S=c[p+31296>>2]|0;if(!(c[p+31304>>2]|0))Z=0;else Z=(ha|0)>(c[ga+(($(Z,R+ -1|0)|0)+(fa&ea+(oa>>da))<<2)>>2]|0);R=Z&1;fa=(pa<<1)+g|0;ga=q+13124|0;ma=c[ga>>2]|0;da=pa+g|0;fa=((fa|0)>(ma|0)?ma:fa)-da>>Q;ma=(oa<<1)+f|0;ha=q+13120|0;ja=c[ha>>2]|0;ea=oa+f|0;ma=((ma|0)>(ja|0)?ja:ma)-ea>>P;ja=Y+20|0;if((a[ja>>0]|0)==1){Y=c[q+13084>>2]|0;qa=pa>>Y;oa=oa>>Y;sa=(1<>Y;va=da>>Y;wa=(c[q+13160>>2]|0)-va|0;wa=(qa|0)>(wa|0)?wa:qa;if((wa|0)>0){ta=c[(c[d+3488>>2]|0)+16>>2]|0;na=0;ua=0;do{na=(a[ta+(($(ua+va|0,O)|0)+ra)>>0]|0)==0|na;ua=ua+2|0}while((ua|0)<(wa|0))}else na=0}if(!((U|0)!=1|sa)){ra=f+ -1>>Y;sa=g>>Y;wa=(c[q+13160>>2]|0)-sa|0;qa=(qa|0)>(wa|0)?wa:qa;if((qa|0)>0){ta=c[(c[d+3488>>2]|0)+16>>2]|0;U=0;ua=0;do{U=(a[ta+(($(ua+sa|0,O)|0)+ra)>>0]|0)==0|U;ua=ua+2|0}while((ua|0)<(qa|0))}else U=0}if((T|0)==1){T=($(g+ -1>>Y,O)|0)+(f+ -1>>Y)|0;T=(a[(c[(c[d+3488>>2]|0)+16>>2]|0)+T>>0]|0)==0&1}pa=(pa|0)!=0;if(!((S|0)!=1|pa)){S=f>>Y;qa=O-S|0;qa=(oa|0)>(qa|0)?qa:oa;if((qa|0)>0){sa=($(g+ -1>>Y,O)|0)+S|0;ra=c[(c[d+3488>>2]|0)+16>>2]|0;S=0;ta=0;do{S=(a[ra+(sa+ta)>>0]|0)==0|S;ta=ta+2|0}while((ta|0)<(qa|0))}else S=0}if(!(pa|Z^1)){R=ea>>Y;Z=O-R|0;Z=(oa|0)>(Z|0)?Z:oa;if((Z|0)>0){oa=($(g+ -1>>Y,O)|0)+R|0;Y=c[(c[d+3488>>2]|0)+16>>2]|0;R=0;pa=0;do{R=(a[Y+(oa+pa)>>0]|0)==0|R;pa=pa+2|0}while((pa|0)<(Z|0))}else R=0}Y=s+0|0;Z=Y+128|0;do{b[Y>>1]=32896;Y=Y+2|0}while((Y|0)<(Z|0));Y=x+0|0;Z=Y+128|0;do{b[Y>>1]=32896;Y=Y+2|0}while((Y|0)<(Z|0));b[v>>1]=128;oa=R}else oa=R;Z=(T|0)!=0;if(Z){wa=b[ca+(ia+~o<<1)>>1]|0;b[t>>1]=wa;b[v>>1]=wa}Y=(S|0)!=0;if(Y)we(x|0,ca+(ia-o<<1)|0,G<<1|0)|0;R=(oa|0)!=0;if(R?(la=G+1|0,we(v+(la<<1)|0,ca+(G-o+ia<<1)|0,G<<1|0)|0,_=Fe(e[ca+(G+ -1-o+ia+ma<<1)>>1]|0,0,65537,65537)|0,aa=D,ka=G-ma|0,(ka|0)>0):0){la=ma+la|0;ma=0;do{wa=v+(la+ma<<1)|0;va=wa;b[va>>1]=_;b[va+2>>1]=_>>>16;wa=wa+4|0;b[wa>>1]=aa;b[wa+2>>1]=aa>>>16;ma=ma+4|0}while((ma|0)<(ka|0))}_=(U|0)!=0;if(_&(G|0)>0){aa=ia+ -1|0;ka=0;do{wa=ka;ka=ka+1|0;b[t+(ka<<1)>>1]=b[ca+(aa+($(wa,o)|0)<<1)>>1]|0}while((ka|0)!=(G|0))}aa=(na|0)!=0;if(aa){ka=fa+G|0;la=ia+ -1|0;if((fa|0)>0){ia=G;do{wa=ia;ia=ia+1|0;b[t+(ia<<1)>>1]=b[ca+(la+($(wa,o)|0)<<1)>>1]|0}while((ia|0)<(ka|0))}ia=Fe(e[ca+(la+($(ka+ -1|0,o)|0)<<1)>>1]|0,0,65537,65537)|0;ka=D;ca=G-fa|0;if((ca|0)>0){la=G+1+fa|0;ma=0;do{wa=t+(la+ma<<1)|0;va=wa;b[va>>1]=ia;b[va+2>>1]=ia>>>16;wa=wa+4|0;b[wa>>1]=ka;b[wa+2>>1]=ka>>>16;ma=ma+4|0}while((ma|0)<(ca|0))}}do if((a[ja>>0]|0)==1?(wa=na|U,X=(wa|0)!=0,wa=wa|T,ba=(wa|0)==0,(S|oa|wa|0)!=0):0){ia=G<<1;ha=c[ha>>2]|0;if(((ia<>P;ga=c[ga>>2]|0;if(((ia<=(ga|0))ia=ga-g>>Q;fa=(aa?fa:0)+G|0;if(!R)if((ea|0)<(ha|0))ca=G;else ca=ha-f>>P;if(!aa)if((da|0)<(ga|0))da=G;else da=ga-g>>Q;else da=ia;do if(ba){do if((ca|0)>0){ha=c[q+13084>>2]|0;fa=$((-1<>ha,O)|0;ga=c[(c[d+3488>>2]|0)+16>>2]|0;ba=0;while(1){ea=ba+1|0;if(!(a[ga+(fa+((ba<>ha))>>0]|0))break;if((ea|0)<(ca|0))ba=ea;else{ba=ea;break}}if((ba|0)>0)if((f|0)>0){if((ba|0)<=-1)break;fa=(-1<>2]|0;ea=c[(c[d+3488>>2]|0)+16>>2]|0;do{ha=ba;ba=ba+ -1|0;if(a[ea+(($(fa>>ga,O)|0)+((ba<>ga))>>0]|0)b[v+(ha<<1)>>1]=b[v+(ha+1<<1)>>1]|0}while((ha|0)>0)}else{fa=(-1<>2]|0;ea=c[(c[d+3488>>2]|0)+16>>2]|0;do{ha=ba;ba=ba+ -1|0;if(a[ea+(($(fa>>ga,O)|0)+((ba<>ga))>>0]|0)b[v+(ha<<1)>>1]=b[v+(ha+1<<1)>>1]|0}while((ba|0)>0);b[v>>1]=b[x>>1]|0;break}}while(0);ea=b[v>>1]|0;b[t>>1]=ea;ba=t}else{ga=(-1<>2]|0;if((wa|0)<=0){N=59;break}ha=(fa<>ba,O)|0)+(ga>>ba)|0;ea=c[(c[ia>>2]|0)+16>>2]|0}while((a[ea+wa>>0]|0)!=0);if((N|0)==59){ea=c[(c[ia>>2]|0)+16>>2]|0;ha=(fa<>ba,O)|0)+(ga>>ba))>>0]|0)){ea=b[v>>1]|0;ba=t;break}if((ca|0)>0){fa=$((-1<>ba,O)|0;ha=0;while(1){ga=ha+1|0;if(!(a[ea+(fa+((ha<>ba))>>0]|0))break;if((ga|0)<(ca|0))ha=ga;else{ha=ga;break}}if((ha|0)>-1)N=68}else{ha=0;N=68}if((N|0)==68){fa=(-1<>ba,O)|0)+((ha<>ba))>>0]|0)b[v+(ga<<1)>>1]=b[v+(ga+1<<1)>>1]|0}while((ga|0)>0)}ea=b[v>>1]|0;b[t>>1]=ea;ba=t}while(0);b[ba>>1]=ea;if(X&(da|0)>0){ga=Fe(ea&65535|0,0,65537,65537)|0;X=(-1<>2]|0;ha=D;fa=0;do{wa=c[q+13084>>2]|0;wa=($((fa<>wa,O)|0)+(X>>wa)|0;if(!(a[(c[ea+16>>2]|0)+wa>>0]|0)){ga=Fe(e[t+((fa|3)+1<<1)>>1]|0,0,65537,65537)|0;ha=D}else{wa=t+((fa|1)<<1)|0;va=wa;b[va>>1]=ga;b[va+2>>1]=ga>>>16;wa=wa+4|0;b[wa>>1]=ha;b[wa+2>>1]=ha>>>16}fa=fa+4|0}while((fa|0)<(da|0))}if(!_?(V=Fe(e[ba>>1]|0,0,65537,65537)|0,W=D,(G|0)>0):0){X=0;do{wa=t+((X|1)<<1)|0;va=wa;b[va>>1]=V;b[va+2>>1]=V>>>16;wa=wa+4|0;b[wa>>1]=W;b[wa+2>>1]=W>>>16;X=X+4|0}while((X|0)<(G|0))}do if(!aa){V=Fe(e[t+(G<<1)>>1]|0,0,65537,65537)|0;W=D;if((G|0)<=0)break;X=G+1|0;ea=0;do{wa=t+(X+ea<<1)|0;va=wa;b[va>>1]=V;b[va+2>>1]=V>>>16;wa=wa+4|0;b[wa>>1]=W;b[wa+2>>1]=W>>>16;ea=ea+4|0}while((ea|0)<(G|0))}while(0);X=(f|0)==0;V=(g|0)==0;W=(da|0)>0;a:do if(X|V){if(X){if(W)W=0;else break;while(1){wa=t+((W|1)<<1)|0;va=wa;b[va>>1]=0;b[va+2>>1]=0>>>16;wa=wa+4|0;b[wa>>1]=0;b[wa+2>>1]=0>>>16;W=W+4|0;if((W|0)>=(da|0))break a}}if(!W)break;fa=Fe(e[t+(da<<1)>>1]|0,0,65537,65537)|0;X=(-1<>2]|0;ea=D;da=da+ -1|0;do{wa=c[q+13084>>2]|0;wa=($((da+ -3<>wa,O)|0)+(X>>wa)|0;ga=t+(da+ -2<<1)|0;if(!(a[(c[W+16>>2]|0)+wa>>0]|0)){fa=Fe(e[ga>>1]|0,0,65537,65537)|0;ea=D}else{wa=ga;va=wa;b[va>>1]=fa;b[va+2>>1]=fa>>>16;wa=wa+4|0;b[wa>>1]=ea;b[wa+2>>1]=ea>>>16}da=da+ -4|0}while((da|0)>-1)}else{X=(-1<>2]|0;ia=X>>ha;if(W){ga=Fe(e[t+(da<<1)>>1]|0,0,65537,65537)|0;W=c[d+3488>>2]|0;fa=D;da=da+ -1|0;do{wa=($((da+ -3<>ha,O)|0)+ia|0;ia=t+(da+ -2<<1)|0;if(!(a[(c[W+16>>2]|0)+wa>>0]|0)){ga=Fe(e[ia>>1]|0,0,65537,65537)|0;fa=D}else{ha=ia;wa=ha;b[wa>>1]=ga;b[wa+2>>1]=ga>>>16;ha=ha+4|0;b[ha>>1]=fa;b[ha+2>>1]=fa>>>16;ha=c[ea>>2]|0}da=da+ -4|0;ia=X>>ha}while((da|0)>-1)}else W=c[d+3488>>2]|0;wa=($((-1<>ha,O)|0)+ia|0;if(!(a[(c[W+16>>2]|0)+wa>>0]|0))break;b[ba>>1]=b[s>>1]|0}while(0);W=b[ba>>1]|0;b[v>>1]=W;if(!((ca|0)>0&(V^1)))break;W=Fe(W&65535|0,0,65537,65537)|0;Q=(-1<>2]|0;X=D;V=0;do{wa=c[q+13084>>2]|0;wa=($(Q>>wa,O)|0)+((V<>wa)|0;if(!(a[(c[g+16>>2]|0)+wa>>0]|0)){W=Fe(e[v+((V|3)+1<<1)>>1]|0,0,65537,65537)|0;X=D}else{wa=v+((V|1)<<1)|0;va=wa;b[va>>1]=W;b[va+2>>1]=W>>>16;wa=wa+4|0;b[wa>>1]=X;b[wa+2>>1]=X>>>16}V=V+4|0}while((V|0)<(ca|0))}while(0);b:do if(!aa){if(_){O=Fe(e[t+(G<<1)>>1]|0,0,65537,65537)|0;f=D;if((G|0)<=0){N=147;break}N=G+1|0;P=0;while(1){wa=t+(N+P<<1)|0;va=wa;b[va>>1]=O;b[va+2>>1]=O>>>16;wa=wa+4|0;b[wa>>1]=f;b[wa+2>>1]=f>>>16;P=P+4|0;if((P|0)>=(G|0)){N=147;break b}}}if(Z){L=Fe(e[t>>1]|0,0,65537,65537)|0;O=D;N=G<<1;if((G|0)>0)M=0;else{N=150;break}while(1){wa=t+((M|1)<<1)|0;va=wa;b[va>>1]=L;b[va+2>>1]=L>>>16;wa=wa+4|0;b[wa>>1]=O;b[wa+2>>1]=O>>>16;M=M+4|0;if((M|0)>=(N|0)){N=150;break b}}}if(Y){O=b[x>>1]|0;b[t>>1]=O;O=Fe(O&65535|0,0,65537,65537)|0;N=D;M=G<<1;if((G|0)>0)L=0;else{N=152;break}while(1){wa=t+((L|1)<<1)|0;va=wa;b[va>>1]=O;b[va+2>>1]=O>>>16;wa=wa+4|0;b[wa>>1]=N;b[wa+2>>1]=N>>>16;L=L+4|0;if((L|0)>=(M|0)){N=152;break b}}}if(!R){g=1<>1]=g;Q=Fe(g&65535|0,0,65537,65537)|0;f=D;N=G<<1;O=(G|0)>0;if(O)P=0;else{N=147;break}do{wa=v+((P|1)<<1)|0;va=wa;b[va>>1]=Q;b[va+2>>1]=Q>>>16;wa=wa+4|0;b[wa>>1]=f;b[wa+2>>1]=f>>>16;P=P+4|0}while((P|0)<(N|0));P=Fe(g&65535|0,0,65537,65537)|0;f=D;if(O)O=0;else{N=147;break}while(1){wa=t+((O|1)<<1)|0;va=wa;b[va>>1]=P;b[va+2>>1]=P>>>16;wa=wa+4|0;b[wa>>1]=f;b[wa+2>>1]=f>>>16;O=O+4|0;if((O|0)>=(N|0)){N=147;break b}}}L=v+(G+1<<1)|0;O=b[L>>1]|0;M=Fe(O&65535|0,0,65537,65537)|0;K=D;J=(G|0)>0;if(J)N=0;else{b[t>>1]=O;break}do{wa=v+((N|1)<<1)|0;va=wa;b[va>>1]=M;b[va+2>>1]=M>>>16;wa=wa+4|0;b[wa>>1]=K;b[wa+2>>1]=K>>>16;N=N+4|0}while((N|0)<(G|0));M=b[L>>1]|0;b[t>>1]=M;M=Fe(M&65535|0,0,65537,65537)|0;K=D;L=G<<1;if(J){J=0;do{wa=t+((J|1)<<1)|0;va=wa;b[va>>1]=M;b[va+2>>1]=M>>>16;wa=wa+4|0;b[wa>>1]=K;b[wa+2>>1]=K>>>16;J=J+4|0}while((J|0)<(L|0));N=155}else N=155}else N=147;while(0);if((N|0)==147)if((U|0)==0?(M=Fe(e[t+(G+1<<1)>>1]|0,0,65537,65537)|0,L=D,(G|0)>0):0){N=0;do{wa=t+((N|1)<<1)|0;va=wa;b[va>>1]=M;b[va+2>>1]=M>>>16;wa=wa+4|0;b[wa>>1]=L;b[wa+2>>1]=L>>>16;N=N+4|0}while((N|0)<(G|0));N=150}else N=150;if((N|0)==150)if(!T){b[t>>1]=b[s>>1]|0;N=152}else N=152;if((N|0)==152)if((S|0)==0?(J=Fe(e[t>>1]|0,0,65537,65537)|0,K=D,(G|0)>0):0){L=0;do{wa=v+((L|1)<<1)|0;va=wa;b[va>>1]=J;b[va+2>>1]=J>>>16;wa=wa+4|0;b[wa>>1]=K;b[wa+2>>1]=K>>>16;L=L+4|0}while((L|0)<(G|0));N=155}else N=155;if(((N|0)==155?!R:0)?(H=Fe(e[v+(G<<1)>>1]|0,0,65537,65537)|0,I=D,(G|0)>0):0){K=G+1|0;J=0;do{wa=v+(K+J<<1)|0;va=wa;b[va>>1]=H;b[va+2>>1]=H>>>16;wa=wa+4|0;b[wa>>1]=I;b[wa+2>>1]=I>>>16;J=J+4|0}while((J|0)<(G|0))}H=b[t>>1]|0;b[v>>1]=H;c:do if(!(c[q+13112>>2]|0)){if(F){if((n|0)==1|(G|0)==4){r=x;break}}else if(((n|0)==1?1:(c[q+4>>2]|0)!=3)|(G|0)==4){r=x;break}wa=n+ -26|0;wa=(wa|0)>-1?wa:26-n|0;va=n+ -10|0;va=(va|0)>-1?va:10-n|0;if((((wa|0)>(va|0)?va:wa)|0)>(c[2776+(h+ -3<<2)>>2]|0)){I=1<>0]|0)!=0&(h|0)==5?(B=H&65535,E=b[v+128>>1]|0,C=E&65535,wa=C+B-(e[v+64>>1]<<1)|0,(((wa|0)>-1?wa:0-wa|0)|0)<(I|0)):0)?(z=t+128|0,A=b[z>>1]|0,wa=(A&65535)+B-(e[t+64>>1]<<1)|0,(((wa|0)>-1?wa:0-wa|0)|0)<(I|0)):0){b[u>>1]=H;b[u+128>>1]=E;v=0;do{wa=v;v=v+1|0;b[u+(v<<1)>>1]=(($(B,63-wa|0)|0)+32+($(C,v)|0)|0)>>>6}while((v|0)!=63);u=0;while(1){v=u+1|0;b[t+(v<<1)>>1]=(($(H&65535,63-u|0)|0)+32+($(A&65535,v)|0)|0)>>>6;if((v|0)==63)break c;H=b[t>>1]|0;A=b[z>>1]|0;u=v}}z=G<<1;C=b[t+(z<<1)>>1]|0;b[y+(z<<1)>>1]=C;B=b[v+(z<<1)>>1]|0;b[u+(z<<1)>>1]=B;z=z+ -2|0;A=(z|0)>-1;if(A){E=z;while(1){wa=E+1|0;va=C;C=b[t+(wa<<1)>>1]|0;b[y+(wa<<1)>>1]=((va&65535)+2+((C&65535)<<1)+(e[t+(E<<1)>>1]|0)|0)>>>2;if((E|0)<=0)break;else E=E+ -1|0}}wa=((e[s>>1]|0)+2+((H&65535)<<1)+(e[x>>1]|0)|0)>>>2&65535;b[y>>1]=wa;b[u>>1]=wa;if(A)while(1){wa=z+1|0;va=B;B=b[v+(wa<<1)>>1]|0;b[u+(wa<<1)>>1]=((va&65535)+2+((B&65535)<<1)+(e[v+(z<<1)>>1]|0)|0)>>>2;if((z|0)<=0){s=w;break}else z=z+ -1|0}else s=w}else r=x}else r=x;while(0);if(!n){Sa[c[d+(h+ -2<<2)+5848>>2]&15](l,r,s,o);i=k;return}else if((n|0)==1){Pa[c[d+5864>>2]&3](l,r,s,o,h,j);i=k;return}else{if(!(c[q+13104>>2]|0))p=0;else p=(a[p+31256>>0]|0)!=0;Na[c[d+(h+ -2<<2)+5868>>2]&7](l,r,s,o,j,n,p&1,m);i=k;return}}function Hc(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=c[e>>2]|0;if(!h){i=g;return}if(!(c[h+304>>2]|0)){i=g;return}h=e+70|0;f=(d[h>>0]|0)&(f^255)&255;a[h>>0]=f;if(f<<24>>24){i=g;return}Gd(c[b+4>>2]|0,e+4|0);Zd(e+56|0);c[e+16>>2]=0;Zd(e+64|0);Zd(e+60|0);c[e+24>>2]=0;c[e+20>>2]=0;c[e+36>>2]=0;i=g;return}function Ic(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+180>>2]|0;f=c[g+13080>>2]|0;e=($(e>>f,c[g+13128>>2]|0)|0)+(d>>f)|0;return c[(c[b+24>>2]|0)+(c[(c[(c[a+184>>2]|0)+1668>>2]|0)+(e<<2)>>2]<<2)>>2]|0}function Jc(a){a=a|0;var b=0,c=0;b=i;c=0;do{Hc(a,a+(c*72|0)+3492|0,6);c=c+1|0}while((c|0)!=32);i=b;return}function Kc(a){a=a|0;var b=0,c=0;b=i;c=0;do{Hc(a,a+(c*72|0)+3492|0,-1);c=c+1|0}while((c|0)!=32);i=b;return}function Lc(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;i=i+16|0;o=g;h=d+7640|0;j=0;while(1){if(((c[(c[d+(j*72|0)+3492>>2]|0)+304>>2]|0)!=0?(b[d+(j*72|0)+3560>>1]|0)==(b[h>>1]|0):0)?(c[d+(j*72|0)+3524>>2]|0)==(f|0):0){l=5;break}j=j+1|0;if(j>>>0>=32){j=0;break}}if((l|0)==5){p=c[d+4>>2]|0;c[o>>2]=f;$a(p,16,2792,o);p=-1094995529;i=g;return p|0}while(1){k=d+(j*72|0)+3492|0;p=j+1|0;if(!(c[(c[k>>2]|0)+304>>2]|0))break;if(p>>>0<32)j=p;else{l=17;break}}if((l|0)==17){$a(c[d+4>>2]|0,16,2832,o);p=-12;i=g;return p|0}if((Fd(c[d+4>>2]|0,d+(j*72|0)+3496|0,1)|0)<0){p=-12;i=g;return p|0}p=Xd((c[d+7684>>2]|0)*392|0)|0;l=d+(j*72|0)+3556|0;c[l>>2]=p;if(((p|0)!=0?(n=be(c[d+1408>>2]|0)|0,c[d+(j*72|0)+3548>>2]=n,(n|0)!=0):0)?(c[d+(j*72|0)+3508>>2]=c[n+4>>2],m=be(c[d+1412>>2]|0)|0,c[d+(j*72|0)+3552>>2]=m,(m|0)!=0):0){p=c[m+4>>2]|0;o=d+(j*72|0)+3516|0;c[o>>2]=p;m=d+180|0;n=c[m>>2]|0;n=$(c[n+13132>>2]|0,c[n+13128>>2]|0)|0;c[d+(j*72|0)+3520>>2]=n;if((n|0)>0?(c[p>>2]=c[(c[l>>2]|0)+4>>2],(n|0)>1):0){p=1;do{c[(c[o>>2]|0)+(p<<2)>>2]=c[(c[l>>2]|0)+4>>2];p=p+1|0}while((p|0)!=(n|0))}o=d+7796|0;p=c[k>>2]|0;c[p+244>>2]=(c[o>>2]|0)==1&1;c[p+240>>2]=((c[o>>2]|0)+ -1|0)>>>0<2&1;c[e>>2]=p;c[d+3488>>2]=k;a[d+(j*72|0)+3562>>0]=(a[d+2418>>0]|0)==0?2:3;c[d+(j*72|0)+3524>>2]=f;b[d+(j*72|0)+3560>>1]=b[h>>1]|0;p=d+(j*72|0)+3532|0;o=(c[m>>2]|0)+20|0;c[p+0>>2]=c[o+0>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=0;i=g;return p|0}Hc(d,k,-1);p=-12;i=g;return p|0}function Mc(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=i;k=d+3014|0;j=d+5796|0;h=d+7642|0;f=(f|0)==0;n=d+7640|0;m=d+180|0;o=0;while(1){if((a[k>>0]|0)==1){q=0;do{p=d+(q*72|0)+3492|0;if(((a[d+(q*72|0)+3562>>0]&8)==0?(c[d+(q*72|0)+3524>>2]|0)!=(c[j>>2]|0):0)?(b[d+(q*72|0)+3560>>1]|0)==(b[h>>1]|0):0)Hc(d,p,1);q=q+1|0}while((q|0)!=32);p=0;r=2147483647;q=0}else{p=0;r=2147483647;q=0}do{if((a[d+(p*72|0)+3562>>0]&1)!=0?(b[d+(p*72|0)+3560>>1]|0)==(b[h>>1]|0):0){s=c[d+(p*72|0)+3524>>2]|0;t=(s|0)<(r|0);o=t?p:o;r=t?s:r;q=q+1|0}p=p+1|0}while((p|0)!=32);if(((f?(b[h>>1]|0)==(b[n>>1]|0):0)?(l=c[m>>2]|0,(l|0)!=0):0)?(q|0)<=(c[l+(((c[l+72>>2]|0)+ -1|0)*12|0)+80>>2]|0):0){d=0;h=23;break}if(q){h=17;break}p=b[h>>1]|0;if(p<<16>>16==(b[n>>1]|0)){d=0;h=23;break}b[h>>1]=(p&65535)+1&255}if((h|0)==17){h=d+(o*72|0)+3492|0;e=ie(e,c[h>>2]|0)|0;if(!(a[d+(o*72|0)+3562>>0]&8))Hc(d,h,1);else Hc(d,h,9);t=(e|0)<0?e:1;i=g;return t|0}else if((h|0)==23){i=g;return d|0}return 0}function Nc(){var b=0,c=0,d=0,e=0,f=0;b=i;if(!(a[2872]|0))c=0;else{i=b;return}do{d=0;do{f=($(d<<1|1,c)|0)&127;e=f>>>0>63;f=e?f+ -64|0:f;e=e?-1:1;if((f|0)>31){f=64-f|0;e=0-e|0}a[2872+(c<<5)+d>>0]=$(a[3896+f>>0]|0,e)|0;d=d+1|0}while((d|0)!=32);c=c+1|0}while((c|0)!=32);i=b;return}function Oc(a,b){a=a|0;b=b|0;c[a>>2]=4;c[a+4>>2]=9;c[a+8>>2]=10;c[a+12>>2]=11;c[a+16>>2]=12;c[a+20>>2]=1;c[a+24>>2]=2;c[a+28>>2]=1;c[a+32>>2]=3;c[a+36>>2]=4;c[a+40>>2]=5;c[a+44>>2]=6;c[a+48>>2]=2;c[a+52>>2]=3;c[a+56>>2]=4;c[a+60>>2]=5;c[a+64>>2]=1;c[a+68>>2]=1;c[a+72>>2]=2;c[a+1676>>2]=5;c[a+1680>>2]=6;c[a+1684>>2]=2;c[a+1688>>2]=3;c[a+1692>>2]=5;c[a+1696>>2]=6;c[a+1700>>2]=2;c[a+1704>>2]=3;return}function Pc(a,e,f,g,h,j,k){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;l=i;o=e>>>1;if((g|0)<=0){i=l;return}m=(f|0)>0;e=h+8|0;n=h+16|0;p=32-j|0;k=k-j|0;q=0;while(1){if(m){s=c[n>>2]|0;r=c[h>>2]|0;u=c[e>>2]|0;t=0;do{v=r+(u>>>3)|0;v=(ye(d[v>>0]|d[v+1>>0]<<8|d[v+2>>0]<<16|d[v+3>>0]<<24|0)|0)<<(u&7)>>>p;w=u+j|0;u=s>>>0>w>>>0?w:s;c[e>>2]=u;b[a+(t<<1)>>1]=v<>>1;f=1<>1]|0)+(e[k>>1]|0)|0;if(n&h)n=0-n>>31&f;b[k>>1]=n;m=m+1|0;if((m|0)==4)break;else l=l+2|0}j=j+1|0;if((j|0)==4)break;else{c=c+8|0;a=a+(d<<1)|0}}i=g;return}function Rc(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;d=d>>>1;f=1<>1]|0)+(e[k>>1]|0)|0;if(n&h)n=0-n>>31&f;b[k>>1]=n;m=m+1|0;if((m|0)==8)break;else l=l+2|0}j=j+1|0;if((j|0)==8)break;else{c=c+16|0;a=a+(d<<1)|0}}i=g;return}function Sc(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;d=d>>>1;f=1<>1]|0)+(e[k>>1]|0)|0;if(n&h)n=0-n>>31&f;b[k>>1]=n;m=m+1|0;if((m|0)==16)break;else l=l+2|0}j=j+1|0;if((j|0)==16)break;else{c=c+32|0;a=a+(d<<1)|0}}i=g;return}function Tc(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;d=d>>>1;f=1<>1]|0)+(e[k>>1]|0)|0;if(n&h)n=0-n>>31&f;b[k>>1]=n;m=m+1|0;if((m|0)==32)break;else l=l+2|0}j=j+1|0;if((j|0)==32)break;else{c=c+64|0;a=a+(d<<1)|0}}i=g;return}function Uc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;c=c<<16>>16;d=15-d-c|0;c=1<0){f=1<0){h=a;a=0}else{i=e;return}while(1){j=h;g=0;while(1){b[j>>1]=(b[j>>1]|0)+f>>d;g=g+1|0;if((g|0)==(c|0))break;else j=j+2|0}a=a+1|0;if((a|0)==(c|0))break;else h=h+(c<<1)|0}i=e;return}if((c|0)<=0){i=e;return}d=0-d|0;f=0;while(1){g=a;h=0;while(1){b[g>>1]=b[g>>1]<>16);if(d){d=c+ -1|0;if((d|0)<=0){i=f;return}g=(c|0)>0;h=0;do{if(g){j=0;do{k=a+(j+c<<1)|0;b[k>>1]=(e[k>>1]|0)+(e[a+(j<<1)>>1]|0);j=j+1|0}while((j|0)!=(c|0))}a=a+(c<<1)|0;h=h+1|0}while((h|0)!=(d|0));i=f;return}if((c|0)<=0){i=f;return}d=(c|0)>1;h=0;while(1){if(d){j=b[a>>1]|0;g=1;do{k=a+(g<<1)|0;j=(e[k>>1]|0)+(j&65535)&65535;b[k>>1]=j;g=g+1|0}while((g|0)!=(c|0))}h=h+1|0;if((h|0)==(c|0))break;else a=a+(c<<1)|0}i=f;return}function Wc(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;e=0;g=a;while(1){q=b[g>>1]|0;n=g+16|0;o=b[n>>1]|0;h=o+q|0;f=g+24|0;p=b[f>>1]|0;m=p+o|0;j=q-p|0;l=g+8|0;k=(b[l>>1]|0)*74|0;p=((q-o+p|0)*74|0)+64|0;o=p>>7;if((o+32768|0)>>>0>65535)o=p>>31^32767;b[n>>1]=o;o=(h*29|0)+64+(m*55|0)+k|0;n=o>>7;if((n+32768|0)>>>0>65535)n=o>>31^32767;b[g>>1]=n;m=($(m,-29)|0)+64+(j*55|0)+k|0;n=m>>7;if((n+32768|0)>>>0>65535)n=m>>31^32767;b[l>>1]=n;j=(h*55|0)+64+(j*29|0)-k|0;h=j>>7;if((h+32768|0)>>>0>65535)h=j>>31^32767;b[f>>1]=h;e=e+1|0;if((e|0)==4)break;else g=g+2|0}e=20-c|0;c=1<>1]|0;n=a+4|0;q=b[n>>1]|0;l=q+p|0;f=a+6|0;o=b[f>>1]|0;m=o+q|0;h=p-o|0;k=a+2|0;j=(b[k>>1]|0)*74|0;o=((p-q+o|0)*74|0)+c>>e;if((o+32768|0)>>>0>65535)o=o>>31^32767;b[n>>1]=o;n=(l*29|0)+c+(m*55|0)+j>>e;if((n+32768|0)>>>0>65535)n=n>>31^32767;b[a>>1]=n;m=($(m,-29)|0)+c+(h*55|0)+j>>e;if((m+32768|0)>>>0>65535)m=m>>31^32767;b[k>>1]=m;h=(l*55|0)+c+(h*29|0)-j>>e;if((h+32768|0)>>>0>65535)h=h>>31^32767;b[f>>1]=h;g=g+1|0;if((g|0)==4)break;else a=a+8|0}i=d;return}function Xc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=i;e=0;g=a;while(1){n=b[g>>1]<<6;k=g+16|0;m=b[k>>1]<<6;j=m+n|0;m=n-m|0;n=g+8|0;l=b[n>>1]|0;f=g+24|0;o=b[f>>1]|0;h=(o*36|0)+(l*83|0)|0;l=($(o,-83)|0)+(l*36|0)|0;o=j+64+h|0;p=o>>7;if((p+32768|0)>>>0>65535)p=o>>31^32767;b[g>>1]=p;p=m+64+l|0;o=p>>7;if((o+32768|0)>>>0>65535)o=p>>31^32767;b[n>>1]=o;l=m-l+64|0;m=l>>7;if((m+32768|0)>>>0>65535)m=l>>31^32767;b[k>>1]=m;j=j-h+64|0;h=j>>7;if((h+32768|0)>>>0>65535)h=j>>31^32767;b[f>>1]=h;e=e+1|0;if((e|0)==4)break;else g=g+2|0}e=20-d|0;d=1<>1]<<6;k=a+4|0;o=b[k>>1]<<6;m=a+2|0;l=b[m>>1]|0;f=a+6|0;j=b[f>>1]|0;h=(j*36|0)+(l*83|0)|0;l=($(j,-83)|0)+(l*36|0)|0;j=o+n+d|0;p=j+h>>e;if((p+32768|0)>>>0>65535)p=p>>31^32767;b[a>>1]=p;n=n-o+d|0;o=n+l>>e;if((o+32768|0)>>>0>65535)o=o>>31^32767;b[m>>1]=o;l=n-l>>e;if((l+32768|0)>>>0>65535)l=l>>31^32767;b[k>>1]=l;h=j-h>>e;if((h+32768|0)>>>0>65535)h=h>>31^32767;b[f>>1]=h;g=g+1|0;if((g|0)==4)break;else a=a+8|0}i=c;return}function Yc(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;j=i;i=i+64|0;r=j+48|0;p=j+32|0;g=j+16|0;h=j;q=(e|0)>8;s=e+4|0;k=r+4|0;l=r+8|0;m=r+12|0;o=0;s=(s|0)>8?8:s;n=d;while(1){c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;w=(s|0)>1;t=0;do{if(w){v=p+(t<<2)|0;u=c[v>>2]|0;x=1;do{u=($(b[n+(x<<3<<1)>>1]|0,a[2872+(x<<2<<5)+t>>0]|0)|0)+u|0;x=x+2|0}while((x|0)<(s|0));c[v>>2]=u}t=t+1|0}while((t|0)!=4);w=b[n>>1]<<6;v=b[n+64>>1]<<6;x=v+w|0;v=w-v|0;w=b[n+32>>1]|0;u=b[n+96>>1]|0;t=(u*36|0)+(w*83|0)|0;w=($(u,-83)|0)+(w*36|0)|0;u=t+x|0;c[r>>2]=u;c[k>>2]=w+v;c[l>>2]=v-w;c[m>>2]=x-t;t=0;while(1){v=c[p+(t<<2)>>2]|0;w=u+64+v|0;x=w>>7;if((x+32768|0)>>>0>65535)x=w>>31^32767;b[n+(t<<3<<1)>>1]=x;v=u-v+64|0;u=v>>7;if((u+32768|0)>>>0>65535)u=v>>31^32767;b[n+(7-t<<3<<1)>>1]=u;t=t+1|0;if((t|0)==4)break;u=c[r+(t<<2)>>2]|0}if((s|0)<8)s=(o&3|0)==0&(o|0)!=0?s+ -4|0:s;o=o+1|0;if((o|0)==8)break;else n=n+2|0}k=q?8:e;l=20-f|0;m=1<1;n=g+4|0;o=g+8|0;e=g+12|0;p=0;while(1){c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;t=0;do{if(f){q=h+(t<<2)|0;s=c[q>>2]|0;r=1;do{s=($(b[d+(r<<1)>>1]|0,a[2872+(r<<2<<5)+t>>0]|0)|0)+s|0;r=r+2|0}while((r|0)<(k|0));c[q>>2]=s}t=t+1|0}while((t|0)!=4);w=b[d>>1]<<6;v=b[d+8>>1]<<6;x=v+w|0;v=w-v|0;w=b[d+4>>1]|0;s=b[d+12>>1]|0;q=(s*36|0)+(w*83|0)|0;w=($(s,-83)|0)+(w*36|0)|0;s=q+x|0;c[g>>2]=s;c[n>>2]=w+v;c[o>>2]=v-w;c[e>>2]=x-q;q=0;while(1){r=c[h+(q<<2)>>2]|0;s=s+m|0;t=s+r>>l;if((t+32768|0)>>>0>65535)t=t>>31^32767;b[d+(q<<1)>>1]=t;r=s-r>>l;if((r+32768|0)>>>0>65535)r=r>>31^32767;b[d+(7-q<<1)>>1]=r;q=q+1|0;if((q|0)==4)break;s=c[g+(q<<2)>>2]|0}p=p+1|0;if((p|0)==8)break;else d=d+16|0}i=j;return}function Zc(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=i;i=i+192|0;t=g+160|0;u=g+128|0;v=g+112|0;s=g+96|0;j=g+64|0;l=g+32|0;h=g+16|0;k=g;m=(e|0)>16;w=e+4|0;n=v+4|0;o=v+8|0;p=v+12|0;r=0;w=(w|0)>16?16:w;q=d;while(1){c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[u+16>>2]=0;c[u+20>>2]=0;c[u+24>>2]=0;c[u+28>>2]=0;A=(w|0)>1;B=0;do{if(A){z=u+(B<<2)|0;x=c[z>>2]|0;y=1;do{x=($(b[q+(y<<4<<1)>>1]|0,a[2872+(y<<1<<5)+B>>0]|0)|0)+x|0;y=y+2|0}while((y|0)<(w|0));c[z>>2]=x}B=B+1|0}while((B|0)!=8);c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;y=0;do{x=s+(y<<2)|0;A=c[x>>2]|0;z=1;do{A=($(b[q+(z<<5<<1)>>1]|0,a[2872+(z<<2<<5)+y>>0]|0)|0)+A|0;z=z+2|0}while((z|0)<8);c[x>>2]=A;y=y+1|0}while((y|0)!=4);A=b[q>>1]<<6;z=b[q+256>>1]<<6;B=z+A|0;z=A-z|0;A=b[q+128>>1]|0;x=b[q+384>>1]|0;y=(x*36|0)+(A*83|0)|0;A=($(x,-83)|0)+(A*36|0)|0;x=y+B|0;c[v>>2]=x;c[n>>2]=A+z;c[o>>2]=z-A;c[p>>2]=B-y;y=0;while(1){B=c[s+(y<<2)>>2]|0;c[t+(y<<2)>>2]=B+x;c[t+(7-y<<2)>>2]=x-B;y=y+1|0;if((y|0)==4){x=0;break}x=c[v+(y<<2)>>2]|0}do{z=c[t+(x<<2)>>2]|0;y=c[u+(x<<2)>>2]|0;B=z+64+y|0;A=B>>7;if((A+32768|0)>>>0>65535)A=B>>31^32767;b[q+(x<<4<<1)>>1]=A;y=z-y+64|0;z=y>>7;if((z+32768|0)>>>0>65535)z=y>>31^32767;b[q+(15-x<<4<<1)>>1]=z;x=x+1|0}while((x|0)!=8);if((w|0)<16)w=(r&3|0)==0&(r|0)!=0?w+ -4|0:w;r=r+1|0;if((r|0)==16)break;else q=q+2|0}m=m?16:e;f=20-f|0;n=1<1;o=h+4|0;r=h+8|0;p=h+12|0;s=0;while(1){c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;c[l+24>>2]=0;c[l+28>>2]=0;v=0;do{if(q){e=l+(v<<2)|0;u=c[e>>2]|0;t=1;do{u=($(b[d+(t<<1)>>1]|0,a[2872+(t<<1<<5)+v>>0]|0)|0)+u|0;t=t+2|0}while((t|0)<(m|0));c[e>>2]=u}v=v+1|0}while((v|0)!=8);c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;e=0;do{t=k+(e<<2)|0;v=c[t>>2]|0;u=1;do{v=($(b[d+(u<<1<<1)>>1]|0,a[2872+(u<<2<<5)+e>>0]|0)|0)+v|0;u=u+2|0}while((u|0)<8);c[t>>2]=v;e=e+1|0}while((e|0)!=4);A=b[d>>1]<<6;z=b[d+16>>1]<<6;B=z+A|0;z=A-z|0;A=b[d+8>>1]|0;t=b[d+24>>1]|0;u=(t*36|0)+(A*83|0)|0;A=($(t,-83)|0)+(A*36|0)|0;t=u+B|0;c[h>>2]=t;c[o>>2]=A+z;c[r>>2]=z-A;c[p>>2]=B-u;u=0;while(1){B=c[k+(u<<2)>>2]|0;c[j+(u<<2)>>2]=B+t;c[j+(7-u<<2)>>2]=t-B;u=u+1|0;if((u|0)==4){t=0;break}t=c[h+(u<<2)>>2]|0}do{u=c[l+(t<<2)>>2]|0;v=(c[j+(t<<2)>>2]|0)+n|0;e=v+u>>f;if((e+32768|0)>>>0>65535)e=e>>31^32767;b[d+(t<<1)>>1]=e;u=v-u>>f;if((u+32768|0)>>>0>65535)u=u>>31^32767;b[d+(15-t<<1)>>1]=u;t=t+1|0}while((t|0)!=8);s=s+1|0;if((s|0)==16)break;else d=d+32|0}i=g;return}function _c(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=i;i=i+320|0;h=g+256|0;n=g+192|0;o=g+160|0;s=g+128|0;u=g+112|0;t=g+96|0;m=g+64|0;k=g+32|0;j=g+16|0;l=g;q=(e|0)>32;y=e+4|0;v=u+4|0;w=u+8|0;x=u+12|0;p=0;y=(y|0)>32?32:y;r=d;while(1){z=n+0|0;A=z+64|0;do{c[z>>2]=0;z=z+4|0}while((z|0)<(A|0));z=(y|0)>1;C=0;do{if(z){B=n+(C<<2)|0;A=c[B>>2]|0;D=1;do{A=($(b[r+(D<<5<<1)>>1]|0,a[2872+(D<<5)+C>>0]|0)|0)+A|0;D=D+2|0}while((D|0)<(y|0));c[B>>2]=A}C=C+1|0}while((C|0)!=16);c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;c[s+24>>2]=0;c[s+28>>2]=0;z=(y|0)/2|0;A=(y|0)>3;B=0;do{if(A){C=s+(B<<2)|0;D=c[C>>2]|0;E=1;do{D=($(b[r+(E<<6<<1)>>1]|0,a[2872+(E<<1<<5)+B>>0]|0)|0)+D|0;E=E+2|0}while((E|0)<(z|0));c[C>>2]=D}B=B+1|0}while((B|0)!=8);c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;C=0;do{z=t+(C<<2)|0;B=c[z>>2]|0;A=1;do{B=($(b[r+(A<<7<<1)>>1]|0,a[2872+(A<<2<<5)+C>>0]|0)|0)+B|0;A=A+2|0}while((A|0)<8);c[z>>2]=B;C=C+1|0}while((C|0)!=4);D=b[r>>1]<<6;C=b[r+1024>>1]<<6;E=C+D|0;C=D-C|0;D=b[r+512>>1]|0;z=b[r+1536>>1]|0;A=(z*36|0)+(D*83|0)|0;D=($(z,-83)|0)+(D*36|0)|0;z=A+E|0;c[u>>2]=z;c[v>>2]=D+C;c[w>>2]=C-D;c[x>>2]=E-A;A=0;while(1){E=c[t+(A<<2)>>2]|0;c[o+(A<<2)>>2]=E+z;c[o+(7-A<<2)>>2]=z-E;A=A+1|0;if((A|0)==4){z=0;break}z=c[u+(A<<2)>>2]|0}do{D=c[o+(z<<2)>>2]|0;E=c[s+(z<<2)>>2]|0;c[h+(z<<2)>>2]=E+D;c[h+(15-z<<2)>>2]=D-E;z=z+1|0}while((z|0)!=8);z=0;do{A=c[h+(z<<2)>>2]|0;B=c[n+(z<<2)>>2]|0;D=A+64+B|0;C=D>>7;if((C+32768|0)>>>0>65535)C=D>>31^32767;b[r+(z<<5<<1)>>1]=C;A=A-B+64|0;B=A>>7;if((B+32768|0)>>>0>65535)B=A>>31^32767;b[r+(31-z<<5<<1)>>1]=B;z=z+1|0}while((z|0)!=16);if((y|0)<32)y=(p&3|0)==0&(p|0)!=0?y+ -4|0:y;p=p+1|0;if((p|0)==32)break;else r=r+2|0}o=q?32:e;e=20-f|0;s=1<1;r=(o|0)/2|0;q=(o|0)>3;p=j+4|0;t=j+8|0;u=j+12|0;v=0;while(1){z=n+0|0;A=z+64|0;do{c[z>>2]=0;z=z+4|0}while((z|0)<(A|0));z=0;do{if(f){w=n+(z<<2)|0;y=c[w>>2]|0;x=1;do{y=($(b[d+(x<<1)>>1]|0,a[2872+(x<<5)+z>>0]|0)|0)+y|0;x=x+2|0}while((x|0)<(o|0));c[w>>2]=y}z=z+1|0}while((z|0)!=16);c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;z=0;do{if(q){w=k+(z<<2)|0;y=c[w>>2]|0;x=1;do{E=x<<1;y=($(b[d+(E<<1)>>1]|0,a[2872+(E<<5)+z>>0]|0)|0)+y|0;x=x+2|0}while((x|0)<(r|0));c[w>>2]=y}z=z+1|0}while((z|0)!=8);c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;w=0;do{x=l+(w<<2)|0;z=c[x>>2]|0;y=1;do{E=y<<2;z=($(b[d+(E<<1)>>1]|0,a[2872+(E<<5)+w>>0]|0)|0)+z|0;y=y+2|0}while((y|0)<8);c[x>>2]=z;w=w+1|0}while((w|0)!=4);D=b[d>>1]<<6;C=b[d+32>>1]<<6;E=C+D|0;C=D-C|0;D=b[d+16>>1]|0;w=b[d+48>>1]|0;x=(w*36|0)+(D*83|0)|0;D=($(w,-83)|0)+(D*36|0)|0;w=x+E|0;c[j>>2]=w;c[p>>2]=D+C;c[t>>2]=C-D;c[u>>2]=E-x;x=0;while(1){E=c[l+(x<<2)>>2]|0;c[m+(x<<2)>>2]=E+w;c[m+(7-x<<2)>>2]=w-E;x=x+1|0;if((x|0)==4){w=0;break}w=c[j+(x<<2)>>2]|0}do{D=c[m+(w<<2)>>2]|0;E=c[k+(w<<2)>>2]|0;c[h+(w<<2)>>2]=E+D;c[h+(15-w<<2)>>2]=D-E;w=w+1|0}while((w|0)!=8);w=0;do{x=c[n+(w<<2)>>2]|0;y=(c[h+(w<<2)>>2]|0)+s|0;z=y+x>>e;if((z+32768|0)>>>0>65535)z=z>>31^32767;b[d+(w<<1)>>1]=z;x=y-x>>e;if((x+32768|0)>>>0>65535)x=x>>31^32767;b[d+(31-w<<1)>>1]=x;w=w+1|0}while((w|0)!=16);v=v+1|0;if((v|0)==32)break;else d=d+64|0}i=g;return}function $c(a,c){a=a|0;c=c|0;var d=0,e=0,f=0;d=i;c=14-c|0;c=((b[a>>1]|0)+1>>1)+(1<>c&65535;e=0;do{f=e<<2;b[a+(f<<1)>>1]=c;b[a+((f|1)<<1)>>1]=c;b[a+((f|2)<<1)>>1]=c;b[a+((f|3)<<1)>>1]=c;e=e+1|0}while((e|0)!=4);i=d;return}function ad(a,c){a=a|0;c=c|0;var d=0,e=0,f=0;d=i;c=14-c|0;c=((b[a>>1]|0)+1>>1)+(1<>c&65535;e=0;do{f=e<<3;b[a+(f<<1)>>1]=c;b[a+((f|1)<<1)>>1]=c;b[a+((f|2)<<1)>>1]=c;b[a+((f|3)<<1)>>1]=c;b[a+((f|4)<<1)>>1]=c;b[a+((f|5)<<1)>>1]=c;b[a+((f|6)<<1)>>1]=c;b[a+((f|7)<<1)>>1]=c;e=e+1|0}while((e|0)!=8);i=d;return}function bd(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0;d=i;e=14-c|0;e=((b[a>>1]|0)+1>>1)+(1<>e&65535;c=0;do{f=c<<4;g=0;do{b[a+(g+f<<1)>>1]=e;g=g+1|0}while((g|0)!=16);c=c+1|0}while((c|0)!=16);i=d;return}function cd(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0;d=i;e=14-c|0;e=((b[a>>1]|0)+1>>1)+(1<>e&65535;c=0;do{f=c<<5;g=0;do{b[a+(g+f<<1)>>1]=e;g=g+1|0}while((g|0)!=32);c=c+1|0}while((c|0)!=32);i=d;return}function dd(a,f,g,h,j,k,l,m,n,o){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0;p=i;i=i+128|0;k=p;r=k+0|0;q=r+128|0;do{c[r>>2]=0;r=r+4|0}while((r|0)<(q|0));t=d[j+n+96>>0]|0;g=g>>>1;c[k+((t&31)<<2)>>2]=b[j+(n*10|0)+114>>1];c[k+((t+1&31)<<2)>>2]=b[j+(n*10|0)+116>>1];c[k+((t+2&31)<<2)>>2]=b[j+(n*10|0)+118>>1];c[k+((t+3&31)<<2)>>2]=b[j+(n*10|0)+120>>1];j=o+ -5|0;h=h>>>1;if((m|0)<=0){i=p;return}n=(l|0)>0;o=1<>1]|0;t=t+(c[k+(t>>>j<<2)>>2]|0)|0;if(t&q)t=0-t>>31&o;b[a+(s<<1)>>1]=t;s=s+1|0}while((s|0)!=(l|0))}r=r+1|0;if((r|0)==(m|0))break;else{a=a+(g<<1)|0;f=f+(h<<1)|0}}i=p;return}function ed(a,d,f,g,h,j,k,l,m,n,o,p,q){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0;n=i;o=h+(m*10|0)+112|0;r=c[h+(m<<2)+100>>2]|0;f=f>>>1;g=g>>>1;if((r|0)!=1){if(c[j>>2]|0){u=b[o>>1]|0;if((l|0)>0){p=1<>1]|0)+u|0;if(v&t)v=0-v>>31&p;b[a+(($(s,f)|0)<<1)>>1]=v;s=s+1|0}while((s|0)!=(l|0));p=1}else p=1}else p=0;if(c[j+8>>2]|0){s=b[o>>1]|0;k=k+ -1|0;if((l|0)>0){v=1<>1]|0)+s|0;if(w&u)w=0-w>>31&v;b[a+(($(t,f)|0)+k<<1)>>1]=w;t=t+1|0}while((t|0)!=(l|0))}}if(!r){u=l;v=p;w=0;t=k;md(a,d,f,g,h,t,u,m,v,w,q);i=n;return}}else p=0;if(c[j+4>>2]|0){r=b[o>>1]|0;if((p|0)<(k|0)){s=1<>1]|0)+r|0;if(v&t)v=0-v>>31&s;b[a+(u<<1)>>1]=v;u=u+1|0}while((u|0)!=(k|0));r=1}else r=1}else r=0;if(!(c[j+12>>2]|0)){u=l;v=p;w=r;t=k;md(a,d,f,g,h,t,u,m,v,w,q);i=n;return}j=b[o>>1]|0;t=l+ -1|0;o=$(t,f)|0;u=$(t,g)|0;if((p|0)>=(k|0)){u=t;v=p;w=r;t=k;md(a,d,f,g,h,t,u,m,v,w,q);i=n;return}s=1<>1]|0)+j|0;if(w&l)w=0-w>>31&s;b[a+(v+o<<1)>>1]=w;v=v+1|0}while((v|0)!=(k|0));md(a,d,f,g,h,k,t,m,p,r,q);i=n;return}function fd(d,f,g,h,j,k,l,m,n,o,p,q,r){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;t=i;D=j+(n*10|0)+112|0;C=c[j+(n<<2)+100>>2]|0;g=g>>>1;h=h>>>1;B=(C|0)!=1;if(B){if(c[k>>2]|0){I=b[D>>1]|0;if((m|0)>0){H=1<>1]|0)+I|0;if(J&G)J=0-J>>31&H;b[d+(($(F,g)|0)<<1)>>1]=J;F=F+1|0}while((F|0)!=(m|0));F=1}else F=1}else F=0;if(c[k+8>>2]|0){G=b[D>>1]|0;l=l+ -1|0;if((m|0)>0){J=1<>1]|0)+G|0;if(K&I)K=0-K>>31&J;b[d+(($(H,g)|0)+l<<1)>>1]=K;H=H+1|0}while((H|0)!=(m|0))}}if(!C){D=1;G=0}else E=15}else{F=0;E=15}if((E|0)==15){if(c[k+4>>2]|0){H=b[D>>1]|0;if((F|0)<(l|0)){I=1<>1]|0)+H|0;if(J&G)J=0-J>>31&I;b[d+(E<<1)>>1]=J;E=E+1|0}while((E|0)!=(l|0));G=1}else G=1}else G=0;if(c[k+12>>2]|0){D=b[D>>1]|0;m=m+ -1|0;I=$(m,g)|0;H=$(m,h)|0;if((F|0)<(l|0)){K=1<>1]|0)+D|0;if(L&J)L=0-L>>31&K;b[d+(E+I<<1)>>1]=L;E=E+1|0}while((E|0)!=(l|0));D=0}else D=0}else D=0}md(d,f,g,h,j,l,m,n,F,G,r);r=(C|0)==2;if((a[q>>0]|0)==0&r?(c[k>>2]|0)==0:0)j=(c[k+4>>2]|0)==0;else j=0;H=j&1;j=q+1|0;C=(C|0)==3;if((a[j>>0]|0)==0&C?(c[k+4>>2]|0)==0:0)n=(c[k+8>>2]|0)==0;else n=0;I=n&1;n=q+2|0;if((a[n>>0]|0)==0&r?(c[k+8>>2]|0)==0:0)E=(c[k+12>>2]|0)==0;else E=0;J=E&1;E=q+3|0;if((a[E>>0]|0)==0&C?(c[k>>2]|0)==0:0)k=(c[k+12>>2]|0)==0;else k=0;k=k&1;B=B^1;if(!((a[o>>0]|0)==0|B)?(A=H+G|0,z=m-k|0,(A|0)<(z|0)):0)do{b[d+(($(A,g)|0)<<1)>>1]=b[f+(($(A,h)|0)<<1)>>1]|0;A=A+1|0}while((A|0)!=(z|0));if(!((a[o+1>>0]|0)==0|B)?(y=I+G|0,x=m-J|0,(y|0)<(x|0)):0){z=l+ -1|0;do{b[d+(z+($(y,g)|0)<<1)>>1]=b[f+(z+($(y,h)|0)<<1)>>1]|0;y=y+1|0}while((y|0)!=(x|0))}if(!((a[p>>0]|0)==0|D)?(w=H+F|0,v=l-I|0,(w|0)<(v|0)):0)do{b[d+(w<<1)>>1]=b[f+(w<<1)>>1]|0;w=w+1|0}while((w|0)!=(v|0));if(!((a[p+1>>0]|0)==0|D)?(u=k+F|0,s=l-J|0,(u|0)<(s|0)):0){v=m+ -1|0;p=$(v,h)|0;v=$(v,g)|0;do{b[d+(u+v<<1)>>1]=b[f+(u+p<<1)>>1]|0;u=u+1|0}while((u|0)!=(s|0))}if((a[q>>0]|0)!=0&r)b[d>>1]=b[f>>1]|0;if((a[j>>0]|0)!=0&C){L=l+ -1|0;b[d+(L<<1)>>1]=b[f+(L<<1)>>1]|0}if((a[n>>0]|0)!=0&r){L=m+ -1|0;K=l+ -1|0;b[d+(K+($(L,g)|0)<<1)>>1]=b[f+(K+($(L,h)|0)<<1)>>1]|0}if(!((a[E>>0]|0)!=0&C)){i=t;return}L=m+ -1|0;b[d+(($(L,g)|0)<<1)>>1]=b[f+(($(L,h)|0)<<1)>>1]|0;i=t;return}function gd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;ld(a,b,2,c,d,e,f,g);i=h;return}function hd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;ld(a,2,b,c,d,e,f,g);i=h;return}function id(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;kd(a,b,2,c,d,e,f);i=g;return}function jd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;kd(a,2,b,c,d,e,f);i=g;return}function kd(d,f,g,h,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;m=i;f=f>>>1;p=g>>>1;o=l+ -8|0;g=$(f,-2)|0;n=0-f|0;r=1<>2]<=1){v=0-s|0;u=(a[j+l>>0]|0)==0;t=(a[k+l>>0]|0)==0;x=0;w=d;while(1){y=w+(n<<1)|0;B=e[y>>1]|0;z=e[w>>1]|0;A=(e[w+(g<<1)>>1]|0)+4-(e[w+(f<<1)>>1]|0)+(z-B<<2)>>3;if((A|0)<(v|0))A=v;else A=(A|0)>(s|0)?s:A;if(u){B=A+B|0;if(B&q)B=0-B>>31&r;b[y>>1]=B}if(t){y=z-A|0;if(y&q)y=0-y>>31&r;b[w>>1]=y}x=x+1|0;if((x|0)==4)break;else w=w+(p<<1)|0}}l=l+1|0;if((l|0)==2)break;else d=d+(p<<2<<1)|0}i=m;return}function ld(d,f,g,h,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;n=i;f=f>>>1;g=g>>>1;o=m+ -8|0;y=h<>3;u=y>>2;q=$(f,-4)|0;p=f*3|0;v=C+q|0;F=(g+f|0)*3|0;t=(y>>1)+y>>3;H=1<>1]|0;X=b[d+(s<<1)>>1]|0;W=b[d+(w<<1)>>1]|0;da=W&65535;R=(Y&65535)-((X&65535)<<1)+da|0;R=(R|0)>-1?R:0-R|0;T=b[d+(h<<1)>>1]|0;U=b[d+(f<<1)>>1]|0;V=b[d>>1]|0;M=V&65535;S=(T&65535)-((U&65535)<<1)+M|0;S=(S|0)>-1?S:0-S|0;ba=e[d+(z<<1)>>1]|0;Q=(e[d+(A<<1)>>1]|0)-((e[d+(B<<1)>>1]|0)<<1)+ba|0;Q=(Q|0)>-1?Q:0-Q|0;ca=e[d+(C<<1)>>1]|0;Z=(e[d+(D<<1)>>1]|0)-((e[d+(E<<1)>>1]|0)<<1)+ca|0;Z=(Z|0)>-1?Z:0-Z|0;L=S+R|0;aa=Z+Q|0;K=c[j+(I<<2)>>2]<>0]|0;P=a[l+I>>0]|0;do if((aa+L|0)<(y|0)){N=(K*5|0)+1>>1;ea=(e[d+(q<<1)>>1]|0)-da|0;O=b[d+(p<<1)>>1]|0;fa=(O&65535)-M|0;if((((((((fa|0)>-1?fa:0-fa|0)+((ea|0)>-1?ea:0-ea|0)|0)<(x|0)?(fa=da-M|0,(((fa|0)>-1?fa:0-fa|0)|0)<(N|0)):0)?(fa=(e[d+(v<<1)>>1]|0)-ba|0,ea=(e[d+(F<<1)>>1]|0)-ca|0,(((ea|0)>-1?ea:0-ea|0)+((fa|0)>-1?fa:0-fa|0)|0)<(x|0)):0)?(fa=ba-ca|0,(((fa|0)>-1?fa:0-fa|0)|0)<(N|0)):0)?(L<<1|0)<(u|0):0)?(aa<<1|0)<(u|0):0){K=K<<1;L=_<<24>>24==0;M=0-K|0;N=P<<24>>24==0;ba=O;P=1;O=d;while(1){Z=O+(r<<1)|0;Y=Y&65535;_=O+(s<<1)|0;X=X&65535;aa=O+(w<<1)|0;R=W&65535;V=V&65535;W=O+(f<<1)|0;U=U&65535;Q=O+(h<<1)|0;S=T&65535;T=ba&65535;if(L){ba=e[O+(q<<1)>>1]|0;ca=(Y+4+U+(R+X+V<<1)>>3)-R|0;if((ca|0)<(M|0))ca=M;else ca=(ca|0)>(K|0)?K:ca;b[aa>>1]=ca+R;aa=((Y+2+X+R+V|0)>>>2)-X|0;if((aa|0)<(M|0))aa=M;else aa=(aa|0)>(K|0)?K:aa;b[_>>1]=aa+X;_=((Y*3|0)+4+X+R+V+(ba<<1)>>3)-Y|0;if((_|0)<(M|0))_=M;else _=(_|0)>(K|0)?K:_;b[Z>>1]=_+Y}if(N){X=(X+4+S+(V+R+U<<1)>>3)-V|0;if((X|0)<(M|0))X=M;else X=(X|0)>(K|0)?K:X;b[O>>1]=X+V;X=((R+2+V+U+S|0)>>>2)-U|0;if((X|0)<(M|0))X=M;else X=(X|0)>(K|0)?K:X;b[W>>1]=X+U;R=(R+4+V+U+(S*3|0)+(T<<1)>>3)-S|0;if((R|0)<(M|0))R=M;else R=(R|0)>(K|0)?K:R;b[Q>>1]=R+S}Q=O+(g<<1)|0;if((P|0)==4)break;Y=b[O+(g+r<<1)>>1]|0;X=b[O+(g+s<<1)>>1]|0;W=b[O+(g-f<<1)>>1]|0;V=b[Q>>1]|0;U=b[O+(g+f<<1)>>1]|0;T=b[O+(g+h<<1)>>1]|0;ba=b[O+(g+p<<1)>>1]|0;P=P+1|0;O=Q}d=d+(J<<1)|0;break}L=K>>1;N=K*10|0;M=0-K|0;O=_<<24>>24!=0;P=P<<24>>24!=0;Q=(Q+R|0)<(t|0)&(O^1);R=0-L|0;S=(Z+S|0)<(t|0)&(P^1);_=V;ba=U;U=1;V=d;while(1){aa=Y&65535;Y=V+(s<<1)|0;Z=X&65535;da=V+(w<<1)|0;ca=W&65535;_=_&65535;W=V+(f<<1)|0;X=ba&65535;T=T&65535;ba=((_-ca|0)*9|0)+8+($(X-Z|0,-3)|0)>>4;if((((ba|0)>-1?ba:0-ba|0)|0)<(N|0)){if((ba|0)<(M|0))ba=M;else ba=(ba|0)>(K|0)?K:ba;if(!O){ea=ba+ca|0;if(ea&G)ea=0-ea>>31&H;b[da>>1]=ea}if(!P){da=_-ba|0;if(da&G)da=0-da>>31&H;b[V>>1]=da}if(Q){aa=((aa+1+ca|0)>>>1)-Z+ba>>1;if((aa|0)<(R|0))aa=R;else aa=(aa|0)>(L|0)?L:aa;Z=aa+Z|0;if(Z&G)Z=0-Z>>31&H;b[Y>>1]=Z}if(S){T=((_+1+T|0)>>>1)-X-ba>>1;if((T|0)<(R|0))T=R;else T=(T|0)>(L|0)?L:T;T=T+X|0;if(T&G)T=0-T>>31&H;b[W>>1]=T}}Z=V+(g<<1)|0;if((U|0)==4)break;Y=b[V+(g+r<<1)>>1]|0;X=b[V+(g+s<<1)>>1]|0;W=b[V+(g-f<<1)>>1]|0;_=b[Z>>1]|0;ba=b[V+(g+f<<1)>>1]|0;T=b[V+(g+h<<1)>>1]|0;U=U+1|0;V=Z}d=d+(J<<1)|0}else d=d+(m<<1)|0;while(0);I=I+1|0}while((I|0)!=2);i=n;return}function md(e,f,g,h,j,k,l,m,n,o,p){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;t=i;x=c[j+(m<<2)+100>>2]|0;r=a[3936+(x<<2)>>0]|0;q=a[3938+(x<<2)>>0]|0;if((o|0)>=(l|0)){i=t;return}s=(n|0)<(k|0);v=1<>0]|0)+o|0,h)|0;y=$((a[3939+(x<<2)>>0]|0)+o|0,h)|0;x=$(o,g)|0;z=$(o,h)|0;while(1){if(s){o=p+r|0;A=y+q|0;B=n;do{C=b[f+(B+z<<1)>>1]|0;D=b[f+(o+B<<1)>>1]|0;if((C&65535)>(D&65535))D=3;else D=((C<<16>>16!=D<<16>>16)<<31>>31)+2|0;E=b[f+(A+B<<1)>>1]|0;if((C&65535)>(E&65535))E=1;else E=(C<<16>>16!=E<<16>>16)<<31>>31;C=(b[j+(m*10|0)+(d[3928+(E+D)>>0]<<1)+112>>1]|0)+(C&65535)|0;if(C&u)C=0-C>>31&v;b[e+(B+x<<1)>>1]=C;B=B+1|0}while((B|0)!=(k|0))}w=w+1|0;if((w|0)==(l|0))break;else{p=p+h|0;y=y+h|0;x=x+g|0;z=z+h|0}}i=t;return}function nd(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;k=c[b+136>>2]|0;l=(c[b+180>>2]|0)+13080|0;r=(1<>2])+ -1|0;o=r&e;n=r&f;q=(n|0)!=0|(a[k+309>>0]|0)!=0;m=q&1;c[k+31296>>2]=m;p=(o|0)!=0|(a[k+308>>0]|0)!=0;b=p&1;c[k+31292>>2]=b;if(!(r&(f|e)))p=d[k+311>>0]|0;else p=p&q&1;c[k+31300>>2]=p;if((o+g|0)==(1<>2]|0))m=(a[k+310>>0]|0)!=0&(n|0)==0&1;c[k+31308>>2]=m;if(!m){q=0;q=q&1;r=k+31304|0;c[r>>2]=q;r=h+f|0;q=k+316|0;q=c[q>>2]|0;q=(r|0)<(q|0);q=q?b:0;r=k+31288|0;c[r>>2]=q;i=j;return}q=(g+e|0)<(c[k+312>>2]|0);q=q&1;r=k+31304|0;c[r>>2]=q;r=h+f|0;q=k+316|0;q=c[q>>2]|0;q=(r|0)<(q|0);q=q?b:0;r=k+31288|0;c[r>>2]=q;i=j;return}function od(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;e=i;i=i+32|0;g=e;f=e+24|0;h=c[b+136>>2]|0;n=h+204|0;j=Xd(13196)|0;c[f>>2]=j;if(!j){B=-12;i=e;return B|0}k=c[j+4>>2]|0;j=b+4|0;$a(c[j>>2]|0,48,3952,g);r=Xd(468)|0;if(!r){B=-12;i=e;return B|0}o=c[r+4>>2]|0;c[o+4>>2]=1;m=o+8|0;c[m>>2]=1;a[o>>0]=0;c[o+348>>2]=1;l=o+352|0;p=o+380|0;q=o+408|0;s=0;do{c[l+(s<<2)>>2]=1;c[p+(s<<2)>>2]=0;c[q+(s<<2)>>2]=-1;s=s+1|0}while((s|0)<(c[m>>2]|0));c[o+436>>2]=0;c[o+440>>2]=1;a[o+444>>0]=0;s=b+188|0;Zd(s);c[s>>2]=r;c[k>>2]=0;s=k+72|0;c[s>>2]=1;m=h+212|0;A=c[m>>2]|0;r=h+220|0;u=c[r>>2]|0;B=(c[n>>2]|0)+(A>>>3)|0;B=(ye(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24|0)|0)<<(A&7);A=A+8|0;c[m>>2]=u>>>0>A>>>0?A:u;u=k+4|0;c[u>>2]=B>>>24;a:do if(B>>>0<=67108863){a[k+8>>0]=0;l=c[m>>2]|0;q=c[r>>2]|0;p=c[n>>2]|0;A=p+(l>>>3)|0;A=(ye(d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24|0)|0)<<(l&7)&-65536;l=l+16|0;l=q>>>0>l>>>0?l:q;c[m>>2]=l;B=p+(l>>>3)|0;B=(ye(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24|0)|0)<<(l&7)>>>16;l=l+16|0;c[m>>2]=q>>>0>l>>>0?l:q;q=k+13120|0;c[q>>2]=B|A;A=c[m>>2]|0;B=c[r>>2]|0;l=p+(A>>>3)|0;l=(ye(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0)|0)<<(A&7)&-65536;A=A+16|0;A=B>>>0>A>>>0?A:B;c[m>>2]=A;p=p+(A>>>3)|0;p=(ye(d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24|0)|0)<<(A&7)>>>16;A=A+16|0;c[m>>2]=B>>>0>A>>>0?A:B;l=p|l;p=k+13124|0;c[p>>2]=l;l=Cd(c[q>>2]|0,l,0,c[j>>2]|0)|0;if((l|0)>=0){A=c[m>>2]|0;o=c[r>>2]|0;B=(c[n>>2]|0)+(A>>>3)|0;B=(ye(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24|0)|0)<<(A&7)>>>24;A=A+8|0;c[m>>2]=o>>>0>A>>>0?A:o;o=k+52|0;c[o>>2]=B+8;u=c[u>>2]|0;if(!u){c[k+60>>2]=32;u=32}else if((u|0)==1){c[k+60>>2]=54;u=54}else if((u|0)==2){c[k+60>>2]=56;u=56}else{c[k+60>>2]=58;u=58}c[k+56>>2]=1;u=je(u)|0;if(!u)l=-22;else{c[k+13180>>2]=0;c[k+13168>>2]=0;B=d[u+5>>0]|0;c[k+13172>>2]=B;c[k+13176>>2]=B;B=d[u+6>>0]|0;c[k+13184>>2]=B;c[k+13188>>2]=B;c[k+64>>2]=8;if((c[s>>2]|0)>0){v=k+76|0;u=0;do{c[v+(u*12|0)>>2]=1;c[v+(u*12|0)+4>>2]=0;c[v+(u*12|0)+8>>2]=-1;u=u+1|0}while((u|0)<(c[s>>2]|0))}x=(pd(n)|0)+3|0;y=k+13064|0;c[y>>2]=x;x=1<>2]=w+(c[q>>2]|0)&x;c[p>>2]=w+(c[p>>2]|0)&x;x=k+13068|0;c[x>>2]=pd(n)|0;w=k+13072|0;c[w>>2]=(pd(n)|0)+2;A=pd(n)|0;B=c[w>>2]|0;s=k+13076|0;c[s>>2]=B+A;if(B>>>0>=(c[y>>2]|0)>>>0){$a(c[j>>2]|0,16,3968,g);l=-1094995529;break}v=k+13088|0;c[v>>2]=0;u=k+13092|0;c[u>>2]=pd(n)|0;z=c[m>>2]|0;A=(d[(c[n>>2]|0)+(z>>>3)>>0]|0)<<(z&7)>>>7&1;c[m>>2]=((z|0)<(c[r>>2]|0)&1)+z;a[k+12941>>0]=A;A=c[m>>2]|0;z=c[n>>2]|0;B=(d[z+(A>>>3)>>0]|0)<<(A&7)>>>7&1;c[m>>2]=((A|0)<(c[r>>2]|0)&1)+A;c[k+68>>2]=B;do if(B){A=c[m>>2]|0;B=c[r>>2]|0;C=z+(A>>>3)|0;C=(ye(d[C>>0]|d[C+1>>0]<<8|d[C+2>>0]<<16|d[C+3>>0]<<24|0)|0)<<(A&7)>>>28;z=A+4|0;c[m>>2]=B>>>0>z>>>0?z:B;z=k+13044|0;a[z>>0]=C+1;C=c[m>>2]|0;B=c[r>>2]|0;A=(c[n>>2]|0)+(C>>>3)|0;A=(ye(d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24|0)|0)<<(C&7)>>>28;C=C+4|0;c[m>>2]=B>>>0>C>>>0?C:B;a[k+13045>>0]=A+1;A=(pd(n)|0)+3|0;c[k+13048>>2]=A;c[k+13052>>2]=A+(pd(n)|0);z=d[z>>0]|0;A=c[o>>2]|0;if((z|0)>(A|0)){l=c[j>>2]|0;c[g>>2]=z;c[g+4>>2]=A;$a(l,16,4008,g);l=-1094995529;break a}else{B=c[m>>2]|0;C=(d[(c[n>>2]|0)+(B>>>3)>>0]|0)<<(B&7)>>>7&1;c[m>>2]=((B|0)<(c[r>>2]|0)&1)+B;a[k+13056>>0]=C;break}}while(0);c[k+2184>>2]=0;a[k+12942>>0]=0;a[k+13060>>0]=0;z=c[m>>2]|0;C=(d[(c[n>>2]|0)+(z>>>3)>>0]|0)<<(z&7)>>>7&1;c[m>>2]=((z|0)<(c[r>>2]|0)&1)+z;a[k+13061>>0]=C;c[k+160>>2]=0;c[k+164>>2]=1;C=c[m>>2]|0;z=c[n>>2]|0;D=d[z+(C>>>3)>>0]|0;A=c[r>>2]|0;B=((C|0)<(A|0)&1)+C|0;c[m>>2]=B;if((D&128>>>(C&7)|0)!=0?(D=d[z+(B>>>3)>>0]|0,t=((B|0)<(A|0)&1)+B+7|0,t=A>>>0>t>>>0?t:A,c[m>>2]=t,(D&128>>>(B&7)|0)!=0):0){C=(d[z+(t>>>3)>>0]|0)<<(t&7)>>>7&1;c[m>>2]=((t|0)<(A|0)&1)+t;c[k+13096>>2]=C;C=c[m>>2]|0;D=(d[z+(C>>>3)>>0]|0)<<(C&7)>>>7&1;c[m>>2]=((C|0)<(c[r>>2]|0)&1)+C;c[k+13100>>2]=D;D=c[m>>2]|0;C=(d[z+(D>>>3)>>0]|0)<<(D&7)>>>7&1;c[m>>2]=((D|0)<(c[r>>2]|0)&1)+D;c[k+13104>>2]=C;C=c[m>>2]|0;D=(d[z+(C>>>3)>>0]|0)<<(C&7)>>>7&1;c[m>>2]=((C|0)<(c[r>>2]|0)&1)+C;c[k+13108>>2]=D;D=c[m>>2]|0;C=d[z+(D>>>3)>>0]|0;A=c[r>>2]|0;t=((D|0)<(A|0)&1)+D|0;c[m>>2]=t;if(C&128>>>(D&7)){$a(c[j>>2]|0,24,4072,g);t=c[m>>2]|0;z=c[n>>2]|0;A=c[r>>2]|0}D=(d[z+(t>>>3)>>0]|0)<<(t&7)>>>7&1;c[m>>2]=((t|0)<(A|0)&1)+t;c[k+13112>>2]=D;D=c[m>>2]|0;C=d[z+(D>>>3)>>0]|0;t=c[r>>2]|0;A=((D|0)<(t|0)&1)+D|0;c[m>>2]=A;if(C&128>>>(D&7)){$a(c[j>>2]|0,24,4128,g);A=c[m>>2]|0;z=c[n>>2]|0;t=c[r>>2]|0}D=(d[z+(A>>>3)>>0]|0)<<(A&7)>>>7&1;c[m>>2]=((A|0)<(t|0)&1)+A;c[k+13116>>2]=D;D=c[m>>2]|0;C=d[z+(D>>>3)>>0]|0;c[m>>2]=((D|0)<(c[r>>2]|0)&1)+D;if(C&128>>>(D&7))$a(c[j>>2]|0,24,4192,g)}n=c[q>>2]|0;c[k+12>>2]=n;p=c[p>>2]|0;c[k+16>>2]=p;D=c[y>>2]|0;q=(c[x>>2]|0)+D|0;c[k+13080>>2]=q;C=D+ -1|0;c[k+13084>>2]=C;B=1<>q;c[k+13128>>2]=r;B=p+ -1+B>>q;c[k+13132>>2]=B;c[k+13136>>2]=$(B,r)|0;c[k+13140>>2]=n>>D;c[k+13144>>2]=p>>D;r=c[w>>2]|0;c[k+13148>>2]=n>>r;c[k+13152>>2]=p>>r;c[k+13156>>2]=n>>C;c[k+13160>>2]=p>>C;r=q-r|0;c[k+13164>>2]=(1<>2]=((c[o>>2]|0)*6|0)+ -48;D=(1<>>0>6){D=c[j>>2]|0;c[g>>2]=q;$a(D,16,4296,g);break}k=c[v>>2]|0;if(k>>>0>r>>>0){D=c[j>>2]|0;c[g>>2]=k;$a(D,16,4328,g);break}k=c[u>>2]|0;if(k>>>0>r>>>0){D=c[j>>2]|0;c[g>>2]=k;$a(D,16,4384,g);break}k=c[s>>2]|0;if(k>>>0>(q>>>0>5?5:q)>>>0){D=c[j>>2]|0;c[g>>2]=k;$a(D,16,4440,g);break}h=(c[h+216>>2]|0)-(c[m>>2]|0)|0;j=c[j>>2]|0;if((h|0)<0){c[g>>2]=0-h;$a(j,16,4488,g);break}if(c[j+680>>2]&4){c[g>>2]=0;c[g+4>>2]=n;c[g+8>>2]=p;c[g+12>>2]=n;c[g+16>>2]=p;c[g+20>>2]=4592;$a(j,48,4520,g)}g=b+252|0;h=c[g>>2]|0;do if(!h)h=0;else{D=c[f>>2]|0;if(pe(c[h+4>>2]|0,c[D+4>>2]|0,c[D+8>>2]|0)|0){h=0;break}Zd(f);D=0;i=e;return D|0}while(0);do{j=b+(h<<2)+380|0;k=c[j>>2]|0;do if(k){if(c[c[k+4>>2]>>2]|0)break;Zd(j)}while(0);h=h+1|0}while((h|0)!=256);h=c[g>>2]|0;do if(h){j=b+180|0;if((c[j>>2]|0)!=(c[h+4>>2]|0))break;C=b+1404|0;Zd(C);D=Yd(c[g>>2]|0)|0;c[C>>2]=D;if(D)break;c[j>>2]=0}while(0);Zd(g);c[g>>2]=c[f>>2];D=0;i=e;return D|0}$a(c[j>>2]|0,16,4256,g)}}}else l=-1094995529;while(0);Zd(f);D=l;i=e;return D|0}function pd(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;e=c[a>>2]|0;f=a+8|0;g=c[f>>2]|0;a=c[a+16>>2]|0;l=e+(g>>>3)|0;l=(ye(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0)|0)<<(g&7);h=g+16|0;h=a>>>0>h>>>0?h:a;j=e+(h>>>3)|0;h=(ye(d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24|0)|0)<<(h&7)>>>16|l&-65536;j=h>>>0>65535;h=j?l>>>16:h;j=j?16:0;if(h&65280){j=j|8;h=h>>>8}h=(d[7416+h>>0]|0)+j|0;j=31-h|0;l=0-g|0;k=a-g|0;if((j|0)>=(l|0))l=(k|0)<(j|0)?k:j;g=l+g|0;c[f>>2]=g;l=j+1|0;if(!l){l=0;l=l+ -1|0;i=b;return l|0}k=e+(g>>>3)|0;k=(ye(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0)<<(g&7);if((l|0)<26){l=g+l|0;c[f>>2]=a>>>0>l>>>0?l:a;l=k>>>h;l=l+ -1|0;i=b;return l|0}else{h=g+16|0;h=a>>>0>h>>>0?h:a;c[f>>2]=h;l=j+ -15|0;g=e+(h>>>3)|0;j=(ye(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0)<<(h&7)>>>(47-j|0);h=h+l|0;c[f>>2]=a>>>0>h>>>0?h:a;l=j|k>>>16<>2]|0;r=h+204|0;j=Sd(1692)|0;c[m>>2]=j;if(!j){M=-12;i=e;return M|0}M=Ud(j,1692,6,0,0)|0;c[f>>2]=M;if(!M){Pd(m);M=-12;i=e;return M|0}k=b+4|0;$a(c[k>>2]|0,48,4600,g);a[(c[m>>2]|0)+53>>0]=1;j=c[m>>2]|0;c[j+44>>2]=1;c[j+48>>2]=1;a[j+52>>0]=1;a[(c[m>>2]|0)+57>>0]=0;j=c[m>>2]|0;c[j+60>>2]=0;c[j+64>>2]=0;a[j+1629>>0]=2;j=pd(r)|0;a:do if(j>>>0>255){M=c[k>>2]|0;c[g>>2]=j;$a(M,16,4616,g);g=-1094995529}else{l=pd(r)|0;q=c[m>>2]|0;c[q>>2]=l;if(l>>>0>31){M=c[k>>2]|0;c[g>>2]=l;$a(M,16,4648,g);g=-1094995529;break}n=c[b+(l<<2)+252>>2]|0;if(!n){M=c[k>>2]|0;c[g>>2]=l;$a(M,16,4680,g);g=-1094995529;break}n=c[n+4>>2]|0;l=h+212|0;K=c[l>>2]|0;M=d[(c[r>>2]|0)+(K>>>3)>>0]<<(K&7)>>>7&1;s=h+220|0;c[l>>2]=((K|0)<(c[s>>2]|0)&1)+K;a[q+41>>0]=M;M=c[l>>2]|0;K=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+39>>0]=K;K=c[l>>2]|0;M=c[s>>2]|0;q=c[r>>2]|0;L=q+(K>>>3)|0;L=(ye(d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24|0)|0)<<(K&7)>>>29;K=K+3|0;c[l>>2]=M>>>0>K>>>0?K:M;M=c[m>>2]|0;c[M+1624>>2]=L;L=c[l>>2]|0;q=d[q+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[M+4>>0]=q;M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+5>>0]=q;q=(pd(r)|0)+1|0;c[(c[m>>2]|0)+8>>2]=q;q=(pd(r)|0)+1|0;c[(c[m>>2]|0)+12>>2]=q;q=pd(r)|0;if(!(q&1))q=0-(q>>>1)|0;else q=(q+1|0)>>>1;M=c[m>>2]|0;c[M+16>>2]=q;K=c[l>>2]|0;L=d[(c[r>>2]|0)+(K>>>3)>>0]<<(K&7)>>>7&1;c[l>>2]=((K|0)<(c[s>>2]|0)&1)+K;a[M+20>>0]=L;M=c[l>>2]|0;L=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+21>>0]=L;L=c[l>>2]|0;M=d[(c[r>>2]|0)+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[(c[m>>2]|0)+22>>0]=M;M=c[m>>2]|0;c[M+24>>2]=0;if(a[M+22>>0]|0){M=pd(r)|0;c[(c[m>>2]|0)+24>>2]=M}q=pd(r)|0;if(!(q&1))q=0-(q>>>1)|0;else q=(q+1|0)>>>1;c[(c[m>>2]|0)+28>>2]=q;if((q+12|0)>>>0>24){M=c[k>>2]|0;c[g>>2]=q;$a(M,16,4704,g);g=-1094995529;break}q=pd(r)|0;if(!(q&1))t=0-(q>>>1)|0;else t=(q+1|0)>>>1;q=c[m>>2]|0;c[q+32>>2]=t;if((t+12|0)>>>0>24){M=c[k>>2]|0;c[g>>2]=t;$a(M,16,4744,g);g=-1094995529;break}L=c[l>>2]|0;M=d[(c[r>>2]|0)+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[q+36>>0]=M;M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+37>>0]=q;q=c[l>>2]|0;M=d[(c[r>>2]|0)+(q>>>3)>>0]<<(q&7)>>>7&1;c[l>>2]=((q|0)<(c[s>>2]|0)&1)+q;a[(c[m>>2]|0)+38>>0]=M;M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+40>>0]=q;q=c[l>>2]|0;M=d[(c[r>>2]|0)+(q>>>3)>>0]<<(q&7)>>>7&1;c[l>>2]=((q|0)<(c[s>>2]|0)&1)+q;a[(c[m>>2]|0)+42>>0]=M;M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+43>>0]=q;q=c[m>>2]|0;do if(a[q+42>>0]|0){t=(pd(r)|0)+1|0;c[(c[m>>2]|0)+44>>2]=t;t=pd(r)|0;u=t+1|0;v=c[m>>2]|0;c[v+48>>2]=u;q=c[v+44>>2]|0;if((q|0)!=0?(q|0)<(c[n+13120>>2]|0):0){if((u|0)!=0?(u|0)<(c[n+13124>>2]|0):0){if(q>>>0>536870910)q=0;else{q=Md(q<<2)|0;v=c[m>>2]|0}c[v+1648>>2]=q;q=c[m>>2]|0;t=c[q+48>>2]|0;if(t>>>0>536870910)t=0;else{t=Md(t<<2)|0;q=c[m>>2]|0}c[q+1652>>2]=t;q=c[m>>2]|0;if(!(c[q+1648>>2]|0)){g=-12;break a}if(!(c[q+1652>>2]|0)){g=-12;break a}M=c[l>>2]|0;t=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[q+52>>0]=t;t=c[m>>2]|0;do if(!(a[t+52>>0]|0)){v=(c[t+44>>2]|0)+ -1|0;if((v|0)>0){u=0;q=0;w=0;do{v=(pd(r)|0)+1|0;t=c[m>>2]|0;c[(c[t+1648>>2]|0)+(w<<2)>>2]=v;u=te(v|0,0,u|0,q|0)|0;q=D;w=w+1|0;v=(c[t+44>>2]|0)+ -1|0}while((w|0)<(v|0))}else{q=0;u=0}w=c[n+13128>>2]|0;x=((w|0)<0)<<31>>31;if(!(q>>>0>>0|(q|0)==(x|0)&u>>>0>>0)){$a(c[k>>2]|0,16,4872,g);g=-1094995529;break a}M=se(w|0,x|0,u|0,q|0)|0;c[(c[t+1648>>2]|0)+(v<<2)>>2]=M;v=(c[t+48>>2]|0)+ -1|0;if((v|0)>0){u=0;q=0;w=0;do{v=(pd(r)|0)+1|0;t=c[m>>2]|0;c[(c[t+1652>>2]|0)+(w<<2)>>2]=v;u=te(v|0,0,u|0,q|0)|0;q=D;w=w+1|0;v=(c[t+48>>2]|0)+ -1|0}while((w|0)<(v|0))}else{q=0;u=0}w=c[n+13132>>2]|0;x=((w|0)<0)<<31>>31;if(q>>>0>>0|(q|0)==(x|0)&u>>>0>>0){M=se(w|0,x|0,u|0,q|0)|0;c[(c[t+1652>>2]|0)+(v<<2)>>2]=M;break}else{$a(c[k>>2]|0,16,4896,g);g=-1094995529;break a}}while(0);M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[t+53>>0]=q;q=c[m>>2]|0;break}M=c[k>>2]|0;c[g>>2]=t;$a(M,16,4832,g);g=-1094995529;break a}M=c[k>>2]|0;c[g>>2]=q+ -1;$a(M,16,4784,g);g=-1094995529;break a}while(0);t=c[l>>2]|0;M=d[(c[r>>2]|0)+(t>>>3)>>0]<<(t&7)>>>7&1;c[l>>2]=((t|0)<(c[s>>2]|0)&1)+t;a[q+54>>0]=M;M=c[l>>2]|0;t=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+55>>0]=t;t=c[m>>2]|0;if(a[t+55>>0]|0){L=c[l>>2]|0;M=d[(c[r>>2]|0)+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[t+56>>0]=M;M=c[l>>2]|0;t=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+57>>0]=t;t=c[m>>2]|0;if(!(a[t+57>>0]|0)){q=pd(r)|0;if(!(q&1))q=0-(q>>>1)|0;else q=(q+1|0)>>>1;c[(c[m>>2]|0)+60>>2]=q<<1;q=pd(r)|0;if(!(q&1))q=0-(q>>>1)|0;else q=(q+1|0)>>>1;q=q<<1;t=c[m>>2]|0;c[t+64>>2]=q;u=c[t+60>>2]|0;if((u+13|0)>>>0>26){M=c[k>>2]|0;c[g>>2]=(u|0)/2|0;$a(M,16,4920,g);g=-1094995529;break}if((q+13|0)>>>0>26){M=c[k>>2]|0;c[g>>2]=(q|0)/2|0;$a(M,16,4960,g);g=-1094995529;break}}}M=c[l>>2]|0;u=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[t+68>>0]=u;u=c[m>>2]|0;if(a[u+68>>0]|0){v=0;do{q=u+(v<<6)+69|0;t=q+16|0;do{a[q>>0]=16;q=q+1|0}while((q|0)<(t|0));a[u+v+1605>>0]=16;a[u+v+1611>>0]=16;v=v+1|0}while((v|0)!=6);q=u+453|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+517|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+581|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+645|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+709|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+773|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+837|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+901|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+965|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1029|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1093|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1157|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1221|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1285|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1349|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1413|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1477|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1541|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=c[m>>2]|0;F=c[p>>2]|0;C=F+204|0;E=F+212|0;F=F+220|0;B=0;b:do{u=(B|0)>0?64:16;A=(B|0)>1;z=B+ -2|0;t=(B|0)==3?3:1;w=1<<(B<<1)+4;x=(w|0)>0;y=(B|0)==0;w=(w|0)<64?w:64;v=0;do{M=c[E>>2]|0;L=d[(c[C>>2]|0)+(M>>>3)>>0]|0;c[E>>2]=((M|0)<(c[F>>2]|0)&1)+M;do if(!(L&128>>>(M&7))){G=pd(C)|0;if(!G)break;if(v>>>0>>0){o=88;break b}G=v-G|0;we(q+(B*384|0)+(v<<6)+69|0,q+(B*384|0)+(G<<6)+69|0,u|0)|0;if(!A)break;a[q+(z*6|0)+v+1605>>0]=a[q+(z*6|0)+G+1605>>0]|0}else{if(A){G=pd(C)|0;if(!(G&1))G=0-(G>>>1)|0;else G=(G+1|0)>>>1;I=G+8|0;a[q+(z*6|0)+v+1605>>0]=I}else I=8;if(x)G=0;else break;do{if(y)H=(d[48+G>>0]<<2)+(d[32+G>>0]|0)|0;else H=(d[128+G>>0]<<3)+(d[64+G>>0]|0)|0;J=pd(C)|0;if(!(J&1))J=0-(J>>>1)|0;else J=(J+1|0)>>>1;I=(I+256+J|0)%256|0;a[q+(B*384|0)+(v<<6)+H+69>>0]=I;G=G+1|0}while((G|0)!=(w|0))}while(0);v=v+t|0}while((v|0)<6);B=B+1|0}while((B|0)<4);if((o|0)==88){M=c[k>>2]|0;c[g>>2]=G;$a(M,16,5192,g);g=-1094995529;break}if((c[n+4>>2]|0)==3){t=0;do{a[q+t+1285>>0]=a[q+t+901>>0]|0;a[q+t+1349>>0]=a[q+t+965>>0]|0;a[q+t+1477>>0]=a[q+t+1093>>0]|0;a[q+t+1541>>0]=a[q+t+1157>>0]|0;t=t+1|0}while((t|0)!=64);a[q+1612>>0]=a[q+1606>>0]|0;a[q+1613>>0]=a[q+1607>>0]|0;a[q+1615>>0]=a[q+1609>>0]|0;a[q+1616>>0]=a[q+1610>>0]|0}}M=c[l>>2]|0;t=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+1617>>0]=t;t=pd(r)|0;M=t+2|0;u=c[m>>2]|0;c[u+1620>>2]=M;q=n+13080|0;if(M>>>0>(c[q>>2]|0)>>>0){M=c[k>>2]|0;c[g>>2]=t;$a(M,16,5e3,g);g=-1094995529;break}L=c[l>>2]|0;M=d[(c[r>>2]|0)+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[u+1628>>0]=M;M=c[l>>2]|0;r=c[r>>2]|0;L=d[r+(M>>>3)>>0]|0;t=c[s>>2]|0;s=((M|0)<(t|0)&1)+M|0;c[l>>2]=s;do if((L&128>>>(M&7)|0)!=0?(M=d[r+(s>>>3)>>0]|0,L=((s|0)<(t|0)&1)+s+7|0,c[l>>2]=t>>>0>L>>>0?L:t,(M&128>>>(s&7)|0)!=0):0){r=c[m>>2]|0;s=c[p>>2]|0;p=s+204|0;if(a[r+21>>0]|0)a[r+1629>>0]=(pd(p)|0)+2;L=s+212|0;M=c[L>>2]|0;K=d[(c[p>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;J=s+220|0;c[L>>2]=((M|0)<(c[J>>2]|0)&1)+M;a[r+1630>>0]=K;K=c[L>>2]|0;M=d[(c[p>>2]|0)+(K>>>3)>>0]<<(K&7)>>>7&1;c[L>>2]=((K|0)<(c[J>>2]|0)&1)+K;M=M&255;a[r+1631>>0]=M;if(M<<24>>24){a[r+1632>>0]=pd(p)|0;M=pd(p)|0;t=r+1633|0;a[t>>0]=M;if((M&255)>>>0<5)s=0;else{$a(c[k>>2]|0,16,5088,g);break}while(1){u=pd(p)|0;if(!(u&1))u=0-(u>>>1)|0;else u=(u+1|0)>>>1;M=u&255;a[r+s+1634>>0]=M;if(M<<24>>24)$a(c[k>>2]|0,24,5152,g);u=pd(p)|0;if(!(u&1))u=0-(u>>>1)|0;else u=(u+1|0)>>>1;M=u&255;a[r+s+1639>>0]=M;if(M<<24>>24)$a(c[k>>2]|0,24,5152,g);if((s|0)<(d[t>>0]|0))s=s+1|0;else break}}a[r+1644>>0]=pd(p)|0;a[r+1645>>0]=pd(p)|0}while(0);p=c[m>>2]|0;r=(c[p+44>>2]|0)+1|0;if(r>>>0>536870910)r=0;else{r=Md(r<<2)|0;p=c[m>>2]|0}c[p+1656>>2]=r;p=c[m>>2]|0;r=(c[p+48>>2]|0)+1|0;if(r>>>0>536870910)r=0;else{r=Md(r<<2)|0;p=c[m>>2]|0}c[p+1660>>2]=r;p=n+13128|0;r=c[p>>2]|0;if(r>>>0>536870910)r=0;else r=Md(r<<2)|0;c[(c[m>>2]|0)+1664>>2]=r;s=c[m>>2]|0;r=c[s+1656>>2]|0;if(!r){g=-12;break}if(!(c[s+1660>>2]|0)){g=-12;break}if(!(c[s+1664>>2]|0)){g=-12;break}if(a[s+52>>0]|0){u=c[s+1648>>2]|0;if(!u){r=c[s+44>>2]|0;if(r>>>0>536870910)r=0;else{r=Md(r<<2)|0;s=c[m>>2]|0}c[s+1648>>2]=r;r=c[m>>2]|0;s=c[r+48>>2]|0;if(s>>>0>536870910)s=0;else{s=Md(s<<2)|0;r=c[m>>2]|0}c[r+1652>>2]=s;s=c[m>>2]|0;u=c[s+1648>>2]|0;if(!u){g=-12;break}}r=c[s+1652>>2]|0;if(!r){g=-12;break}t=s+44|0;w=c[t>>2]|0;if((w|0)>0){v=0;do{M=v;v=v+1|0;L=c[p>>2]|0;c[u+(M<<2)>>2]=(($(L,v)|0)/(w|0)|0)-(($(L,M)|0)/(w|0)|0);w=c[t>>2]|0}while((v|0)<(w|0))}t=s+48|0;v=c[t>>2]|0;if((v|0)>0){u=n+13132|0;w=0;do{M=w;w=w+1|0;L=c[u>>2]|0;c[r+(M<<2)>>2]=(($(L,w)|0)/(v|0)|0)-(($(L,M)|0)/(v|0)|0);v=c[t>>2]|0}while((w|0)<(v|0))}r=c[s+1656>>2]|0}c[r>>2]=0;w=s+44|0;if((c[w>>2]|0)>0){v=c[s+1648>>2]|0;u=0;t=0;do{u=(c[v+(t<<2)>>2]|0)+u|0;t=t+1|0;c[r+(t<<2)>>2]=u}while((t|0)<(c[w>>2]|0))}w=c[s+1660>>2]|0;c[w>>2]=0;t=s+48|0;if((c[t>>2]|0)>0){u=c[s+1652>>2]|0;x=0;v=0;do{x=(c[u+(v<<2)>>2]|0)+x|0;v=v+1|0;c[w+(v<<2)>>2]=x}while((v|0)<(c[t>>2]|0))}t=c[p>>2]|0;if((t|0)>0){u=c[s+1664>>2]|0;v=0;w=0;do{w=(v>>>0>(c[r+(w<<2)>>2]|0)>>>0&1)+w|0;c[u+(v<<2)>>2]=w;v=v+1|0;t=c[p>>2]|0}while((v|0)<(t|0))}v=$(c[n+13132>>2]|0,t)|0;if(v>>>0>536870910){c[s+1668>>2]=0;c[(c[m>>2]|0)+1672>>2]=0;r=0}else{r=v<<2;M=Md(r)|0;c[(c[m>>2]|0)+1668>>2]=M;M=Md(r)|0;c[(c[m>>2]|0)+1672>>2]=M;r=Md(r)|0}c[(c[m>>2]|0)+1676>>2]=r;r=n+13164|0;s=(c[r>>2]|0)+2|0;s=$(s,s)|0;if(s>>>0>536870910)s=0;else s=Md(s<<2)|0;c[(c[m>>2]|0)+1688>>2]=s;s=c[m>>2]|0;t=c[s+1668>>2]|0;if(!t){g=-12;break}F=c[s+1672>>2]|0;if(!F){g=-12;break}u=c[s+1676>>2]|0;if(!u){g=-12;break}if(!(c[s+1688>>2]|0)){g=-12;break}if((v|0)>0){G=s+44|0;y=s+48|0;A=c[s+1660>>2]|0;z=c[s+1648>>2]|0;B=c[s+1656>>2]|0;x=s+1652|0;E=0;do{H=c[p>>2]|0;w=(E|0)%(H|0)|0;C=(E|0)/(H|0)|0;K=c[G>>2]|0;I=0;while(1){if((I|0)>=(K|0)){I=0;break}J=I+1|0;if(w>>>0<(c[B+(J<<2)>>2]|0)>>>0)break;else I=J}L=c[y>>2]|0;J=0;while(1){if((J|0)>=(L|0)){J=0;break}K=J+1|0;if(C>>>0<(c[A+(K<<2)>>2]|0)>>>0)break;else J=K}if((I|0)>0){L=c[(c[x>>2]|0)+(J<<2)>>2]|0;K=0;M=0;do{M=($(c[z+(K<<2)>>2]|0,L)|0)+M|0;K=K+1|0}while((K|0)!=(I|0))}else M=0;if((J|0)>0){K=c[x>>2]|0;L=0;do{M=($(c[K+(L<<2)>>2]|0,H)|0)+M|0;L=L+1|0}while((L|0)!=(J|0))}L=$(c[z+(I<<2)>>2]|0,C-(c[A+(J<<2)>>2]|0)|0)|0;M=M+w+L-(c[B+(I<<2)>>2]|0)|0;c[t+(E<<2)>>2]=M;c[F+(M<<2)>>2]=E;E=E+1|0}while((E|0)!=(v|0))}else y=s+48|0;B=c[y>>2]|0;if((B|0)>0){w=s+44|0;v=s+1660|0;x=s+1656|0;F=c[w>>2]|0;z=0;C=0;while(1){A=z;z=z+1|0;if((F|0)>0){B=c[v>>2]|0;E=B+(z<<2)|0;L=c[E>>2]|0;H=F;F=0;while(1){J=c[B+(A<<2)>>2]|0;G=F;F=F+1|0;if(J>>>0>>0){H=c[x>>2]|0;I=H+(F<<2)|0;K=c[I>>2]|0;do{M=c[H+(G<<2)>>2]|0;if(M>>>0>>0){do{c[u+(c[t+(($(c[p>>2]|0,J)|0)+M<<2)>>2]<<2)>>2]=C;M=M+1|0;K=c[I>>2]|0}while(M>>>0>>0);L=c[E>>2]|0}J=J+1|0}while(J>>>0>>0);G=c[w>>2]|0}else G=H;C=C+1|0;if((F|0)>=(G|0))break;else H=G}A=c[y>>2]|0;F=G}else A=B;if((z|0)>=(A|0))break;else B=A}if(C>>>0>536870910)t=0;else o=182}else{C=0;o=182}if((o|0)==182){t=Md(C<<2)|0;s=c[m>>2]|0}c[s+1680>>2]=t;o=c[m>>2]|0;u=c[o+1680>>2]|0;if(!u){g=-12;break}t=o+48|0;x=c[t>>2]|0;if((x|0)>0){s=o+44|0;w=c[s>>2]|0;v=0;do{if((w|0)>0){x=c[o+1660>>2]|0;y=c[o+1656>>2]|0;z=0;do{M=$(c[p>>2]|0,c[x+(v<<2)>>2]|0)|0;c[u+(($(w,v)|0)+z<<2)>>2]=(c[y+(z<<2)>>2]|0)+M;z=z+1|0;w=c[s>>2]|0}while((z|0)<(w|0));x=c[t>>2]|0}v=v+1|0}while((v|0)<(x|0))}n=(c[q>>2]|0)-(c[n+13072>>2]|0)|0;y=c[r>>2]|0;c[o+1684>>2]=(c[o+1688>>2]|0)+(y+3<<2);s=y+2|0;if((s|0)>0){o=c[(c[m>>2]|0)+1688>>2]|0;q=0;do{c[o+(($(s,q)|0)<<2)>>2]=-1;c[o+(q<<2)>>2]=-1;q=q+1|0;y=c[r>>2]|0;s=y+2|0}while((q|0)<(s|0))}if((y|0)>-1){o=c[m>>2]|0;m=o+1668|0;q=n<<1;s=(n|0)>0;o=o+1684|0;t=0;while(1){c:do if((y|0)>-1){w=t>>n;v=c[m>>2]|0;u=c[o>>2]|0;x=0;while(1){C=c[v+(($(c[p>>2]|0,w)|0)+(x>>n)<<2)>>2]<>2]=C;y=c[r>>2]|0;if((x|0)>=(y|0))break c;x=x+1|0}}while(0);if((t|0)<(y|0))t=t+1|0;else break}}h=(c[h+216>>2]|0)-(c[l>>2]|0)|0;if((h|0)<0){M=c[k>>2]|0;c[g>>2]=0-h;$a(M,16,5056,g);g=0;break}M=b+(j<<2)+380|0;Zd(M);c[M>>2]=c[f>>2];M=0;i=e;return M|0}while(0);Zd(f);M=g;i=e;return M|0}function rd(a,b){a=a|0;b=b|0;var d=0;a=i;i=i+16|0;d=a;c[d>>2]=b;Pd(b+1648|0);Pd(b+1652|0);Pd(b+1656|0);Pd(b+1660|0);Pd(b+1664|0);Pd(b+1668|0);Pd(b+1672|0);Pd(b+1680|0);Pd(b+1676|0);Pd(b+1688|0);Pd(d);i=a;return}function sd(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;b=i;i=i+16|0;f=b;h=a+136|0;e=a+4|0;g=a+3480|0;m=c[h>>2]|0;while(1){$a(c[e>>2]|0,48,5368,f);k=m+212|0;j=m+220|0;l=c[j>>2]|0;m=c[m+204>>2]|0;o=c[k>>2]|0;n=0;do{p=m+(o>>>3)|0;p=(ye(d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24|0)|0)<<(o&7)>>>24;o=o+8|0;o=l>>>0>o>>>0?o:l;c[k>>2]=o;n=p+n|0}while((p|0)==255);p=0;do{q=m+(o>>>3)|0;q=(ye(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24|0)|0)<<(o&7)>>>24;r=o+8|0;o=l>>>0>r>>>0?r:l;c[k>>2]=o;p=q+p|0}while((q|0)==255);do if((c[g>>2]|0)==39)if((n|0)==256){td(a);break}else{r=c[e>>2]|0;c[f>>2]=n;$a(r,48,5384,f);r=c[j>>2]|0;q=(c[k>>2]|0)+(p<<3)|0;c[k>>2]=r>>>0>q>>>0?q:r;break}else if((n|0)==132){td(a);break}else{r=c[e>>2]|0;c[f>>2]=n;$a(r,48,5408,f);r=c[j>>2]|0;q=(c[k>>2]|0)+(p<<3)|0;c[k>>2]=r>>>0>q>>>0?q:r;break}while(0);m=c[h>>2]|0;j=c[m+212>>2]|0;if(((c[m+216>>2]|0)-j|0)<=0){a=14;break}r=(c[m+204>>2]|0)+(j>>>3)|0;if(((ye(d[r>>0]|d[r+1>>0]<<8|d[r+2>>0]<<16|d[r+3>>0]<<24|0)|0)<<(j&7)&-16777216|0)==-2147483648){a=14;break}}if((a|0)==14){i=b;return 1}return 0}function td(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;h=c[b+136>>2]|0;g=h+212|0;l=c[g>>2]|0;f=h+220|0;j=c[f>>2]|0;h=h+204|0;k=(c[h>>2]|0)+(l>>>3)|0;k=(ye(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0)<<(l&7)>>>24;l=l+8|0;c[g>>2]=j>>>0>l>>>0?l:j;j=b+7744|0;l=0;do{if((k|0)==1){m=c[f>>2]|0;n=(c[g>>2]|0)+16|0;c[g>>2]=m>>>0>n>>>0?n:m}else if((k|0)==2){n=c[f>>2]|0;m=(c[g>>2]|0)+32|0;c[g>>2]=n>>>0>m>>>0?m:n}else if(!k){a[j>>0]=1;m=0;do{p=c[g>>2]|0;o=c[f>>2]|0;n=(c[h>>2]|0)+(p>>>3)|0;n=(ye(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0)|0)<<(p&7)>>>24;p=p+8|0;c[g>>2]=o>>>0>p>>>0?p:o;a[b+(l<<4)+m+7696>>0]=n;m=m+1|0}while((m|0)!=16)}l=l+1|0}while((l|0)!=3);i=e;return}function ud(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=i;f=c[b+52>>2]|0;e=a+60|0;if((f|0)>0){if((c[e>>2]|0)==0?(f=Sd(f)|0,c[e>>2]=f,(f|0)==0):0){f=-12;i=d;return f|0}}else c[e>>2]=0;f=a+12|0;c[f>>2]=b;c[a+424>>2]=0;c[a+800>>2]=1;h=a+912|0;g=a+936|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[g>>2]=0;c[g+4>>2]=-2147483648;g=a+928|0;c[g>>2]=0;c[g+4>>2]=-2147483648;a=La[c[b+76>>2]&7](a)|0;if((a|0)>=0){h=0;i=d;return h|0}Pd(e);c[f>>2]=0;h=a;i=d;return h|0}function vd(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if(!a){i=b;return 0}e=a+12|0;f=c[e>>2]|0;if((f|0)!=0?(d=c[f+92>>2]|0,(d|0)!=0):0)La[d&7](a)|0;c[a+796>>2]=0;Pd(a+60|0);c[e>>2]=0;c[a+808>>2]=0;i=b;return 0}function wd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;if((f|0)<=0){i=h;return 0}j=(e|0)==0;k=0;do{l=d+($(k,g)|0)|0;l=Qa[b&1](a,l)|0;if(!j)c[e+(k<<2)>>2]=l;k=k+1|0}while((k|0)!=(f|0));i=h;return 0}function xd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;if((f|0)<=0){i=g;return 0}h=(e|0)==0;j=0;do{k=Oa[b&1](a,d,j,0)|0;if(!h)c[e+(j<<2)>>2]=k;j=j+1|0}while((j|0)!=(f|0));i=g;return 0}function yd(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;h=je(c[f+76>>2]|0)|0;b=h+4|0;if(!(a[b>>0]|0)){p=0;i=g;return p|0}k=f+64|0;l=h+5|0;m=f+68|0;n=h+6|0;j=0;while(1){p=($((((e[h+(j<<1)+8>>1]|0)>>>11&15)+8|0)>>>3,c[k>>2]|0)|0)+31&-32;if((j+ -1|0)>>>0<2){p=0-(0-p>>d[l>>0])|0;c[f+(j<<2)+32>>2]=p;o=0-(0-((c[m>>2]|0)+31&-32)>>d[n>>0])|0}else{c[f+(j<<2)+32>>2]=p;o=(c[m>>2]|0)+31&-32}o=Wd(($(p,o)|0)+32|0)|0;c[f+(j<<2)+304>>2]=o;if(!o){b=-1;f=8;break}c[f+(j<<2)>>2]=c[o+4>>2];j=j+1|0;if((j|0)>=(d[b>>0]|0)){b=0;f=8;break}}if((f|0)==8){i=g;return b|0}return 0}function zd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;ue(a|0,0,976)|0;e=(b|0)!=0;if(e){c[a+8>>2]=c[b+8>>2];c[a+48>>2]=c[b+12>>2]}else c[a+8>>2]=-1;c[a+100>>2]=0;c[a+104>>2]=1;c[a+888>>2]=0;c[a+892>>2]=1;c[a+896>>2]=0;c[a+900>>2]=1;c[a+476>>2]=1;c[a+816>>2]=1;c[a+820>>2]=1;c[a+220>>2]=0;c[a+224>>2]=1;c[a+136>>2]=-1;c[a+416>>2]=-1;g=a+696|0;c[g>>2]=0;c[g+4>>2]=-2147483648;if((e?(f=c[b+52>>2]|0,(f|0)!=0):0)?(g=Sd(f)|0,c[a+60>>2]=g,(g|0)==0):0){g=-12;i=d;return g|0}g=0;i=d;return g|0}function Ad(a){a=a|0;var b=0,c=0;b=i;c=Md(976)|0;if(c){if((zd(c,a)|0)<0){Od(c);c=0}}else c=0;i=b;return c|0}function Bd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+96|0;h=f+80|0;g=f;k=g+0|0;j=e+0|0;l=k+80|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0}while((k|0)<(l|0));j=a+12|0;k=c[j>>2]|0;if(!k){l=-22;i=f;return l|0}if(c[k+8>>2]|0){$a(a,16,5432,h);l=-22;i=f;return l|0}c[d>>2]=0;ge(b);h=c[j>>2]|0;if(((c[h+16>>2]&32|0)==0?(c[e+28>>2]|0)==0:0)?(c[a+808>>2]&1|0)==0:0){l=0;i=f;return l|0}g=Oa[c[h+88>>2]&1](a,b,d,g)|0;if(!(c[d>>2]|0)){ge(b);l=g;i=f;return l|0}else{l=a+424|0;c[l>>2]=(c[l>>2]|0)+1;l=g;i=f;return l|0}return 0}function Cd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function Dd(a,b){a=a|0;b=b|0;return 0}function Ed(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+16|0;f=e;g=a+8|0;do if(!(c[g>>2]|0)){j=c[a+136>>2]|0;if((j|0)<0){$a(a,16,5488,f);d=-22;break}k=b+64|0;h=b+68|0;if((c[k>>2]|0)>=1?(c[h>>2]|0)>=1:0)h=1;else{n=c[a+116>>2]|0;m=a+792|0;l=0-(0-(c[a+124>>2]|0)>>c[m>>2])|0;c[k>>2]=(n|0)>(l|0)?n:l;l=c[a+120>>2]|0;k=0-(0-(c[a+128>>2]|0)>>c[m>>2])|0;c[h>>2]=(l|0)>(k|0)?l:k;h=0}c[b+76>>2]=j;j=h;h=8}else{j=1;h=8}while(0);do if((h|0)==8){d=Ea[c[a+476>>2]&1](a,b,d)|0;if(!(c[g>>2]|j)){c[b+64>>2]=c[a+116>>2];c[b+68>>2]=c[a+120>>2]}if((d|0)<0)break;else{n=d;i=e;return n|0}}while(0);$a(a,16,5464,f);n=d;i=e;return n|0}function Fd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[b+4>>2]=a;a=Ed(a,c[b>>2]|0,d)|0;i=e;return a|0}function Gd(a,b){a=a|0;b=b|0;a=i;b=c[b>>2]|0;if(b)ge(b);i=a;return}function Hd(a){a=a|0;return}function Id(a,b,c){a=a|0;b=b|0;c=c|0;return}function Jd(a){a=a|0;var b=0,d=0;b=i;d=a+8|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+16|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+64|0;c[d>>2]=-1;c[d+4>>2]=-1;d=a+72|0;c[d>>2]=0;c[d+4>>2]=0;d=a+32|0;c[a>>2]=0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;i=b;return}function Kd(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;g=a+16|0;c[a+12>>2]=b;c[a+20>>2]=b+e;h=b+1|0;c[g>>2]=h;e=(d[b>>0]|0)<<18;c[a>>2]=e;f=b+2|0;c[g>>2]=f;e=(d[h>>0]|0)<<10|e;c[a>>2]=e;c[g>>2]=b+3;c[a>>2]=(d[f>>0]|0)<<2|e|2;c[a+4>>2]=510;return}function Ld(){var b=0,e=0,f=0,g=0,h=0,j=0;b=i;if(!(c[1384]|0))e=0;else{i=b;return}while(1)if(e){g=(e&65280|0)==0;a[5544+e>>0]=(g?8:0)-(d[7416+(g?e:e>>>8)>>0]|0);e=e+1|0;if((e|0)==512){e=0;break}else continue}else{a[5544]=9;e=1;continue}while(1){f=e<<1;g=0;do{j=a[6888+(e<<2)+g>>0]|0;h=(g<<7)+f|0;a[(h|1)+6056>>0]=j;a[h+6056>>0]=j;g=g+1|0}while((g|0)!=4);j=(d[7144+e>>0]|0)<<1;a[f+6696>>0]=j;a[f+6697>>0]=j|1;if(e){h=(d[7208+e>>0]|0)<<1;j=128-f|0;a[j+6567>>0]=h;a[j+6566>>0]=h|1;e=e+1|0;if((e|0)==64)break;else continue}else{e=128-f|0;a[e+6567>>0]=1;a[e+6566>>0]=0;e=1;continue}}g=6824|0;f=7272|0;e=g+63|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(e|0));c[1384]=1;i=b;return}function Md(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[1834]|0;if((d+ -32|0)>>>0>=a>>>0){e=ke(a)|0;if((e|0)==0&(a|0)==0)if((d|0)==32)e=0;else e=ke(1)|0}else e=0;i=b;return e|0}function Nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=$(d,b)|0;if((d|b)>>>0>65535&(d|0)!=0?((f>>>0)/(d>>>0)|0|0)!=(b|0):0){le(a);d=0;i=e;return d|0}if(((c[1834]|0)+ -32|0)>>>0>>0)b=0;else b=me(a,((f|0)==0&1)+f|0)|0;if((b|0)!=0|(f|0)==0){d=b;i=e;return d|0}le(a);d=0;i=e;return d|0}function Od(a){a=a|0;var b=0;b=i;le(a);i=b;return}function Pd(a){a=a|0;var b=0;b=i;le(c[a>>2]|0);c[a>>2]=0;i=b;return}function Qd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if(((d|0)!=0?(2147483647/(d>>>0)|0)>>>0>b>>>0:0)?(f=$(d,b)|0,((c[1834]|0)+ -32|0)>>>0>=f>>>0):0)a=me(a,((f|0)==0&1)+f|0)|0;else a=0;i=e;return a|0}function Rd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;e=Nd(c[a>>2]|0,b,d)|0;c[a>>2]=e;i=f;return((e|0)!=0|(b|0)==0|(d|0)==0?0:-12)|0}function Sd(a){a=a|0;var b=0,c=0;c=i;b=Md(a)|0;if(b)ue(b|0,0,a|0)|0;i=c;return b|0}function Td(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if((c[b>>2]|0)>>>0>d>>>0){i=e;return}f=((d*17|0)>>>4)+32|0;d=f>>>0>d>>>0?f:d;le(c[a>>2]|0);f=Md(d)|0;c[a>>2]=f;c[b>>2]=(f|0)==0?0:d;i=e;return}function Ud(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g;j=Sd(24)|0;c[h>>2]=j;if(!j){f=0;i=g;return f|0}c[j>>2]=a;c[j+4>>2]=b;c[j+12>>2]=(d|0)!=0?d:7;c[j+16>>2]=e;c[j+8>>2]=1;if(f&1){f=(c[h>>2]|0)+20|0;c[f>>2]=c[f>>2]|1}j=Sd(12)|0;if(!j){Pd(h);f=0;i=g;return f|0}else{c[j>>2]=c[h>>2];c[j+4>>2]=a;c[j+8>>2]=b;f=j;i=g;return f|0}return 0}function Vd(a,b){a=a|0;b=b|0;a=i;Od(b);i=a;return}function Wd(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=Md(a)|0;c[d>>2]=e;if(e){a=Ud(e,a,7,0,0)|0;if(!a){Pd(d);a=0}}else a=0;i=b;return a|0}function Xd(a){a=a|0;var b=0,d=0;b=i;d=Wd(a)|0;if(!d){d=0;i=b;return d|0}ue(c[d+4>>2]|0,0,a|0)|0;i=b;return d|0}function Yd(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b;d=Sd(12)|0;if(!d){e=0;i=b;return e|0}c[d+0>>2]=c[a+0>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];f=(c[a>>2]|0)+8|0;a=c[f>>2]|0;c[f>>2]=a+1;c[e>>2]=a+1;e=d;i=b;return e|0}function Zd(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b+4|0;d=b;if(!a){i=b;return}f=c[a>>2]|0;if(!f){i=b;return}f=c[f>>2]|0;c[d>>2]=f;Pd(a);a=f+8|0;f=c[a>>2]|0;c[a>>2]=f+ -1;c[e>>2]=f+ -1;if(c[e>>2]|0){i=b;return}f=c[d>>2]|0;Ja[c[f+12>>2]&15](c[f+16>>2]|0,c[f>>2]|0);Pd(d);i=b;return}function _d(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=Sd(20)|0;if(!e){b=0;i=d;return b|0}c[e+12>>2]=a;c[e+16>>2]=(b|0)!=0?b:4;c[e+4>>2]=1;b=e;i=d;return b|0}function $d(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b;if(!a){i=b;return}e=c[a>>2]|0;if(!e){i=b;return}c[a>>2]=0;f=e+4|0;a=c[f>>2]|0;c[f>>2]=a+ -1;c[d>>2]=a+ -1;if(c[d>>2]|0){i=b;return}ae(e);i=b;return}function ae(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;if(!(c[a>>2]|0)){Pd(d);i=b;return}do{f=c[a>>2]|0;c[e>>2]=f;c[c[d>>2]>>2]=c[f+16>>2];f=c[e>>2]|0;Ja[c[f+8>>2]&15](c[f+4>>2]|0,c[f>>2]|0);Pd(e);a=c[d>>2]|0}while((c[a>>2]|0)!=0);Pd(d);i=b;return}function be(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+16|0;b=d;e=d+4|0;f=c[a>>2]|0;j=0;while(1){if((f|0)==(j|0)){f=4;break}g=c[a>>2]|0;if((g|0)==(f|0))c[a>>2]=0;if(!g){f=5;break}else{j=f;f=g}}if((f|0)==4)if(!j)f=5;a:do if((f|0)==5){g=a+4|0;f=a+8|0;b:do if((c[g>>2]|0)<=(c[f>>2]|0)){$a(0,48,7344,b);c:while(1){c[b>>2]=c[g>>2];j=c[b>>2]|0;c[b>>2]=c[f>>2];if((j|0)>(c[b>>2]|0))break b;h=c[a>>2]|0;j=0;while(1){if((h|0)==(j|0))break;j=c[a>>2]|0;if((j|0)==(h|0))c[a>>2]=0;if(!j)continue c;else{k=h;h=j;j=k}}if(j)break a}}while(0);j=La[c[a+16>>2]&7](c[a+12>>2]|0)|0;c[e>>2]=j;if(!j){k=0;i=d;return k|0}h=Sd(20)|0;if(!h){Zd(e);k=0;i=d;return k|0}else{c[h>>2]=c[c[j>>2]>>2];c[h+4>>2]=c[(c[j>>2]|0)+16>>2];c[h+8>>2]=c[(c[j>>2]|0)+12>>2];c[h+12>>2]=a;c[(c[j>>2]|0)+16>>2]=h;c[(c[c[e>>2]>>2]|0)+12>>2]=8;k=c[g>>2]|0;c[g>>2]=k+1;c[b>>2]=k+1;k=c[f>>2]|0;c[f>>2]=k+1;c[b>>2]=k+1;k=c[e>>2]|0;i=d;return k|0}}while(0);e=j+16|0;ce(c[e>>2]|0);c[e>>2]=0;e=Ud(c[j>>2]|0,c[a+12>>2]|0,8,j,0)|0;if(!e){ce(j);k=0;i=d;return k|0}else{j=a+4|0;k=c[j>>2]|0;c[j>>2]=k+1;c[b>>2]=k+1;k=e;i=d;return k|0}return 0}function ce(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;d=i;if(!a){i=d;return}b=c[a+12>>2]|0;f=a+16|0;if(!(c[f>>2]|0))e=a;else do{e=c[f>>2]|0;f=e+16|0}while((c[f>>2]|0)!=0);f=c[b>>2]|0;if(!f)c[b>>2]=a;if(!f){i=d;return}do{f=c[b>>2]|0;g=0;while(1){if((f|0)==(g|0))break;g=c[b>>2]|0;if((g|0)==(f|0))c[b>>2]=0;if(!g){g=0;break}else{h=f;f=g;g=h}}f=e+16|0;c[f>>2]=g;if(c[f>>2]|0)do{e=c[f>>2]|0;f=e+16|0}while((c[f>>2]|0)!=0);f=c[b>>2]|0;if(!f)c[b>>2]=a}while((f|0)!=0);i=d;return}function de(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;b=i;i=i+16|0;e=b;d=c[a+12>>2]|0;ce(a);f=d+4|0;a=c[f>>2]|0;c[f>>2]=a+ -1;c[e>>2]=a+ -1;if(c[e>>2]|0){i=b;return}ae(d);i=b;return}function ee(){var a=0,b=0,d=0;a=i;b=Sd(400)|0;if(!b){b=0;i=a;return b|0}ue(b|0,0,400)|0;d=b+136|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=b+144|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=b+128|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=b+360|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=b+376|0;c[d>>2]=0;c[d+4>>2]=0;d=b+368|0;c[d>>2]=-1;c[d+4>>2]=-1;c[b+392>>2]=-1;c[b+80>>2]=1;c[b+120>>2]=0;c[b+124>>2]=1;c[b+76>>2]=-1;c[b+344>>2]=2;c[b+348>>2]=2;c[b+352>>2]=2;c[b+340>>2]=0;c[b+356>>2]=0;i=a;return b|0}function fe(a){a=a|0;var b=0,d=0;b=i;if((a|0)!=0?(d=c[a>>2]|0,(d|0)!=0):0){ge(d);Pd(a)}i=b;return}function ge(a){a=a|0;var b=0,d=0;b=i;Zd(a+304|0);Zd(a+308|0);Zd(a+312|0);Zd(a+316|0);Zd(a+320|0);Zd(a+324|0);Zd(a+328|0);Zd(a+332|0);ue(a|0,0,400)|0;d=a+136|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+144|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+128|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+360|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+376|0;c[d>>2]=0;c[d+4>>2]=0;d=a+368|0;c[d>>2]=-1;c[d+4>>2]=-1;c[a+392>>2]=-1;c[a+80>>2]=1;c[a+120>>2]=0;c[a+124>>2]=1;c[a+76>>2]=-1;c[a+344>>2]=2;c[a+348>>2]=2;c[a+352>>2]=2;c[a+340>>2]=0;c[a+356>>2]=0;i=b;return}function he(a,b){a=a|0;b=b|0;var d=0;d=i;we(a|0,b|0,400)|0;ue(b|0,0,400)|0;a=b+136|0;c[a>>2]=0;c[a+4>>2]=-2147483648;a=b+144|0;c[a>>2]=0;c[a+4>>2]=-2147483648;a=b+128|0;c[a>>2]=0;c[a+4>>2]=-2147483648;a=b+360|0;c[a>>2]=0;c[a+4>>2]=-2147483648;a=b+376|0;c[a>>2]=0;c[a+4>>2]=0;a=b+368|0;c[a>>2]=-1;c[a+4>>2]=-1;c[b+392>>2]=-1;c[b+80>>2]=1;c[b+120>>2]=0;c[b+124>>2]=1;c[b+76>>2]=-1;c[b+344>>2]=2;c[b+348>>2]=2;c[b+352>>2]=2;c[b+340>>2]=0;c[b+356>>2]=0;i=d;return}function ie(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;c[a+76>>2]=c[b+76>>2];c[a+64>>2]=c[b+64>>2];c[a+68>>2]=c[b+68>>2];c[a+388>>2]=c[b+388>>2];j=b+296|0;h=c[j+4>>2]|0;f=a+296|0;c[f>>2]=c[j>>2];c[f+4>>2]=h;c[a+72>>2]=c[b+72>>2];f=c[b+304>>2]|0;if(!f)ua();else{e=f;g=0}while(1){if((e|0)!=0?(j=Yd(e)|0,c[a+(g<<2)+304>>2]=j,(j|0)==0):0){e=5;break}g=g+1|0;if(g>>>0>=8){e=8;break}e=c[b+(g<<2)+304>>2]|0}if((e|0)==5){ge(a);j=-12;i=d;return j|0}else if((e|0)==8){c[a+0>>2]=c[b+0>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];j=a+32|0;h=b+32|0;c[j+0>>2]=c[h+0>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];j=0;i=d;return j|0}return 0}function je(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;e=0;while(1){f=e+1|0;if((c[7672+(e*24|0)>>2]|0)==(a|0))break;if(f>>>0<4)e=f;else{e=0;b=5;break}}if((b|0)==5){i=d;return e|0}f=7676+(e*24|0)|0;i=d;return f|0} +function oc(e,f,g,h,j,k,l,m,n,o,p,q,r){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;s=i;i=i+32|0;D=s;w=s+24|0;t=s+16|0;z=e+136|0;v=c[z>>2]|0;M=c[q>>2]|0;c[w>>2]=M;O=c[q+4>>2]|0;A=w+4|0;c[A>>2]=O;N=c[r>>2]|0;c[t>>2]=N;q=c[r+4>>2]|0;x=t+4|0;c[x>>2]=q;y=a[v+31254>>0]|0;do if(y<<24>>24){if((o|0)==1){c[v+288>>2]=d[v+p+31268>>0];if((c[(c[e+180>>2]|0)+4>>2]|0)==3){c[v+292>>2]=d[v+p+31277>>0];c[v+296>>2]=d[v+p+31281>>0];break}else{c[v+292>>2]=d[v+31277>>0];c[v+296>>2]=d[v+31281>>0];break}}}else{c[v+288>>2]=d[v+31268>>0];c[v+292>>2]=d[v+31277>>0];c[v+296>>2]=d[v+31281>>0]}while(0);r=e+180|0;G=c[r>>2]|0;B=(c[G+13076>>2]|0)>>>0>>0;if(((!B?(c[G+13072>>2]|0)>>>0>>0:0)?(d[v+31255>>0]|0)>(o|0):0)?!(y<<24>>24!=0&(o|0)==0):0)y=(Qb(e,n)|0)&255;else{if((c[G+13088>>2]|0)==0?(c[v+31244>>2]|0)==0:0)G=(o|0)==0&(c[v+31248>>2]|0)!=0;else G=0;if(B)y=1;else y=(y<<24>>24!=0&(o|0)==0|G)&1}B=(n|0)>2;G=c[(c[r>>2]|0)+4>>2]|0;if(B)if(!G)L=q;else F=20;else if((G|0)==3)F=20;else L=q;do if((F|0)==20){G=(o|0)==0;if(!((M|0)==0&(G^1))){M=Rb(e,o)|0;c[w>>2]=M;if((c[(c[r>>2]|0)+4>>2]|0)==2?y<<24>>24==0|(n|0)==3:0){O=Rb(e,o)|0;c[A>>2]=O}if(!G)F=25}else{M=0;F=25}if((F|0)==25)if(!N){N=0;L=q;break}N=Rb(e,o)|0;c[t>>2]=N;if((c[(c[r>>2]|0)+4>>2]|0)==2?y<<24>>24==0|(n|0)==3:0){L=Rb(e,o)|0;c[x>>2]=L}else L=q}while(0);if(!(y<<24>>24)){A=c[r>>2]|0;x=c[A+13072>>2]|0;q=1<>2]|0;if(((o|0)==0?(c[v+31244>>2]|0)!=1:0)&(M|0)==0&(N|0)==0)if((c[A+4>>2]|0)==2?(O|L|0)!=0:0)F=37;else o=1;else F=37;if((F|0)==37){o=Sb(e,o)|0;A=c[r>>2]|0}G=c[z>>2]|0;A=n-(c[A+13172>>2]|0)|0;z=G+31244|0;if((c[z>>2]|0)==1){K=1<>2]&15](e,f,g,0)}K=(o|0)!=0;M=(M|N|0)==0;do if(K)if(M)F=46;else{H=0;F=48}else if(M){M=c[r>>2]|0;N=c[M+4>>2]|0;if((N|0)==2){if(O){F=46;break}if(L){O=0;F=46;break}}if(!((c[z>>2]|0)!=1|(N|0)==0)){if(B|(N|0)==3){t=1<<(c[M+13172>>2]|0)+A;h=1<<(c[M+13184>>2]|0)+A;od(e,f,g,t,h);w=e+(A+ -2<<2)+5832|0;Sa[c[w>>2]&15](e,f,g,1);Sa[c[w>>2]&15](e,f,g,2);if((c[(c[r>>2]|0)+4>>2]|0)!=2)break;O=(1<>2]&15](e,f,O,1);Sa[c[w>>2]&15](e,f,O,2);break}if((p|0)==3?(J=1<>2]|0)+n,od(e,h,j,J,I),H=e+(n+ -2<<2)+5832|0,Sa[c[H>>2]&15](e,h,j,1),Sa[c[H>>2]&15](e,h,j,2),(c[(c[r>>2]|0)+4>>2]|0)==2):0){O=(1<>2]&15](e,h,O,1);Sa[c[H>>2]&15](e,h,O,2)}}}else{H=0;F=48}while(0);if((F|0)==46)if((c[(c[r>>2]|0)+4>>2]|0)==2){H=(O|L|0)==0;F=48}else{H=1;F=48}a:do if((F|0)==48){F=e+184|0;do if((a[(c[F>>2]|0)+22>>0]|0)!=0?(E=G+300|0,(a[E>>0]|0)==0):0){O=Eb(e)|0;J=G+280|0;c[J>>2]=O;if(O){O=(Fb(e)|0)==1;I=c[J>>2]|0;if(O){I=0-I|0;c[J>>2]=I}}else I=0;a[E>>0]=1;E=(c[(c[r>>2]|0)+13192>>2]|0)/2|0;J=-26-E|0;E=E+25|0;if(!((I|0)<(J|0)|(I|0)>(E|0))){Xb(e,k,l,m);break}O=c[e+4>>2]|0;c[D>>2]=I;c[D+4>>2]=J;c[D+8>>2]=E;$a(O,16,1944,D);O=-1094995529;i=s;return O|0}while(0);if((!((a[e+3048>>0]|0)==0|H)?(a[G+31256>>0]|0)==0:0)?(C=G+301|0,(a[C>>0]|0)==0):0){if(!(Gb(e)|0)){a[G+302>>0]=0;a[G+303>>0]=0}else{m=c[F>>2]|0;if(!(a[m+1633>>0]|0))l=0;else{l=Hb(e)|0;$a(c[e+4>>2]|0,16,2008,D);m=c[F>>2]|0}a[G+302>>0]=a[m+l+1634>>0]|0;a[G+303>>0]=a[(c[F>>2]|0)+l+1639>>0]|0}a[C>>0]=1}if((c[z>>2]|0)==1&(n|0)<4){m=c[G+288>>2]|0;if((m+ -6|0)>>>0<9)k=2;else k=(m+ -22|0)>>>0<9&1;m=c[G+292>>2]|0;if((m+ -6|0)>>>0<9)m=2;else m=(m+ -22|0)>>>0<9&1}else{k=0;m=0}l=G+304|0;a[l>>0]=0;if(K)Vb(e,f,g,n,k,0);k=c[r>>2]|0;C=c[k+4>>2]|0;if(C){if(!(B|(C|0)==3)){if((p|0)!=3)break;A=1<>2]|0)+n;l=e+(n+ -2<<2)+5832|0;k=0;do{if((c[z>>2]|0)==1){O=(k<>2]&15](e,h,O,1)}if(c[w+(k<<2)>>2]|0)Vb(e,h,(k<>2]|0)+4>>2]|0)==2?2:1)|0));w=0;while(1){if((c[z>>2]|0)==1){O=(w<>2]&15](e,h,O,2)}if(c[t+(w<<2)>>2]|0)Vb(e,h,(w<=(((c[(c[r>>2]|0)+4>>2]|0)==2?2:1)|0))break a}}h=1<<(c[k+13172>>2]|0)+A;j=1<<(c[k+13184>>2]|0)+A;do if((a[(c[F>>2]|0)+1630>>0]|0)==0|K^1)a[l>>0]=0;else{if(c[z>>2]|0){O=(c[G+296>>2]|0)==4;a[l>>0]=O&1;if(!O)break}else a[l>>0]=1;pc(e,0)}while(0);B=A+ -2|0;k=e+(B<<2)+5832|0;p=e+160|0;D=G+320|0;F=G+11680|0;C=1<0;B=e+(B<<2)+5888|0;G=G+284|0;K=0;do{if((c[z>>2]|0)==1){O=(K<>2]&15](e,f,O,1)}do if(!(c[w+(K<<2)>>2]|0)){if(!(a[l>>0]|0))break;O=c[p>>2]|0;I=c[O+36>>2]|0;H=c[r>>2]|0;J=$(g>>c[H+13184>>2],I)|0;J=(c[O+4>>2]|0)+(J+(f>>c[H+13172>>2]<>2]))|0;if(E){K=0;do{b[F+(K<<1)>>1]=($(b[D+(K<<1)>>1]|0,c[G>>2]|0)|0)>>>3;K=K+1|0}while((K|0)!=(C|0));K=C}else K=0;Sa[c[B>>2]&15](J,F,I,c[H+52>>2]|0)}else Vb(e,f,(K<>2]|0)+4>>2]|0)==2?2:1)|0));if(!(a[l>>0]|0))J=0;else{pc(e,1);J=0}do{if((c[z>>2]|0)==1){O=(J<>2]&15](e,f,O,2)}do if(!(c[t+(J<<2)>>2]|0)){if(!(a[l>>0]|0))break;O=c[p>>2]|0;w=c[O+40>>2]|0;H=c[r>>2]|0;I=$(g>>c[H+13188>>2],w)|0;I=(c[O+8>>2]|0)+(I+(f>>c[H+13176>>2]<>2]))|0;if(E){J=0;do{b[F+(J<<1)>>1]=($(b[D+(J<<1)>>1]|0,c[G>>2]|0)|0)>>>3;J=J+1|0}while((J|0)!=(C|0));J=C}else J=0;Sa[c[B>>2]&15](I,F,w,c[H+52>>2]|0)}else Vb(e,f,(J<>2]|0)+4>>2]|0)==2?2:1)|0))}}while(0);if((o|0)!=0?(u=1<0):0){t=e+7620|0;r=0;do{w=$(r+g>>x,y)|0;o=0;do{a[(c[t>>2]|0)+((o+f>>x)+w)>>0]=1;o=o+q|0}while((o|0)<(u|0));r=r+q|0}while((r|0)<(u|0))}if(((a[e+3029>>0]|0)==0?(Yb(e,f,g,n),(a[(c[e+184>>2]|0)+40>>0]|0)!=0):0)?(a[v+31256>>0]|0)!=0:0)nc(e,f,g,n)}else{v=n+ -1|0;u=1<>2]|0;f=Tb(a,b)|0;if(!f){c[e+284>>2]=0;i=d;return}else{c[e+284>>2]=1-((Ub(a,b)|0)<<1)<>2]|0;f=a+8|0;g=c[f>>2]|0;a=c[a+16>>2]|0;l=e+(g>>>3)|0;l=(ze(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0)|0)<<(g&7);h=g+16|0;h=a>>>0>h>>>0?h:a;j=e+(h>>>3)|0;h=(ze(d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24|0)|0)<<(h&7)>>>16|l&-65536;j=h>>>0>65535;h=j?l>>>16:h;j=j?16:0;if(h&65280){j=j|8;h=h>>>8}h=(d[7416+h>>0]|0)+j|0;j=31-h|0;l=0-g|0;k=a-g|0;if((j|0)>=(l|0))l=(k|0)<(j|0)?k:j;g=l+g|0;c[f>>2]=g;l=j+1|0;if(!l){l=0;l=l+ -1|0;i=b;return l|0}k=e+(g>>>3)|0;k=(ze(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0)<<(g&7);if((l|0)<26){l=g+l|0;c[f>>2]=a>>>0>l>>>0?l:a;l=k>>>h;l=l+ -1|0;i=b;return l|0}else{h=g+16|0;h=a>>>0>h>>>0?h:a;c[f>>2]=h;l=j+ -15|0;g=e+(h>>>3)|0;j=(ze(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0)<<(h&7)>>>(47-j|0);h=h+l|0;c[f>>2]=a>>>0>h>>>0?h:a;l=j|k>>>16<>2]=1;c[a+4>>2]=2;c[a+8>>2]=3;c[a+12>>2]=4;c[a+16>>2]=5;c[a+20>>2]=6;c[a+24>>2]=7;c[a+28>>2]=8;c[a+32>>2]=1;c[a+36>>2]=1;c[a+40>>2]=2;c[a+44>>2]=3;c[a+48>>2]=4;return}function sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Hc(a,b,c,2,d);i=e;return}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Hc(a,b,c,3,d);i=e;return}function uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Hc(a,b,c,4,d);i=e;return}function vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Hc(a,b,c,5,d);i=e;return}function wc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Gc(a,b,c,d,2);i=e;return}function xc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Gc(a,b,c,d,3);i=e;return}function yc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Gc(a,b,c,d,4);i=e;return}function zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;Gc(a,b,c,d,5);i=e;return}function Ac(c,d,f,g,h,j){c=c|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;k=1<0;if(m){n=k;o=0;do{n=(e[f+(o<<1)>>1]|0)+n+(e[d+(o<<1)>>1]|0)|0;o=o+1|0}while((o|0)!=(k|0));n=n>>h+1;h=Ge(n|0,((n|0)<0)<<31>>31|0,65537,65537)|0;o=D;if(m){m=0;do{p=$(m,g)|0;q=0;do{r=c+(q+p<<1)|0;s=r;a[s>>0]=h;a[s+1>>0]=h>>8;a[s+2>>0]=h>>16;a[s+3>>0]=h>>24;r=r+4|0;a[r>>0]=o;a[r+1>>0]=o>>8;a[r+2>>0]=o>>16;a[r+3>>0]=o>>24;q=q+4|0}while((q|0)<(k|0));m=m+1|0}while((m|0)!=(k|0))}}else n=k>>h+1;if(!((j|0)==0&(k|0)<32)){i=l;return}b[c>>1]=((n<<1)+2+(e[f>>1]|0)+(e[d>>1]|0)|0)>>>2;j=(k|0)>1;if(!j){i=l;return}m=(n*3|0)+2|0;h=1;do{b[c+(h<<1)>>1]=(m+(e[d+(h<<1)>>1]|0)|0)>>>2;h=h+1|0}while((h|0)!=(k|0));if(!j){i=l;return}d=(n*3|0)+2|0;j=1;do{b[c+(($(j,g)|0)<<1)>>1]=(d+(e[f+(j<<1)>>1]|0)|0)>>>2;j=j+1|0}while((j|0)!=(k|0));i=l;return}function Bc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Fc(a,b,c,d,e,f,4,g,h);i=j;return}function Cc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Fc(a,b,c,d,e,f,8,g,h);i=j;return}function Dc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Fc(a,b,c,d,e,f,16,g,h);i=j;return}function Ec(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0;j=i;Fc(a,b,c,d,e,f,32,g,h);i=j;return}function Fc(f,g,h,j,k,l,m,n,o){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;p=i;i=i+208|0;s=p;q=c[2576+(l+ -2<<2)>>2]|0;r=s+(m<<1)|0;t=($(q,m)|0)>>5;if((l|0)>17){v=g+ -2|0;u=l+ -11|0;if(u>>>0<15&(t|0)<-1){if((m|0)>=0){v=0;do{x=g+(v+ -1<<1)|0;z=x;z=d[z>>0]|d[z+1>>0]<<8|d[z+2>>0]<<16|d[z+3>>0]<<24;x=x+4|0;x=d[x>>0]|d[x+1>>0]<<8|d[x+2>>0]<<16|d[x+3>>0]<<24;y=s+(v+m<<1)|0;w=y;b[w>>1]=z;b[w+2>>1]=z>>>16;y=y+4|0;b[y>>1]=x;b[y+2>>1]=x>>>16;v=v+4|0}while((v|0)<=(m|0))}if((t|0)<0){u=c[2712+(u<<2)>>2]|0;do{b[s+(t+m<<1)>>1]=b[h+((($(u,t)|0)+128>>8)+ -1<<1)>>1]|0;t=t+1|0}while((t|0)!=0)}}else r=v;s=(m|0)>0;if(s){t=0;do{x=t;t=t+1|0;w=$(t,q)|0;u=w>>5;w=w&31;if(!w){u=u+1|0;w=$(x,j)|0;v=0;do{y=r+(u+v<<1)|0;A=y;A=d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24;y=y+4|0;y=d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24;z=f+(v+w<<1)|0;x=z;a[x>>0]=A;a[x+1>>0]=A>>8;a[x+2>>0]=A>>16;a[x+3>>0]=A>>24;z=z+4|0;a[z>>0]=y;a[z+1>>0]=y>>8;a[z+2>>0]=y>>16;a[z+3>>0]=y>>24;v=v+4|0}while((v|0)<(m|0))}else{v=32-w|0;x=$(x,j)|0;y=0;do{A=y+u|0;z=$(e[r+(A+1<<1)>>1]|0,v)|0;b[f+(y+x<<1)>>1]=(z+16+($(e[r+(A+2<<1)>>1]|0,w)|0)|0)>>>5;A=y|1;z=A+u|0;B=$(e[r+(z+1<<1)>>1]|0,v)|0;b[f+(A+x<<1)>>1]=(B+16+($(e[r+(z+2<<1)>>1]|0,w)|0)|0)>>>5;A=y|2;z=A+u|0;B=$(e[r+(z+1<<1)>>1]|0,v)|0;b[f+(A+x<<1)>>1]=(B+16+($(e[r+(z+2<<1)>>1]|0,w)|0)|0)>>>5;A=y|3;z=A+u|0;B=$(e[r+(z+1<<1)>>1]|0,v)|0;b[f+(A+x<<1)>>1]=(B+16+($(e[r+(z+2<<1)>>1]|0,w)|0)|0)>>>5;y=y+4|0}while((y|0)<(m|0))}}while((t|0)!=(m|0))}if(!((l|0)==26&(k|0)==0&(m|0)<32&(n|0)==0&s)){i=p;return}k=h+ -2|0;l=1<>1]|0)-(e[k>>1]|0)>>1)+(e[g>>1]|0)|0;if(q&n)q=0-q>>31&l;b[f+(($(o,j)|0)<<1)>>1]=q;o=o+1|0}while((o|0)!=(m|0));i=p;return}v=h+ -2|0;u=l+ -11|0;if(u>>>0<15&(t|0)<-1){if((m|0)>=0){v=0;do{A=h+(v+ -1<<1)|0;y=A;y=d[y>>0]|d[y+1>>0]<<8|d[y+2>>0]<<16|d[y+3>>0]<<24;A=A+4|0;A=d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24;B=s+(v+m<<1)|0;z=B;b[z>>1]=y;b[z+2>>1]=y>>>16;B=B+4|0;b[B>>1]=A;b[B+2>>1]=A>>>16;v=v+4|0}while((v|0)<=(m|0))}if((t|0)<0){u=c[2712+(u<<2)>>2]|0;do{b[s+(t+m<<1)>>1]=b[g+((($(u,t)|0)+128>>8)+ -1<<1)>>1]|0;t=t+1|0}while((t|0)!=0)}}else r=v;s=(m|0)>0;if(s){u=0;do{t=u;u=u+1|0;x=$(u,q)|0;y=x>>5;x=x&31;if(!x){w=y+1|0;v=0;do{b[f+(($(v,j)|0)+t<<1)>>1]=b[r+(w+v<<1)>>1]|0;v=v+1|0}while((v|0)!=(m|0))}else{w=32-x|0;v=0;do{B=v+y|0;A=$(e[r+(B+1<<1)>>1]|0,w)|0;b[f+(($(v,j)|0)+t<<1)>>1]=(A+16+($(e[r+(B+2<<1)>>1]|0,x)|0)|0)>>>5;v=v+1|0}while((v|0)!=(m|0))}}while((u|0)!=(m|0))}if(!((l|0)==10&(k|0)==0&(m|0)<32&(n|0)==0&s)){i=p;return}j=g+ -2|0;k=1<>1]|0)-(e[j>>1]|0)>>1)+(e[h>>1]|0)|0;if(n&o)n=0-n>>31&k;b[f+(l<<1)>>1]=n;n=l|1;q=((e[g+(n<<1)>>1]|0)-(e[j>>1]|0)>>1)+(e[h>>1]|0)|0;if(q&o)q=0-q>>31&k;b[f+(n<<1)>>1]=q;n=l|2;q=((e[g+(n<<1)>>1]|0)-(e[j>>1]|0)>>1)+(e[h>>1]|0)|0;if(q&o)q=0-q>>31&k;b[f+(n<<1)>>1]=q;n=l|3;q=((e[g+(n<<1)>>1]|0)-(e[j>>1]|0)>>1)+(e[h>>1]|0)|0;if(q&o)q=0-q>>31&k;b[f+(n<<1)>>1]=q;l=l+4|0}while((l|0)<(m|0));i=p;return}function Gc(a,c,d,f,g){a=a|0;c=c|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;m=i;j=1<>1]|0,l-r|0)|0;s=r;r=r+1|0;u=$(e[h>>1]|0,r)|0;t=$(e[c+(s<<1)>>1]|0,p)|0;b[a+(s+q<<1)>>1]=v+j+u+t+($(e[k>>1]|0,n)|0)>>g}while((r|0)!=(j|0))}while((n|0)!=(j|0));i=m;return}function Hc(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;k=i;i=i+528|0;t=k+390|0;y=k+260|0;v=k+130|0;u=k;p=c[d+136>>2]|0;q=c[d+180>>2]|0;m=c[q+52>>2]|0;P=c[q+(j<<2)+13168>>2]|0;Q=c[q+(j<<2)+13180>>2]|0;G=1<>2]|0;pa=G<>2]|0;ea=f>>da&fa;R=g>>da&fa;Z=fa+2|0;ha=($(R,Z)|0)+ea|0;Y=c[d+184>>2]|0;ga=c[Y+1684>>2]|0;ha=c[ga+(ha<<2)>>2]|0;ca=c[d+160>>2]|0;o=(c[ca+(j<<2)+32>>2]|0)>>>1;ca=c[ca+(j<<2)>>2]|0;ia=($(o,g>>Q)|0)+(f>>P)|0;l=ca+(ia<<1)|0;O=c[q+13156>>2]|0;F=(j|0)==0;n=c[(F?p+288|0:p+292|0)>>2]|0;s=t+2|0;x=v+2|0;w=y+2|0;r=u+2|0;if(!(c[p+31288>>2]|0))ra=0;else ra=(ha|0)>(c[ga+(ea+ -1+($(fa&R+(pa>>da),Z)|0)<<2)>>2]|0);na=ra&1;U=c[p+31292>>2]|0;T=c[p+31300>>2]|0;S=c[p+31296>>2]|0;if(!(c[p+31304>>2]|0))Z=0;else Z=(ha|0)>(c[ga+(($(Z,R+ -1|0)|0)+(fa&ea+(oa>>da))<<2)>>2]|0);R=Z&1;fa=(pa<<1)+g|0;ga=q+13124|0;ma=c[ga>>2]|0;da=pa+g|0;fa=((fa|0)>(ma|0)?ma:fa)-da>>Q;ma=(oa<<1)+f|0;ha=q+13120|0;ja=c[ha>>2]|0;ea=oa+f|0;ma=((ma|0)>(ja|0)?ja:ma)-ea>>P;ja=Y+20|0;if((a[ja>>0]|0)==1){Y=c[q+13084>>2]|0;qa=pa>>Y;oa=oa>>Y;sa=(1<>Y;va=da>>Y;wa=(c[q+13160>>2]|0)-va|0;wa=(qa|0)>(wa|0)?wa:qa;if((wa|0)>0){ta=c[(c[d+3488>>2]|0)+16>>2]|0;na=0;ua=0;do{na=(a[ta+(($(ua+va|0,O)|0)+ra)>>0]|0)==0|na;ua=ua+2|0}while((ua|0)<(wa|0))}else na=0}if(!((U|0)!=1|sa)){ra=f+ -1>>Y;sa=g>>Y;wa=(c[q+13160>>2]|0)-sa|0;qa=(qa|0)>(wa|0)?wa:qa;if((qa|0)>0){ta=c[(c[d+3488>>2]|0)+16>>2]|0;U=0;ua=0;do{U=(a[ta+(($(ua+sa|0,O)|0)+ra)>>0]|0)==0|U;ua=ua+2|0}while((ua|0)<(qa|0))}else U=0}if((T|0)==1){T=($(g+ -1>>Y,O)|0)+(f+ -1>>Y)|0;T=(a[(c[(c[d+3488>>2]|0)+16>>2]|0)+T>>0]|0)==0&1}pa=(pa|0)!=0;if(!((S|0)!=1|pa)){S=f>>Y;qa=O-S|0;qa=(oa|0)>(qa|0)?qa:oa;if((qa|0)>0){sa=($(g+ -1>>Y,O)|0)+S|0;ra=c[(c[d+3488>>2]|0)+16>>2]|0;S=0;ta=0;do{S=(a[ra+(sa+ta)>>0]|0)==0|S;ta=ta+2|0}while((ta|0)<(qa|0))}else S=0}if(!(pa|Z^1)){R=ea>>Y;Z=O-R|0;Z=(oa|0)>(Z|0)?Z:oa;if((Z|0)>0){oa=($(g+ -1>>Y,O)|0)+R|0;Y=c[(c[d+3488>>2]|0)+16>>2]|0;R=0;pa=0;do{R=(a[Y+(oa+pa)>>0]|0)==0|R;pa=pa+2|0}while((pa|0)<(Z|0))}else R=0}Y=s+0|0;Z=Y+128|0;do{b[Y>>1]=32896;Y=Y+2|0}while((Y|0)<(Z|0));Y=x+0|0;Z=Y+128|0;do{b[Y>>1]=32896;Y=Y+2|0}while((Y|0)<(Z|0));b[v>>1]=128;oa=R}else oa=R;Z=(T|0)!=0;if(Z){wa=b[ca+(ia+~o<<1)>>1]|0;b[t>>1]=wa;b[v>>1]=wa}Y=(S|0)!=0;if(Y)xe(x|0,ca+(ia-o<<1)|0,G<<1|0)|0;R=(oa|0)!=0;if(R?(la=G+1|0,xe(v+(la<<1)|0,ca+(G-o+ia<<1)|0,G<<1|0)|0,_=Ge(e[ca+(G+ -1-o+ia+ma<<1)>>1]|0,0,65537,65537)|0,aa=D,ka=G-ma|0,(ka|0)>0):0){la=ma+la|0;ma=0;do{wa=v+(la+ma<<1)|0;va=wa;b[va>>1]=_;b[va+2>>1]=_>>>16;wa=wa+4|0;b[wa>>1]=aa;b[wa+2>>1]=aa>>>16;ma=ma+4|0}while((ma|0)<(ka|0))}_=(U|0)!=0;if(_&(G|0)>0){aa=ia+ -1|0;ka=0;do{wa=ka;ka=ka+1|0;b[t+(ka<<1)>>1]=b[ca+(aa+($(wa,o)|0)<<1)>>1]|0}while((ka|0)!=(G|0))}aa=(na|0)!=0;if(aa){ka=fa+G|0;la=ia+ -1|0;if((fa|0)>0){ia=G;do{wa=ia;ia=ia+1|0;b[t+(ia<<1)>>1]=b[ca+(la+($(wa,o)|0)<<1)>>1]|0}while((ia|0)<(ka|0))}ia=Ge(e[ca+(la+($(ka+ -1|0,o)|0)<<1)>>1]|0,0,65537,65537)|0;ka=D;ca=G-fa|0;if((ca|0)>0){la=G+1+fa|0;ma=0;do{wa=t+(la+ma<<1)|0;va=wa;b[va>>1]=ia;b[va+2>>1]=ia>>>16;wa=wa+4|0;b[wa>>1]=ka;b[wa+2>>1]=ka>>>16;ma=ma+4|0}while((ma|0)<(ca|0))}}do if((a[ja>>0]|0)==1?(wa=na|U,X=(wa|0)!=0,wa=wa|T,ba=(wa|0)==0,(S|oa|wa|0)!=0):0){ia=G<<1;ha=c[ha>>2]|0;if(((ia<>P;ga=c[ga>>2]|0;if(((ia<=(ga|0))ia=ga-g>>Q;fa=(aa?fa:0)+G|0;if(!R)if((ea|0)<(ha|0))ca=G;else ca=ha-f>>P;if(!aa)if((da|0)<(ga|0))da=G;else da=ga-g>>Q;else da=ia;do if(ba){do if((ca|0)>0){ha=c[q+13084>>2]|0;fa=$((-1<>ha,O)|0;ga=c[(c[d+3488>>2]|0)+16>>2]|0;ba=0;while(1){ea=ba+1|0;if(!(a[ga+(fa+((ba<>ha))>>0]|0))break;if((ea|0)<(ca|0))ba=ea;else{ba=ea;break}}if((ba|0)>0)if((f|0)>0){if((ba|0)<=-1)break;fa=(-1<>2]|0;ea=c[(c[d+3488>>2]|0)+16>>2]|0;do{ha=ba;ba=ba+ -1|0;if(a[ea+(($(fa>>ga,O)|0)+((ba<>ga))>>0]|0)b[v+(ha<<1)>>1]=b[v+(ha+1<<1)>>1]|0}while((ha|0)>0)}else{fa=(-1<>2]|0;ea=c[(c[d+3488>>2]|0)+16>>2]|0;do{ha=ba;ba=ba+ -1|0;if(a[ea+(($(fa>>ga,O)|0)+((ba<>ga))>>0]|0)b[v+(ha<<1)>>1]=b[v+(ha+1<<1)>>1]|0}while((ba|0)>0);b[v>>1]=b[x>>1]|0;break}}while(0);ea=b[v>>1]|0;b[t>>1]=ea;ba=t}else{ga=(-1<>2]|0;if((wa|0)<=0){N=59;break}ha=(fa<>ba,O)|0)+(ga>>ba)|0;ea=c[(c[ia>>2]|0)+16>>2]|0}while((a[ea+wa>>0]|0)!=0);if((N|0)==59){ea=c[(c[ia>>2]|0)+16>>2]|0;ha=(fa<>ba,O)|0)+(ga>>ba))>>0]|0)){ea=b[v>>1]|0;ba=t;break}if((ca|0)>0){fa=$((-1<>ba,O)|0;ha=0;while(1){ga=ha+1|0;if(!(a[ea+(fa+((ha<>ba))>>0]|0))break;if((ga|0)<(ca|0))ha=ga;else{ha=ga;break}}if((ha|0)>-1)N=68}else{ha=0;N=68}if((N|0)==68){fa=(-1<>ba,O)|0)+((ha<>ba))>>0]|0)b[v+(ga<<1)>>1]=b[v+(ga+1<<1)>>1]|0}while((ga|0)>0)}ea=b[v>>1]|0;b[t>>1]=ea;ba=t}while(0);b[ba>>1]=ea;if(X&(da|0)>0){ga=Ge(ea&65535|0,0,65537,65537)|0;X=(-1<>2]|0;ha=D;fa=0;do{wa=c[q+13084>>2]|0;wa=($((fa<>wa,O)|0)+(X>>wa)|0;if(!(a[(c[ea+16>>2]|0)+wa>>0]|0)){ga=Ge(e[t+((fa|3)+1<<1)>>1]|0,0,65537,65537)|0;ha=D}else{wa=t+((fa|1)<<1)|0;va=wa;b[va>>1]=ga;b[va+2>>1]=ga>>>16;wa=wa+4|0;b[wa>>1]=ha;b[wa+2>>1]=ha>>>16}fa=fa+4|0}while((fa|0)<(da|0))}if(!_?(V=Ge(e[ba>>1]|0,0,65537,65537)|0,W=D,(G|0)>0):0){X=0;do{wa=t+((X|1)<<1)|0;va=wa;b[va>>1]=V;b[va+2>>1]=V>>>16;wa=wa+4|0;b[wa>>1]=W;b[wa+2>>1]=W>>>16;X=X+4|0}while((X|0)<(G|0))}do if(!aa){V=Ge(e[t+(G<<1)>>1]|0,0,65537,65537)|0;W=D;if((G|0)<=0)break;X=G+1|0;ea=0;do{wa=t+(X+ea<<1)|0;va=wa;b[va>>1]=V;b[va+2>>1]=V>>>16;wa=wa+4|0;b[wa>>1]=W;b[wa+2>>1]=W>>>16;ea=ea+4|0}while((ea|0)<(G|0))}while(0);X=(f|0)==0;V=(g|0)==0;W=(da|0)>0;a:do if(X|V){if(X){if(W)W=0;else break;while(1){wa=t+((W|1)<<1)|0;va=wa;b[va>>1]=0;b[va+2>>1]=0>>>16;wa=wa+4|0;b[wa>>1]=0;b[wa+2>>1]=0>>>16;W=W+4|0;if((W|0)>=(da|0))break a}}if(!W)break;fa=Ge(e[t+(da<<1)>>1]|0,0,65537,65537)|0;X=(-1<>2]|0;ea=D;da=da+ -1|0;do{wa=c[q+13084>>2]|0;wa=($((da+ -3<>wa,O)|0)+(X>>wa)|0;ga=t+(da+ -2<<1)|0;if(!(a[(c[W+16>>2]|0)+wa>>0]|0)){fa=Ge(e[ga>>1]|0,0,65537,65537)|0;ea=D}else{wa=ga;va=wa;b[va>>1]=fa;b[va+2>>1]=fa>>>16;wa=wa+4|0;b[wa>>1]=ea;b[wa+2>>1]=ea>>>16}da=da+ -4|0}while((da|0)>-1)}else{X=(-1<>2]|0;ia=X>>ha;if(W){ga=Ge(e[t+(da<<1)>>1]|0,0,65537,65537)|0;W=c[d+3488>>2]|0;fa=D;da=da+ -1|0;do{wa=($((da+ -3<>ha,O)|0)+ia|0;ia=t+(da+ -2<<1)|0;if(!(a[(c[W+16>>2]|0)+wa>>0]|0)){ga=Ge(e[ia>>1]|0,0,65537,65537)|0;fa=D}else{ha=ia;wa=ha;b[wa>>1]=ga;b[wa+2>>1]=ga>>>16;ha=ha+4|0;b[ha>>1]=fa;b[ha+2>>1]=fa>>>16;ha=c[ea>>2]|0}da=da+ -4|0;ia=X>>ha}while((da|0)>-1)}else W=c[d+3488>>2]|0;wa=($((-1<>ha,O)|0)+ia|0;if(!(a[(c[W+16>>2]|0)+wa>>0]|0))break;b[ba>>1]=b[s>>1]|0}while(0);W=b[ba>>1]|0;b[v>>1]=W;if(!((ca|0)>0&(V^1)))break;W=Ge(W&65535|0,0,65537,65537)|0;Q=(-1<>2]|0;X=D;V=0;do{wa=c[q+13084>>2]|0;wa=($(Q>>wa,O)|0)+((V<>wa)|0;if(!(a[(c[g+16>>2]|0)+wa>>0]|0)){W=Ge(e[v+((V|3)+1<<1)>>1]|0,0,65537,65537)|0;X=D}else{wa=v+((V|1)<<1)|0;va=wa;b[va>>1]=W;b[va+2>>1]=W>>>16;wa=wa+4|0;b[wa>>1]=X;b[wa+2>>1]=X>>>16}V=V+4|0}while((V|0)<(ca|0))}while(0);b:do if(!aa){if(_){O=Ge(e[t+(G<<1)>>1]|0,0,65537,65537)|0;f=D;if((G|0)<=0){N=147;break}N=G+1|0;P=0;while(1){wa=t+(N+P<<1)|0;va=wa;b[va>>1]=O;b[va+2>>1]=O>>>16;wa=wa+4|0;b[wa>>1]=f;b[wa+2>>1]=f>>>16;P=P+4|0;if((P|0)>=(G|0)){N=147;break b}}}if(Z){L=Ge(e[t>>1]|0,0,65537,65537)|0;O=D;N=G<<1;if((G|0)>0)M=0;else{N=150;break}while(1){wa=t+((M|1)<<1)|0;va=wa;b[va>>1]=L;b[va+2>>1]=L>>>16;wa=wa+4|0;b[wa>>1]=O;b[wa+2>>1]=O>>>16;M=M+4|0;if((M|0)>=(N|0)){N=150;break b}}}if(Y){O=b[x>>1]|0;b[t>>1]=O;O=Ge(O&65535|0,0,65537,65537)|0;N=D;M=G<<1;if((G|0)>0)L=0;else{N=152;break}while(1){wa=t+((L|1)<<1)|0;va=wa;b[va>>1]=O;b[va+2>>1]=O>>>16;wa=wa+4|0;b[wa>>1]=N;b[wa+2>>1]=N>>>16;L=L+4|0;if((L|0)>=(M|0)){N=152;break b}}}if(!R){g=1<>1]=g;Q=Ge(g&65535|0,0,65537,65537)|0;f=D;N=G<<1;O=(G|0)>0;if(O)P=0;else{N=147;break}do{wa=v+((P|1)<<1)|0;va=wa;b[va>>1]=Q;b[va+2>>1]=Q>>>16;wa=wa+4|0;b[wa>>1]=f;b[wa+2>>1]=f>>>16;P=P+4|0}while((P|0)<(N|0));P=Ge(g&65535|0,0,65537,65537)|0;f=D;if(O)O=0;else{N=147;break}while(1){wa=t+((O|1)<<1)|0;va=wa;b[va>>1]=P;b[va+2>>1]=P>>>16;wa=wa+4|0;b[wa>>1]=f;b[wa+2>>1]=f>>>16;O=O+4|0;if((O|0)>=(N|0)){N=147;break b}}}L=v+(G+1<<1)|0;O=b[L>>1]|0;M=Ge(O&65535|0,0,65537,65537)|0;K=D;J=(G|0)>0;if(J)N=0;else{b[t>>1]=O;break}do{wa=v+((N|1)<<1)|0;va=wa;b[va>>1]=M;b[va+2>>1]=M>>>16;wa=wa+4|0;b[wa>>1]=K;b[wa+2>>1]=K>>>16;N=N+4|0}while((N|0)<(G|0));M=b[L>>1]|0;b[t>>1]=M;M=Ge(M&65535|0,0,65537,65537)|0;K=D;L=G<<1;if(J){J=0;do{wa=t+((J|1)<<1)|0;va=wa;b[va>>1]=M;b[va+2>>1]=M>>>16;wa=wa+4|0;b[wa>>1]=K;b[wa+2>>1]=K>>>16;J=J+4|0}while((J|0)<(L|0));N=155}else N=155}else N=147;while(0);if((N|0)==147)if((U|0)==0?(M=Ge(e[t+(G+1<<1)>>1]|0,0,65537,65537)|0,L=D,(G|0)>0):0){N=0;do{wa=t+((N|1)<<1)|0;va=wa;b[va>>1]=M;b[va+2>>1]=M>>>16;wa=wa+4|0;b[wa>>1]=L;b[wa+2>>1]=L>>>16;N=N+4|0}while((N|0)<(G|0));N=150}else N=150;if((N|0)==150)if(!T){b[t>>1]=b[s>>1]|0;N=152}else N=152;if((N|0)==152)if((S|0)==0?(J=Ge(e[t>>1]|0,0,65537,65537)|0,K=D,(G|0)>0):0){L=0;do{wa=v+((L|1)<<1)|0;va=wa;b[va>>1]=J;b[va+2>>1]=J>>>16;wa=wa+4|0;b[wa>>1]=K;b[wa+2>>1]=K>>>16;L=L+4|0}while((L|0)<(G|0));N=155}else N=155;if(((N|0)==155?!R:0)?(H=Ge(e[v+(G<<1)>>1]|0,0,65537,65537)|0,I=D,(G|0)>0):0){K=G+1|0;J=0;do{wa=v+(K+J<<1)|0;va=wa;b[va>>1]=H;b[va+2>>1]=H>>>16;wa=wa+4|0;b[wa>>1]=I;b[wa+2>>1]=I>>>16;J=J+4|0}while((J|0)<(G|0))}H=b[t>>1]|0;b[v>>1]=H;c:do if(!(c[q+13112>>2]|0)){if(F){if((n|0)==1|(G|0)==4){r=x;break}}else if(((n|0)==1?1:(c[q+4>>2]|0)!=3)|(G|0)==4){r=x;break}wa=n+ -26|0;wa=(wa|0)>-1?wa:26-n|0;va=n+ -10|0;va=(va|0)>-1?va:10-n|0;if((((wa|0)>(va|0)?va:wa)|0)>(c[2776+(h+ -3<<2)>>2]|0)){I=1<>0]|0)!=0&(h|0)==5?(B=H&65535,E=b[v+128>>1]|0,C=E&65535,wa=C+B-(e[v+64>>1]<<1)|0,(((wa|0)>-1?wa:0-wa|0)|0)<(I|0)):0)?(z=t+128|0,A=b[z>>1]|0,wa=(A&65535)+B-(e[t+64>>1]<<1)|0,(((wa|0)>-1?wa:0-wa|0)|0)<(I|0)):0){b[u>>1]=H;b[u+128>>1]=E;v=0;do{wa=v;v=v+1|0;b[u+(v<<1)>>1]=(($(B,63-wa|0)|0)+32+($(C,v)|0)|0)>>>6}while((v|0)!=63);u=0;while(1){v=u+1|0;b[t+(v<<1)>>1]=(($(H&65535,63-u|0)|0)+32+($(A&65535,v)|0)|0)>>>6;if((v|0)==63)break c;H=b[t>>1]|0;A=b[z>>1]|0;u=v}}z=G<<1;C=b[t+(z<<1)>>1]|0;b[y+(z<<1)>>1]=C;B=b[v+(z<<1)>>1]|0;b[u+(z<<1)>>1]=B;z=z+ -2|0;A=(z|0)>-1;if(A){E=z;while(1){wa=E+1|0;va=C;C=b[t+(wa<<1)>>1]|0;b[y+(wa<<1)>>1]=((va&65535)+2+((C&65535)<<1)+(e[t+(E<<1)>>1]|0)|0)>>>2;if((E|0)<=0)break;else E=E+ -1|0}}wa=((e[s>>1]|0)+2+((H&65535)<<1)+(e[x>>1]|0)|0)>>>2&65535;b[y>>1]=wa;b[u>>1]=wa;if(A)while(1){wa=z+1|0;va=B;B=b[v+(wa<<1)>>1]|0;b[u+(wa<<1)>>1]=((va&65535)+2+((B&65535)<<1)+(e[v+(z<<1)>>1]|0)|0)>>>2;if((z|0)<=0){s=w;break}else z=z+ -1|0}else s=w}else r=x}else r=x;while(0);if(!n){Sa[c[d+(h+ -2<<2)+5848>>2]&15](l,r,s,o);i=k;return}else if((n|0)==1){Pa[c[d+5864>>2]&3](l,r,s,o,h,j);i=k;return}else{if(!(c[q+13104>>2]|0))p=0;else p=(a[p+31256>>0]|0)!=0;Na[c[d+(h+ -2<<2)+5868>>2]&7](l,r,s,o,j,n,p&1,m);i=k;return}}function Ic(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=c[e>>2]|0;if(!h){i=g;return}if(!(c[h+304>>2]|0)){i=g;return}h=e+70|0;f=(d[h>>0]|0)&(f^255)&255;a[h>>0]=f;if(f<<24>>24){i=g;return}Hd(c[b+4>>2]|0,e+4|0);_d(e+56|0);c[e+16>>2]=0;_d(e+64|0);_d(e+60|0);c[e+24>>2]=0;c[e+20>>2]=0;c[e+36>>2]=0;i=g;return}function Jc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[a+180>>2]|0;f=c[g+13080>>2]|0;e=($(e>>f,c[g+13128>>2]|0)|0)+(d>>f)|0;return c[(c[b+24>>2]|0)+(c[(c[(c[a+184>>2]|0)+1668>>2]|0)+(e<<2)>>2]<<2)>>2]|0}function Kc(a){a=a|0;var b=0,c=0;b=i;c=0;do{Ic(a,a+(c*72|0)+3492|0,6);c=c+1|0}while((c|0)!=32);i=b;return}function Lc(a){a=a|0;var b=0,c=0;b=i;c=0;do{Ic(a,a+(c*72|0)+3492|0,-1);c=c+1|0}while((c|0)!=32);i=b;return}function Mc(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;i=i+16|0;o=g;h=d+7640|0;j=0;while(1){if(((c[(c[d+(j*72|0)+3492>>2]|0)+304>>2]|0)!=0?(b[d+(j*72|0)+3560>>1]|0)==(b[h>>1]|0):0)?(c[d+(j*72|0)+3524>>2]|0)==(f|0):0){l=5;break}j=j+1|0;if(j>>>0>=32){j=0;break}}if((l|0)==5){p=c[d+4>>2]|0;c[o>>2]=f;$a(p,16,2792,o);p=-1094995529;i=g;return p|0}while(1){k=d+(j*72|0)+3492|0;p=j+1|0;if(!(c[(c[k>>2]|0)+304>>2]|0))break;if(p>>>0<32)j=p;else{l=17;break}}if((l|0)==17){$a(c[d+4>>2]|0,16,2832,o);p=-12;i=g;return p|0}if((Gd(c[d+4>>2]|0,d+(j*72|0)+3496|0,1)|0)<0){p=-12;i=g;return p|0}p=Yd((c[d+7684>>2]|0)*392|0)|0;l=d+(j*72|0)+3556|0;c[l>>2]=p;if(((p|0)!=0?(n=ce(c[d+1408>>2]|0)|0,c[d+(j*72|0)+3548>>2]=n,(n|0)!=0):0)?(c[d+(j*72|0)+3508>>2]=c[n+4>>2],m=ce(c[d+1412>>2]|0)|0,c[d+(j*72|0)+3552>>2]=m,(m|0)!=0):0){p=c[m+4>>2]|0;o=d+(j*72|0)+3516|0;c[o>>2]=p;m=d+180|0;n=c[m>>2]|0;n=$(c[n+13132>>2]|0,c[n+13128>>2]|0)|0;c[d+(j*72|0)+3520>>2]=n;if((n|0)>0?(c[p>>2]=c[(c[l>>2]|0)+4>>2],(n|0)>1):0){p=1;do{c[(c[o>>2]|0)+(p<<2)>>2]=c[(c[l>>2]|0)+4>>2];p=p+1|0}while((p|0)!=(n|0))}o=d+7796|0;p=c[k>>2]|0;c[p+244>>2]=(c[o>>2]|0)==1&1;c[p+240>>2]=((c[o>>2]|0)+ -1|0)>>>0<2&1;c[e>>2]=p;c[d+3488>>2]=k;a[d+(j*72|0)+3562>>0]=(a[d+2418>>0]|0)==0?2:3;c[d+(j*72|0)+3524>>2]=f;b[d+(j*72|0)+3560>>1]=b[h>>1]|0;p=d+(j*72|0)+3532|0;o=(c[m>>2]|0)+20|0;c[p+0>>2]=c[o+0>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];p=0;i=g;return p|0}Ic(d,k,-1);p=-12;i=g;return p|0}function Nc(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=i;k=d+3014|0;j=d+5796|0;h=d+7642|0;f=(f|0)==0;n=d+7640|0;m=d+180|0;o=0;while(1){if((a[k>>0]|0)==1){q=0;do{p=d+(q*72|0)+3492|0;if(((a[d+(q*72|0)+3562>>0]&8)==0?(c[d+(q*72|0)+3524>>2]|0)!=(c[j>>2]|0):0)?(b[d+(q*72|0)+3560>>1]|0)==(b[h>>1]|0):0)Ic(d,p,1);q=q+1|0}while((q|0)!=32);p=0;r=2147483647;q=0}else{p=0;r=2147483647;q=0}do{if((a[d+(p*72|0)+3562>>0]&1)!=0?(b[d+(p*72|0)+3560>>1]|0)==(b[h>>1]|0):0){s=c[d+(p*72|0)+3524>>2]|0;t=(s|0)<(r|0);o=t?p:o;r=t?s:r;q=q+1|0}p=p+1|0}while((p|0)!=32);if(((f?(b[h>>1]|0)==(b[n>>1]|0):0)?(l=c[m>>2]|0,(l|0)!=0):0)?(q|0)<=(c[l+(((c[l+72>>2]|0)+ -1|0)*12|0)+80>>2]|0):0){d=0;h=23;break}if(q){h=17;break}p=b[h>>1]|0;if(p<<16>>16==(b[n>>1]|0)){d=0;h=23;break}b[h>>1]=(p&65535)+1&255}if((h|0)==17){h=d+(o*72|0)+3492|0;e=je(e,c[h>>2]|0)|0;if(!(a[d+(o*72|0)+3562>>0]&8))Ic(d,h,1);else Ic(d,h,9);t=(e|0)<0?e:1;i=g;return t|0}else if((h|0)==23){i=g;return d|0}return 0}function Oc(){var b=0,c=0,d=0,e=0,f=0;b=i;if(!(a[2872]|0))c=0;else{i=b;return}do{d=0;do{f=($(d<<1|1,c)|0)&127;e=f>>>0>63;f=e?f+ -64|0:f;e=e?-1:1;if((f|0)>31){f=64-f|0;e=0-e|0}a[2872+(c<<5)+d>>0]=$(a[3896+f>>0]|0,e)|0;d=d+1|0}while((d|0)!=32);c=c+1|0}while((c|0)!=32);i=b;return}function Pc(a,b){a=a|0;b=b|0;c[a>>2]=4;c[a+4>>2]=9;c[a+8>>2]=10;c[a+12>>2]=11;c[a+16>>2]=12;c[a+20>>2]=1;c[a+24>>2]=2;c[a+28>>2]=1;c[a+32>>2]=3;c[a+36>>2]=4;c[a+40>>2]=5;c[a+44>>2]=6;c[a+48>>2]=2;c[a+52>>2]=3;c[a+56>>2]=4;c[a+60>>2]=5;c[a+64>>2]=1;c[a+68>>2]=1;c[a+72>>2]=2;c[a+1676>>2]=5;c[a+1680>>2]=6;c[a+1684>>2]=2;c[a+1688>>2]=3;c[a+1692>>2]=5;c[a+1696>>2]=6;c[a+1700>>2]=2;c[a+1704>>2]=3;return}function Qc(a,e,f,g,h,j,k){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;l=i;o=e>>>1;if((g|0)<=0){i=l;return}m=(f|0)>0;e=h+8|0;n=h+16|0;p=32-j|0;k=k-j|0;q=0;while(1){if(m){s=c[n>>2]|0;r=c[h>>2]|0;u=c[e>>2]|0;t=0;do{v=r+(u>>>3)|0;v=(ze(d[v>>0]|d[v+1>>0]<<8|d[v+2>>0]<<16|d[v+3>>0]<<24|0)|0)<<(u&7)>>>p;w=u+j|0;u=s>>>0>w>>>0?w:s;c[e>>2]=u;b[a+(t<<1)>>1]=v<>>1;f=1<>1]|0)+(e[k>>1]|0)|0;if(n&h)n=0-n>>31&f;b[k>>1]=n;m=m+1|0;if((m|0)==4)break;else l=l+2|0}j=j+1|0;if((j|0)==4)break;else{c=c+8|0;a=a+(d<<1)|0}}i=g;return}function Sc(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;d=d>>>1;f=1<>1]|0)+(e[k>>1]|0)|0;if(n&h)n=0-n>>31&f;b[k>>1]=n;m=m+1|0;if((m|0)==8)break;else l=l+2|0}j=j+1|0;if((j|0)==8)break;else{c=c+16|0;a=a+(d<<1)|0}}i=g;return}function Tc(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;d=d>>>1;f=1<>1]|0)+(e[k>>1]|0)|0;if(n&h)n=0-n>>31&f;b[k>>1]=n;m=m+1|0;if((m|0)==16)break;else l=l+2|0}j=j+1|0;if((j|0)==16)break;else{c=c+32|0;a=a+(d<<1)|0}}i=g;return}function Uc(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;d=d>>>1;f=1<>1]|0)+(e[k>>1]|0)|0;if(n&h)n=0-n>>31&f;b[k>>1]=n;m=m+1|0;if((m|0)==32)break;else l=l+2|0}j=j+1|0;if((j|0)==32)break;else{c=c+64|0;a=a+(d<<1)|0}}i=g;return}function Vc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;c=c<<16>>16;d=15-d-c|0;c=1<0){f=1<0){h=a;a=0}else{i=e;return}while(1){j=h;g=0;while(1){b[j>>1]=(b[j>>1]|0)+f>>d;g=g+1|0;if((g|0)==(c|0))break;else j=j+2|0}a=a+1|0;if((a|0)==(c|0))break;else h=h+(c<<1)|0}i=e;return}if((c|0)<=0){i=e;return}d=0-d|0;f=0;while(1){g=a;h=0;while(1){b[g>>1]=b[g>>1]<>16);if(d){d=c+ -1|0;if((d|0)<=0){i=f;return}g=(c|0)>0;h=0;do{if(g){j=0;do{k=a+(j+c<<1)|0;b[k>>1]=(e[k>>1]|0)+(e[a+(j<<1)>>1]|0);j=j+1|0}while((j|0)!=(c|0))}a=a+(c<<1)|0;h=h+1|0}while((h|0)!=(d|0));i=f;return}if((c|0)<=0){i=f;return}d=(c|0)>1;h=0;while(1){if(d){j=b[a>>1]|0;g=1;do{k=a+(g<<1)|0;j=(e[k>>1]|0)+(j&65535)&65535;b[k>>1]=j;g=g+1|0}while((g|0)!=(c|0))}h=h+1|0;if((h|0)==(c|0))break;else a=a+(c<<1)|0}i=f;return}function Xc(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;e=0;g=a;while(1){q=b[g>>1]|0;n=g+16|0;o=b[n>>1]|0;h=o+q|0;f=g+24|0;p=b[f>>1]|0;m=p+o|0;j=q-p|0;l=g+8|0;k=(b[l>>1]|0)*74|0;p=((q-o+p|0)*74|0)+64|0;o=p>>7;if((o+32768|0)>>>0>65535)o=p>>31^32767;b[n>>1]=o;o=(h*29|0)+64+(m*55|0)+k|0;n=o>>7;if((n+32768|0)>>>0>65535)n=o>>31^32767;b[g>>1]=n;m=($(m,-29)|0)+64+(j*55|0)+k|0;n=m>>7;if((n+32768|0)>>>0>65535)n=m>>31^32767;b[l>>1]=n;j=(h*55|0)+64+(j*29|0)-k|0;h=j>>7;if((h+32768|0)>>>0>65535)h=j>>31^32767;b[f>>1]=h;e=e+1|0;if((e|0)==4)break;else g=g+2|0}e=20-c|0;c=1<>1]|0;n=a+4|0;q=b[n>>1]|0;l=q+p|0;f=a+6|0;o=b[f>>1]|0;m=o+q|0;h=p-o|0;k=a+2|0;j=(b[k>>1]|0)*74|0;o=((p-q+o|0)*74|0)+c>>e;if((o+32768|0)>>>0>65535)o=o>>31^32767;b[n>>1]=o;n=(l*29|0)+c+(m*55|0)+j>>e;if((n+32768|0)>>>0>65535)n=n>>31^32767;b[a>>1]=n;m=($(m,-29)|0)+c+(h*55|0)+j>>e;if((m+32768|0)>>>0>65535)m=m>>31^32767;b[k>>1]=m;h=(l*55|0)+c+(h*29|0)-j>>e;if((h+32768|0)>>>0>65535)h=h>>31^32767;b[f>>1]=h;g=g+1|0;if((g|0)==4)break;else a=a+8|0}i=d;return}function Yc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=i;e=0;g=a;while(1){n=b[g>>1]<<6;k=g+16|0;m=b[k>>1]<<6;j=m+n|0;m=n-m|0;n=g+8|0;l=b[n>>1]|0;f=g+24|0;o=b[f>>1]|0;h=(o*36|0)+(l*83|0)|0;l=($(o,-83)|0)+(l*36|0)|0;o=j+64+h|0;p=o>>7;if((p+32768|0)>>>0>65535)p=o>>31^32767;b[g>>1]=p;p=m+64+l|0;o=p>>7;if((o+32768|0)>>>0>65535)o=p>>31^32767;b[n>>1]=o;l=m-l+64|0;m=l>>7;if((m+32768|0)>>>0>65535)m=l>>31^32767;b[k>>1]=m;j=j-h+64|0;h=j>>7;if((h+32768|0)>>>0>65535)h=j>>31^32767;b[f>>1]=h;e=e+1|0;if((e|0)==4)break;else g=g+2|0}e=20-d|0;d=1<>1]<<6;k=a+4|0;o=b[k>>1]<<6;m=a+2|0;l=b[m>>1]|0;f=a+6|0;j=b[f>>1]|0;h=(j*36|0)+(l*83|0)|0;l=($(j,-83)|0)+(l*36|0)|0;j=o+n+d|0;p=j+h>>e;if((p+32768|0)>>>0>65535)p=p>>31^32767;b[a>>1]=p;n=n-o+d|0;o=n+l>>e;if((o+32768|0)>>>0>65535)o=o>>31^32767;b[m>>1]=o;l=n-l>>e;if((l+32768|0)>>>0>65535)l=l>>31^32767;b[k>>1]=l;h=j-h>>e;if((h+32768|0)>>>0>65535)h=h>>31^32767;b[f>>1]=h;g=g+1|0;if((g|0)==4)break;else a=a+8|0}i=c;return}function Zc(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;j=i;i=i+64|0;r=j+48|0;p=j+32|0;g=j+16|0;h=j;q=(e|0)>8;s=e+4|0;k=r+4|0;l=r+8|0;m=r+12|0;o=0;s=(s|0)>8?8:s;n=d;while(1){c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;w=(s|0)>1;t=0;do{if(w){v=p+(t<<2)|0;u=c[v>>2]|0;x=1;do{u=($(b[n+(x<<3<<1)>>1]|0,a[2872+(x<<2<<5)+t>>0]|0)|0)+u|0;x=x+2|0}while((x|0)<(s|0));c[v>>2]=u}t=t+1|0}while((t|0)!=4);w=b[n>>1]<<6;v=b[n+64>>1]<<6;x=v+w|0;v=w-v|0;w=b[n+32>>1]|0;u=b[n+96>>1]|0;t=(u*36|0)+(w*83|0)|0;w=($(u,-83)|0)+(w*36|0)|0;u=t+x|0;c[r>>2]=u;c[k>>2]=w+v;c[l>>2]=v-w;c[m>>2]=x-t;t=0;while(1){v=c[p+(t<<2)>>2]|0;w=u+64+v|0;x=w>>7;if((x+32768|0)>>>0>65535)x=w>>31^32767;b[n+(t<<3<<1)>>1]=x;v=u-v+64|0;u=v>>7;if((u+32768|0)>>>0>65535)u=v>>31^32767;b[n+(7-t<<3<<1)>>1]=u;t=t+1|0;if((t|0)==4)break;u=c[r+(t<<2)>>2]|0}if((s|0)<8)s=(o&3|0)==0&(o|0)!=0?s+ -4|0:s;o=o+1|0;if((o|0)==8)break;else n=n+2|0}k=q?8:e;l=20-f|0;m=1<1;n=g+4|0;o=g+8|0;e=g+12|0;p=0;while(1){c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;t=0;do{if(f){q=h+(t<<2)|0;s=c[q>>2]|0;r=1;do{s=($(b[d+(r<<1)>>1]|0,a[2872+(r<<2<<5)+t>>0]|0)|0)+s|0;r=r+2|0}while((r|0)<(k|0));c[q>>2]=s}t=t+1|0}while((t|0)!=4);w=b[d>>1]<<6;v=b[d+8>>1]<<6;x=v+w|0;v=w-v|0;w=b[d+4>>1]|0;s=b[d+12>>1]|0;q=(s*36|0)+(w*83|0)|0;w=($(s,-83)|0)+(w*36|0)|0;s=q+x|0;c[g>>2]=s;c[n>>2]=w+v;c[o>>2]=v-w;c[e>>2]=x-q;q=0;while(1){r=c[h+(q<<2)>>2]|0;s=s+m|0;t=s+r>>l;if((t+32768|0)>>>0>65535)t=t>>31^32767;b[d+(q<<1)>>1]=t;r=s-r>>l;if((r+32768|0)>>>0>65535)r=r>>31^32767;b[d+(7-q<<1)>>1]=r;q=q+1|0;if((q|0)==4)break;s=c[g+(q<<2)>>2]|0}p=p+1|0;if((p|0)==8)break;else d=d+16|0}i=j;return}function _c(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;g=i;i=i+192|0;t=g+160|0;u=g+128|0;v=g+112|0;s=g+96|0;j=g+64|0;l=g+32|0;h=g+16|0;k=g;m=(e|0)>16;w=e+4|0;n=v+4|0;o=v+8|0;p=v+12|0;r=0;w=(w|0)>16?16:w;q=d;while(1){c[u+0>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;c[u+16>>2]=0;c[u+20>>2]=0;c[u+24>>2]=0;c[u+28>>2]=0;A=(w|0)>1;B=0;do{if(A){z=u+(B<<2)|0;x=c[z>>2]|0;y=1;do{x=($(b[q+(y<<4<<1)>>1]|0,a[2872+(y<<1<<5)+B>>0]|0)|0)+x|0;y=y+2|0}while((y|0)<(w|0));c[z>>2]=x}B=B+1|0}while((B|0)!=8);c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;y=0;do{x=s+(y<<2)|0;A=c[x>>2]|0;z=1;do{A=($(b[q+(z<<5<<1)>>1]|0,a[2872+(z<<2<<5)+y>>0]|0)|0)+A|0;z=z+2|0}while((z|0)<8);c[x>>2]=A;y=y+1|0}while((y|0)!=4);A=b[q>>1]<<6;z=b[q+256>>1]<<6;B=z+A|0;z=A-z|0;A=b[q+128>>1]|0;x=b[q+384>>1]|0;y=(x*36|0)+(A*83|0)|0;A=($(x,-83)|0)+(A*36|0)|0;x=y+B|0;c[v>>2]=x;c[n>>2]=A+z;c[o>>2]=z-A;c[p>>2]=B-y;y=0;while(1){B=c[s+(y<<2)>>2]|0;c[t+(y<<2)>>2]=B+x;c[t+(7-y<<2)>>2]=x-B;y=y+1|0;if((y|0)==4){x=0;break}x=c[v+(y<<2)>>2]|0}do{z=c[t+(x<<2)>>2]|0;y=c[u+(x<<2)>>2]|0;B=z+64+y|0;A=B>>7;if((A+32768|0)>>>0>65535)A=B>>31^32767;b[q+(x<<4<<1)>>1]=A;y=z-y+64|0;z=y>>7;if((z+32768|0)>>>0>65535)z=y>>31^32767;b[q+(15-x<<4<<1)>>1]=z;x=x+1|0}while((x|0)!=8);if((w|0)<16)w=(r&3|0)==0&(r|0)!=0?w+ -4|0:w;r=r+1|0;if((r|0)==16)break;else q=q+2|0}m=m?16:e;f=20-f|0;n=1<1;o=h+4|0;r=h+8|0;p=h+12|0;s=0;while(1){c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;c[l+24>>2]=0;c[l+28>>2]=0;v=0;do{if(q){e=l+(v<<2)|0;u=c[e>>2]|0;t=1;do{u=($(b[d+(t<<1)>>1]|0,a[2872+(t<<1<<5)+v>>0]|0)|0)+u|0;t=t+2|0}while((t|0)<(m|0));c[e>>2]=u}v=v+1|0}while((v|0)!=8);c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;e=0;do{t=k+(e<<2)|0;v=c[t>>2]|0;u=1;do{v=($(b[d+(u<<1<<1)>>1]|0,a[2872+(u<<2<<5)+e>>0]|0)|0)+v|0;u=u+2|0}while((u|0)<8);c[t>>2]=v;e=e+1|0}while((e|0)!=4);A=b[d>>1]<<6;z=b[d+16>>1]<<6;B=z+A|0;z=A-z|0;A=b[d+8>>1]|0;t=b[d+24>>1]|0;u=(t*36|0)+(A*83|0)|0;A=($(t,-83)|0)+(A*36|0)|0;t=u+B|0;c[h>>2]=t;c[o>>2]=A+z;c[r>>2]=z-A;c[p>>2]=B-u;u=0;while(1){B=c[k+(u<<2)>>2]|0;c[j+(u<<2)>>2]=B+t;c[j+(7-u<<2)>>2]=t-B;u=u+1|0;if((u|0)==4){t=0;break}t=c[h+(u<<2)>>2]|0}do{u=c[l+(t<<2)>>2]|0;v=(c[j+(t<<2)>>2]|0)+n|0;e=v+u>>f;if((e+32768|0)>>>0>65535)e=e>>31^32767;b[d+(t<<1)>>1]=e;u=v-u>>f;if((u+32768|0)>>>0>65535)u=u>>31^32767;b[d+(15-t<<1)>>1]=u;t=t+1|0}while((t|0)!=8);s=s+1|0;if((s|0)==16)break;else d=d+32|0}i=g;return}function $c(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=i;i=i+320|0;h=g+256|0;n=g+192|0;o=g+160|0;s=g+128|0;u=g+112|0;t=g+96|0;m=g+64|0;k=g+32|0;j=g+16|0;l=g;q=(e|0)>32;y=e+4|0;v=u+4|0;w=u+8|0;x=u+12|0;p=0;y=(y|0)>32?32:y;r=d;while(1){z=n+0|0;A=z+64|0;do{c[z>>2]=0;z=z+4|0}while((z|0)<(A|0));z=(y|0)>1;C=0;do{if(z){B=n+(C<<2)|0;A=c[B>>2]|0;D=1;do{A=($(b[r+(D<<5<<1)>>1]|0,a[2872+(D<<5)+C>>0]|0)|0)+A|0;D=D+2|0}while((D|0)<(y|0));c[B>>2]=A}C=C+1|0}while((C|0)!=16);c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;c[s+24>>2]=0;c[s+28>>2]=0;z=(y|0)/2|0;A=(y|0)>3;B=0;do{if(A){C=s+(B<<2)|0;D=c[C>>2]|0;E=1;do{D=($(b[r+(E<<6<<1)>>1]|0,a[2872+(E<<1<<5)+B>>0]|0)|0)+D|0;E=E+2|0}while((E|0)<(z|0));c[C>>2]=D}B=B+1|0}while((B|0)!=8);c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;C=0;do{z=t+(C<<2)|0;B=c[z>>2]|0;A=1;do{B=($(b[r+(A<<7<<1)>>1]|0,a[2872+(A<<2<<5)+C>>0]|0)|0)+B|0;A=A+2|0}while((A|0)<8);c[z>>2]=B;C=C+1|0}while((C|0)!=4);D=b[r>>1]<<6;C=b[r+1024>>1]<<6;E=C+D|0;C=D-C|0;D=b[r+512>>1]|0;z=b[r+1536>>1]|0;A=(z*36|0)+(D*83|0)|0;D=($(z,-83)|0)+(D*36|0)|0;z=A+E|0;c[u>>2]=z;c[v>>2]=D+C;c[w>>2]=C-D;c[x>>2]=E-A;A=0;while(1){E=c[t+(A<<2)>>2]|0;c[o+(A<<2)>>2]=E+z;c[o+(7-A<<2)>>2]=z-E;A=A+1|0;if((A|0)==4){z=0;break}z=c[u+(A<<2)>>2]|0}do{D=c[o+(z<<2)>>2]|0;E=c[s+(z<<2)>>2]|0;c[h+(z<<2)>>2]=E+D;c[h+(15-z<<2)>>2]=D-E;z=z+1|0}while((z|0)!=8);z=0;do{A=c[h+(z<<2)>>2]|0;B=c[n+(z<<2)>>2]|0;D=A+64+B|0;C=D>>7;if((C+32768|0)>>>0>65535)C=D>>31^32767;b[r+(z<<5<<1)>>1]=C;A=A-B+64|0;B=A>>7;if((B+32768|0)>>>0>65535)B=A>>31^32767;b[r+(31-z<<5<<1)>>1]=B;z=z+1|0}while((z|0)!=16);if((y|0)<32)y=(p&3|0)==0&(p|0)!=0?y+ -4|0:y;p=p+1|0;if((p|0)==32)break;else r=r+2|0}o=q?32:e;e=20-f|0;s=1<1;r=(o|0)/2|0;q=(o|0)>3;p=j+4|0;t=j+8|0;u=j+12|0;v=0;while(1){z=n+0|0;A=z+64|0;do{c[z>>2]=0;z=z+4|0}while((z|0)<(A|0));z=0;do{if(f){w=n+(z<<2)|0;y=c[w>>2]|0;x=1;do{y=($(b[d+(x<<1)>>1]|0,a[2872+(x<<5)+z>>0]|0)|0)+y|0;x=x+2|0}while((x|0)<(o|0));c[w>>2]=y}z=z+1|0}while((z|0)!=16);c[k+0>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;z=0;do{if(q){w=k+(z<<2)|0;y=c[w>>2]|0;x=1;do{E=x<<1;y=($(b[d+(E<<1)>>1]|0,a[2872+(E<<5)+z>>0]|0)|0)+y|0;x=x+2|0}while((x|0)<(r|0));c[w>>2]=y}z=z+1|0}while((z|0)!=8);c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;w=0;do{x=l+(w<<2)|0;z=c[x>>2]|0;y=1;do{E=y<<2;z=($(b[d+(E<<1)>>1]|0,a[2872+(E<<5)+w>>0]|0)|0)+z|0;y=y+2|0}while((y|0)<8);c[x>>2]=z;w=w+1|0}while((w|0)!=4);D=b[d>>1]<<6;C=b[d+32>>1]<<6;E=C+D|0;C=D-C|0;D=b[d+16>>1]|0;w=b[d+48>>1]|0;x=(w*36|0)+(D*83|0)|0;D=($(w,-83)|0)+(D*36|0)|0;w=x+E|0;c[j>>2]=w;c[p>>2]=D+C;c[t>>2]=C-D;c[u>>2]=E-x;x=0;while(1){E=c[l+(x<<2)>>2]|0;c[m+(x<<2)>>2]=E+w;c[m+(7-x<<2)>>2]=w-E;x=x+1|0;if((x|0)==4){w=0;break}w=c[j+(x<<2)>>2]|0}do{D=c[m+(w<<2)>>2]|0;E=c[k+(w<<2)>>2]|0;c[h+(w<<2)>>2]=E+D;c[h+(15-w<<2)>>2]=D-E;w=w+1|0}while((w|0)!=8);w=0;do{x=c[n+(w<<2)>>2]|0;y=(c[h+(w<<2)>>2]|0)+s|0;z=y+x>>e;if((z+32768|0)>>>0>65535)z=z>>31^32767;b[d+(w<<1)>>1]=z;x=y-x>>e;if((x+32768|0)>>>0>65535)x=x>>31^32767;b[d+(31-w<<1)>>1]=x;w=w+1|0}while((w|0)!=16);v=v+1|0;if((v|0)==32)break;else d=d+64|0}i=g;return}function ad(a,c){a=a|0;c=c|0;var d=0,e=0,f=0;d=i;c=14-c|0;c=((b[a>>1]|0)+1>>1)+(1<>c&65535;e=0;do{f=e<<2;b[a+(f<<1)>>1]=c;b[a+((f|1)<<1)>>1]=c;b[a+((f|2)<<1)>>1]=c;b[a+((f|3)<<1)>>1]=c;e=e+1|0}while((e|0)!=4);i=d;return}function bd(a,c){a=a|0;c=c|0;var d=0,e=0,f=0;d=i;c=14-c|0;c=((b[a>>1]|0)+1>>1)+(1<>c&65535;e=0;do{f=e<<3;b[a+(f<<1)>>1]=c;b[a+((f|1)<<1)>>1]=c;b[a+((f|2)<<1)>>1]=c;b[a+((f|3)<<1)>>1]=c;b[a+((f|4)<<1)>>1]=c;b[a+((f|5)<<1)>>1]=c;b[a+((f|6)<<1)>>1]=c;b[a+((f|7)<<1)>>1]=c;e=e+1|0}while((e|0)!=8);i=d;return}function cd(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0;d=i;e=14-c|0;e=((b[a>>1]|0)+1>>1)+(1<>e&65535;c=0;do{f=c<<4;g=0;do{b[a+(g+f<<1)>>1]=e;g=g+1|0}while((g|0)!=16);c=c+1|0}while((c|0)!=16);i=d;return}function dd(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0;d=i;e=14-c|0;e=((b[a>>1]|0)+1>>1)+(1<>e&65535;c=0;do{f=c<<5;g=0;do{b[a+(g+f<<1)>>1]=e;g=g+1|0}while((g|0)!=32);c=c+1|0}while((c|0)!=32);i=d;return}function ed(a,f,g,h,j,k,l,m,n,o){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0;p=i;i=i+128|0;k=p;r=k+0|0;q=r+128|0;do{c[r>>2]=0;r=r+4|0}while((r|0)<(q|0));t=d[j+n+96>>0]|0;g=g>>>1;c[k+((t&31)<<2)>>2]=b[j+(n*10|0)+114>>1];c[k+((t+1&31)<<2)>>2]=b[j+(n*10|0)+116>>1];c[k+((t+2&31)<<2)>>2]=b[j+(n*10|0)+118>>1];c[k+((t+3&31)<<2)>>2]=b[j+(n*10|0)+120>>1];j=o+ -5|0;h=h>>>1;if((m|0)<=0){i=p;return}n=(l|0)>0;o=1<>1]|0;t=t+(c[k+(t>>>j<<2)>>2]|0)|0;if(t&q)t=0-t>>31&o;b[a+(s<<1)>>1]=t;s=s+1|0}while((s|0)!=(l|0))}r=r+1|0;if((r|0)==(m|0))break;else{a=a+(g<<1)|0;f=f+(h<<1)|0}}i=p;return}function fd(a,d,f,g,h,j,k,l,m,n,o,p,q){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0;n=i;o=h+(m*10|0)+112|0;r=c[h+(m<<2)+100>>2]|0;f=f>>>1;g=g>>>1;if((r|0)!=1){if(c[j>>2]|0){u=b[o>>1]|0;if((l|0)>0){p=1<>1]|0)+u|0;if(v&t)v=0-v>>31&p;b[a+(($(s,f)|0)<<1)>>1]=v;s=s+1|0}while((s|0)!=(l|0));p=1}else p=1}else p=0;if(c[j+8>>2]|0){s=b[o>>1]|0;k=k+ -1|0;if((l|0)>0){v=1<>1]|0)+s|0;if(w&u)w=0-w>>31&v;b[a+(($(t,f)|0)+k<<1)>>1]=w;t=t+1|0}while((t|0)!=(l|0))}}if(!r){u=l;v=p;w=0;t=k;nd(a,d,f,g,h,t,u,m,v,w,q);i=n;return}}else p=0;if(c[j+4>>2]|0){r=b[o>>1]|0;if((p|0)<(k|0)){s=1<>1]|0)+r|0;if(v&t)v=0-v>>31&s;b[a+(u<<1)>>1]=v;u=u+1|0}while((u|0)!=(k|0));r=1}else r=1}else r=0;if(!(c[j+12>>2]|0)){u=l;v=p;w=r;t=k;nd(a,d,f,g,h,t,u,m,v,w,q);i=n;return}j=b[o>>1]|0;t=l+ -1|0;o=$(t,f)|0;u=$(t,g)|0;if((p|0)>=(k|0)){u=t;v=p;w=r;t=k;nd(a,d,f,g,h,t,u,m,v,w,q);i=n;return}s=1<>1]|0)+j|0;if(w&l)w=0-w>>31&s;b[a+(v+o<<1)>>1]=w;v=v+1|0}while((v|0)!=(k|0));nd(a,d,f,g,h,k,t,m,p,r,q);i=n;return}function gd(d,f,g,h,j,k,l,m,n,o,p,q,r){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;r=r|0;var s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;t=i;D=j+(n*10|0)+112|0;C=c[j+(n<<2)+100>>2]|0;g=g>>>1;h=h>>>1;B=(C|0)!=1;if(B){if(c[k>>2]|0){I=b[D>>1]|0;if((m|0)>0){H=1<>1]|0)+I|0;if(J&G)J=0-J>>31&H;b[d+(($(F,g)|0)<<1)>>1]=J;F=F+1|0}while((F|0)!=(m|0));F=1}else F=1}else F=0;if(c[k+8>>2]|0){G=b[D>>1]|0;l=l+ -1|0;if((m|0)>0){J=1<>1]|0)+G|0;if(K&I)K=0-K>>31&J;b[d+(($(H,g)|0)+l<<1)>>1]=K;H=H+1|0}while((H|0)!=(m|0))}}if(!C){D=1;G=0}else E=15}else{F=0;E=15}if((E|0)==15){if(c[k+4>>2]|0){H=b[D>>1]|0;if((F|0)<(l|0)){I=1<>1]|0)+H|0;if(J&G)J=0-J>>31&I;b[d+(E<<1)>>1]=J;E=E+1|0}while((E|0)!=(l|0));G=1}else G=1}else G=0;if(c[k+12>>2]|0){D=b[D>>1]|0;m=m+ -1|0;I=$(m,g)|0;H=$(m,h)|0;if((F|0)<(l|0)){K=1<>1]|0)+D|0;if(L&J)L=0-L>>31&K;b[d+(E+I<<1)>>1]=L;E=E+1|0}while((E|0)!=(l|0));D=0}else D=0}else D=0}nd(d,f,g,h,j,l,m,n,F,G,r);r=(C|0)==2;if((a[q>>0]|0)==0&r?(c[k>>2]|0)==0:0)j=(c[k+4>>2]|0)==0;else j=0;H=j&1;j=q+1|0;C=(C|0)==3;if((a[j>>0]|0)==0&C?(c[k+4>>2]|0)==0:0)n=(c[k+8>>2]|0)==0;else n=0;I=n&1;n=q+2|0;if((a[n>>0]|0)==0&r?(c[k+8>>2]|0)==0:0)E=(c[k+12>>2]|0)==0;else E=0;J=E&1;E=q+3|0;if((a[E>>0]|0)==0&C?(c[k>>2]|0)==0:0)k=(c[k+12>>2]|0)==0;else k=0;k=k&1;B=B^1;if(!((a[o>>0]|0)==0|B)?(A=H+G|0,z=m-k|0,(A|0)<(z|0)):0)do{b[d+(($(A,g)|0)<<1)>>1]=b[f+(($(A,h)|0)<<1)>>1]|0;A=A+1|0}while((A|0)!=(z|0));if(!((a[o+1>>0]|0)==0|B)?(y=I+G|0,x=m-J|0,(y|0)<(x|0)):0){z=l+ -1|0;do{b[d+(z+($(y,g)|0)<<1)>>1]=b[f+(z+($(y,h)|0)<<1)>>1]|0;y=y+1|0}while((y|0)!=(x|0))}if(!((a[p>>0]|0)==0|D)?(w=H+F|0,v=l-I|0,(w|0)<(v|0)):0)do{b[d+(w<<1)>>1]=b[f+(w<<1)>>1]|0;w=w+1|0}while((w|0)!=(v|0));if(!((a[p+1>>0]|0)==0|D)?(u=k+F|0,s=l-J|0,(u|0)<(s|0)):0){v=m+ -1|0;p=$(v,h)|0;v=$(v,g)|0;do{b[d+(u+v<<1)>>1]=b[f+(u+p<<1)>>1]|0;u=u+1|0}while((u|0)!=(s|0))}if((a[q>>0]|0)!=0&r)b[d>>1]=b[f>>1]|0;if((a[j>>0]|0)!=0&C){L=l+ -1|0;b[d+(L<<1)>>1]=b[f+(L<<1)>>1]|0}if((a[n>>0]|0)!=0&r){L=m+ -1|0;K=l+ -1|0;b[d+(K+($(L,g)|0)<<1)>>1]=b[f+(K+($(L,h)|0)<<1)>>1]|0}if(!((a[E>>0]|0)!=0&C)){i=t;return}L=m+ -1|0;b[d+(($(L,g)|0)<<1)>>1]=b[f+(($(L,h)|0)<<1)>>1]|0;i=t;return}function hd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;md(a,b,2,c,d,e,f,g);i=h;return}function id(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=i;md(a,2,b,c,d,e,f,g);i=h;return}function jd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;ld(a,b,2,c,d,e,f);i=g;return}function kd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=i;ld(a,2,b,c,d,e,f);i=g;return}function ld(d,f,g,h,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;m=i;f=f>>>1;p=g>>>1;o=l+ -8|0;g=$(f,-2)|0;n=0-f|0;r=1<>2]<=1){v=0-s|0;u=(a[j+l>>0]|0)==0;t=(a[k+l>>0]|0)==0;x=0;w=d;while(1){y=w+(n<<1)|0;B=e[y>>1]|0;z=e[w>>1]|0;A=(e[w+(g<<1)>>1]|0)+4-(e[w+(f<<1)>>1]|0)+(z-B<<2)>>3;if((A|0)<(v|0))A=v;else A=(A|0)>(s|0)?s:A;if(u){B=A+B|0;if(B&q)B=0-B>>31&r;b[y>>1]=B}if(t){y=z-A|0;if(y&q)y=0-y>>31&r;b[w>>1]=y}x=x+1|0;if((x|0)==4)break;else w=w+(p<<1)|0}}l=l+1|0;if((l|0)==2)break;else d=d+(p<<2<<1)|0}i=m;return}function md(d,f,g,h,j,k,l,m){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;n=i;f=f>>>1;g=g>>>1;o=m+ -8|0;y=h<>3;u=y>>2;q=$(f,-4)|0;p=f*3|0;v=C+q|0;F=(g+f|0)*3|0;t=(y>>1)+y>>3;H=1<>1]|0;X=b[d+(s<<1)>>1]|0;W=b[d+(w<<1)>>1]|0;da=W&65535;R=(Y&65535)-((X&65535)<<1)+da|0;R=(R|0)>-1?R:0-R|0;T=b[d+(h<<1)>>1]|0;U=b[d+(f<<1)>>1]|0;V=b[d>>1]|0;M=V&65535;S=(T&65535)-((U&65535)<<1)+M|0;S=(S|0)>-1?S:0-S|0;ba=e[d+(z<<1)>>1]|0;Q=(e[d+(A<<1)>>1]|0)-((e[d+(B<<1)>>1]|0)<<1)+ba|0;Q=(Q|0)>-1?Q:0-Q|0;ca=e[d+(C<<1)>>1]|0;Z=(e[d+(D<<1)>>1]|0)-((e[d+(E<<1)>>1]|0)<<1)+ca|0;Z=(Z|0)>-1?Z:0-Z|0;L=S+R|0;aa=Z+Q|0;K=c[j+(I<<2)>>2]<>0]|0;P=a[l+I>>0]|0;do if((aa+L|0)<(y|0)){N=(K*5|0)+1>>1;ea=(e[d+(q<<1)>>1]|0)-da|0;O=b[d+(p<<1)>>1]|0;fa=(O&65535)-M|0;if((((((((fa|0)>-1?fa:0-fa|0)+((ea|0)>-1?ea:0-ea|0)|0)<(x|0)?(fa=da-M|0,(((fa|0)>-1?fa:0-fa|0)|0)<(N|0)):0)?(fa=(e[d+(v<<1)>>1]|0)-ba|0,ea=(e[d+(F<<1)>>1]|0)-ca|0,(((ea|0)>-1?ea:0-ea|0)+((fa|0)>-1?fa:0-fa|0)|0)<(x|0)):0)?(fa=ba-ca|0,(((fa|0)>-1?fa:0-fa|0)|0)<(N|0)):0)?(L<<1|0)<(u|0):0)?(aa<<1|0)<(u|0):0){K=K<<1;L=_<<24>>24==0;M=0-K|0;N=P<<24>>24==0;ba=O;P=1;O=d;while(1){Z=O+(r<<1)|0;Y=Y&65535;_=O+(s<<1)|0;X=X&65535;aa=O+(w<<1)|0;R=W&65535;V=V&65535;W=O+(f<<1)|0;U=U&65535;Q=O+(h<<1)|0;S=T&65535;T=ba&65535;if(L){ba=e[O+(q<<1)>>1]|0;ca=(Y+4+U+(R+X+V<<1)>>3)-R|0;if((ca|0)<(M|0))ca=M;else ca=(ca|0)>(K|0)?K:ca;b[aa>>1]=ca+R;aa=((Y+2+X+R+V|0)>>>2)-X|0;if((aa|0)<(M|0))aa=M;else aa=(aa|0)>(K|0)?K:aa;b[_>>1]=aa+X;_=((Y*3|0)+4+X+R+V+(ba<<1)>>3)-Y|0;if((_|0)<(M|0))_=M;else _=(_|0)>(K|0)?K:_;b[Z>>1]=_+Y}if(N){X=(X+4+S+(V+R+U<<1)>>3)-V|0;if((X|0)<(M|0))X=M;else X=(X|0)>(K|0)?K:X;b[O>>1]=X+V;X=((R+2+V+U+S|0)>>>2)-U|0;if((X|0)<(M|0))X=M;else X=(X|0)>(K|0)?K:X;b[W>>1]=X+U;R=(R+4+V+U+(S*3|0)+(T<<1)>>3)-S|0;if((R|0)<(M|0))R=M;else R=(R|0)>(K|0)?K:R;b[Q>>1]=R+S}Q=O+(g<<1)|0;if((P|0)==4)break;Y=b[O+(g+r<<1)>>1]|0;X=b[O+(g+s<<1)>>1]|0;W=b[O+(g-f<<1)>>1]|0;V=b[Q>>1]|0;U=b[O+(g+f<<1)>>1]|0;T=b[O+(g+h<<1)>>1]|0;ba=b[O+(g+p<<1)>>1]|0;P=P+1|0;O=Q}d=d+(J<<1)|0;break}L=K>>1;N=K*10|0;M=0-K|0;O=_<<24>>24!=0;P=P<<24>>24!=0;Q=(Q+R|0)<(t|0)&(O^1);R=0-L|0;S=(Z+S|0)<(t|0)&(P^1);_=V;ba=U;U=1;V=d;while(1){aa=Y&65535;Y=V+(s<<1)|0;Z=X&65535;da=V+(w<<1)|0;ca=W&65535;_=_&65535;W=V+(f<<1)|0;X=ba&65535;T=T&65535;ba=((_-ca|0)*9|0)+8+($(X-Z|0,-3)|0)>>4;if((((ba|0)>-1?ba:0-ba|0)|0)<(N|0)){if((ba|0)<(M|0))ba=M;else ba=(ba|0)>(K|0)?K:ba;if(!O){ea=ba+ca|0;if(ea&G)ea=0-ea>>31&H;b[da>>1]=ea}if(!P){da=_-ba|0;if(da&G)da=0-da>>31&H;b[V>>1]=da}if(Q){aa=((aa+1+ca|0)>>>1)-Z+ba>>1;if((aa|0)<(R|0))aa=R;else aa=(aa|0)>(L|0)?L:aa;Z=aa+Z|0;if(Z&G)Z=0-Z>>31&H;b[Y>>1]=Z}if(S){T=((_+1+T|0)>>>1)-X-ba>>1;if((T|0)<(R|0))T=R;else T=(T|0)>(L|0)?L:T;T=T+X|0;if(T&G)T=0-T>>31&H;b[W>>1]=T}}Z=V+(g<<1)|0;if((U|0)==4)break;Y=b[V+(g+r<<1)>>1]|0;X=b[V+(g+s<<1)>>1]|0;W=b[V+(g-f<<1)>>1]|0;_=b[Z>>1]|0;ba=b[V+(g+f<<1)>>1]|0;T=b[V+(g+h<<1)>>1]|0;U=U+1|0;V=Z}d=d+(J<<1)|0}else d=d+(m<<1)|0;while(0);I=I+1|0}while((I|0)!=2);i=n;return}function nd(e,f,g,h,j,k,l,m,n,o,p){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;t=i;x=c[j+(m<<2)+100>>2]|0;r=a[3936+(x<<2)>>0]|0;q=a[3938+(x<<2)>>0]|0;if((o|0)>=(l|0)){i=t;return}s=(n|0)<(k|0);v=1<>0]|0)+o|0,h)|0;y=$((a[3939+(x<<2)>>0]|0)+o|0,h)|0;x=$(o,g)|0;z=$(o,h)|0;while(1){if(s){o=p+r|0;A=y+q|0;B=n;do{C=b[f+(B+z<<1)>>1]|0;D=b[f+(o+B<<1)>>1]|0;if((C&65535)>(D&65535))D=3;else D=((C<<16>>16!=D<<16>>16)<<31>>31)+2|0;E=b[f+(A+B<<1)>>1]|0;if((C&65535)>(E&65535))E=1;else E=(C<<16>>16!=E<<16>>16)<<31>>31;C=(b[j+(m*10|0)+(d[3928+(E+D)>>0]<<1)+112>>1]|0)+(C&65535)|0;if(C&u)C=0-C>>31&v;b[e+(B+x<<1)>>1]=C;B=B+1|0}while((B|0)!=(k|0))}w=w+1|0;if((w|0)==(l|0))break;else{p=p+h|0;y=y+h|0;x=x+g|0;z=z+h|0}}i=t;return}function od(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;k=c[b+136>>2]|0;l=(c[b+180>>2]|0)+13080|0;r=(1<>2])+ -1|0;o=r&e;n=r&f;q=(n|0)!=0|(a[k+309>>0]|0)!=0;m=q&1;c[k+31296>>2]=m;p=(o|0)!=0|(a[k+308>>0]|0)!=0;b=p&1;c[k+31292>>2]=b;if(!(r&(f|e)))p=d[k+311>>0]|0;else p=p&q&1;c[k+31300>>2]=p;if((o+g|0)==(1<>2]|0))m=(a[k+310>>0]|0)!=0&(n|0)==0&1;c[k+31308>>2]=m;if(!m){q=0;q=q&1;r=k+31304|0;c[r>>2]=q;r=h+f|0;q=k+316|0;q=c[q>>2]|0;q=(r|0)<(q|0);q=q?b:0;r=k+31288|0;c[r>>2]=q;i=j;return}q=(g+e|0)<(c[k+312>>2]|0);q=q&1;r=k+31304|0;c[r>>2]=q;r=h+f|0;q=k+316|0;q=c[q>>2]|0;q=(r|0)<(q|0);q=q?b:0;r=k+31288|0;c[r>>2]=q;i=j;return}function pd(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;e=i;i=i+32|0;g=e;f=e+24|0;h=c[b+136>>2]|0;n=h+204|0;j=Yd(13196)|0;c[f>>2]=j;if(!j){B=-12;i=e;return B|0}k=c[j+4>>2]|0;j=b+4|0;$a(c[j>>2]|0,48,3952,g);r=Yd(468)|0;if(!r){B=-12;i=e;return B|0}o=c[r+4>>2]|0;c[o+4>>2]=1;m=o+8|0;c[m>>2]=1;a[o>>0]=0;c[o+348>>2]=1;l=o+352|0;p=o+380|0;q=o+408|0;s=0;do{c[l+(s<<2)>>2]=1;c[p+(s<<2)>>2]=0;c[q+(s<<2)>>2]=-1;s=s+1|0}while((s|0)<(c[m>>2]|0));c[o+436>>2]=0;c[o+440>>2]=1;a[o+444>>0]=0;s=b+188|0;_d(s);c[s>>2]=r;c[k>>2]=0;s=k+72|0;c[s>>2]=1;m=h+212|0;A=c[m>>2]|0;r=h+220|0;u=c[r>>2]|0;B=(c[n>>2]|0)+(A>>>3)|0;B=(ze(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24|0)|0)<<(A&7);A=A+8|0;c[m>>2]=u>>>0>A>>>0?A:u;u=k+4|0;c[u>>2]=B>>>24;a:do if(B>>>0<=67108863){a[k+8>>0]=0;l=c[m>>2]|0;q=c[r>>2]|0;p=c[n>>2]|0;A=p+(l>>>3)|0;A=(ze(d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24|0)|0)<<(l&7)&-65536;l=l+16|0;l=q>>>0>l>>>0?l:q;c[m>>2]=l;B=p+(l>>>3)|0;B=(ze(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24|0)|0)<<(l&7)>>>16;l=l+16|0;c[m>>2]=q>>>0>l>>>0?l:q;q=k+13120|0;c[q>>2]=B|A;A=c[m>>2]|0;B=c[r>>2]|0;l=p+(A>>>3)|0;l=(ze(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0)|0)<<(A&7)&-65536;A=A+16|0;A=B>>>0>A>>>0?A:B;c[m>>2]=A;p=p+(A>>>3)|0;p=(ze(d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24|0)|0)<<(A&7)>>>16;A=A+16|0;c[m>>2]=B>>>0>A>>>0?A:B;l=p|l;p=k+13124|0;c[p>>2]=l;l=Dd(c[q>>2]|0,l,0,c[j>>2]|0)|0;if((l|0)>=0){A=c[m>>2]|0;o=c[r>>2]|0;B=(c[n>>2]|0)+(A>>>3)|0;B=(ze(d[B>>0]|d[B+1>>0]<<8|d[B+2>>0]<<16|d[B+3>>0]<<24|0)|0)<<(A&7)>>>24;A=A+8|0;c[m>>2]=o>>>0>A>>>0?A:o;o=k+52|0;c[o>>2]=B+8;u=c[u>>2]|0;if(!u){c[k+60>>2]=32;u=32}else if((u|0)==1){c[k+60>>2]=54;u=54}else if((u|0)==2){c[k+60>>2]=56;u=56}else{c[k+60>>2]=58;u=58}c[k+56>>2]=1;u=ke(u)|0;if(!u)l=-22;else{c[k+13180>>2]=0;c[k+13168>>2]=0;B=d[u+5>>0]|0;c[k+13172>>2]=B;c[k+13176>>2]=B;B=d[u+6>>0]|0;c[k+13184>>2]=B;c[k+13188>>2]=B;c[k+64>>2]=8;if((c[s>>2]|0)>0){v=k+76|0;u=0;do{c[v+(u*12|0)>>2]=1;c[v+(u*12|0)+4>>2]=0;c[v+(u*12|0)+8>>2]=-1;u=u+1|0}while((u|0)<(c[s>>2]|0))}x=(qd(n)|0)+3|0;y=k+13064|0;c[y>>2]=x;x=1<>2]=w+(c[q>>2]|0)&x;c[p>>2]=w+(c[p>>2]|0)&x;x=k+13068|0;c[x>>2]=qd(n)|0;w=k+13072|0;c[w>>2]=(qd(n)|0)+2;A=qd(n)|0;B=c[w>>2]|0;s=k+13076|0;c[s>>2]=B+A;if(B>>>0>=(c[y>>2]|0)>>>0){$a(c[j>>2]|0,16,3968,g);l=-1094995529;break}v=k+13088|0;c[v>>2]=0;u=k+13092|0;c[u>>2]=qd(n)|0;z=c[m>>2]|0;A=(d[(c[n>>2]|0)+(z>>>3)>>0]|0)<<(z&7)>>>7&1;c[m>>2]=((z|0)<(c[r>>2]|0)&1)+z;a[k+12941>>0]=A;A=c[m>>2]|0;z=c[n>>2]|0;B=(d[z+(A>>>3)>>0]|0)<<(A&7)>>>7&1;c[m>>2]=((A|0)<(c[r>>2]|0)&1)+A;c[k+68>>2]=B;do if(B){A=c[m>>2]|0;B=c[r>>2]|0;C=z+(A>>>3)|0;C=(ze(d[C>>0]|d[C+1>>0]<<8|d[C+2>>0]<<16|d[C+3>>0]<<24|0)|0)<<(A&7)>>>28;z=A+4|0;c[m>>2]=B>>>0>z>>>0?z:B;z=k+13044|0;a[z>>0]=C+1;C=c[m>>2]|0;B=c[r>>2]|0;A=(c[n>>2]|0)+(C>>>3)|0;A=(ze(d[A>>0]|d[A+1>>0]<<8|d[A+2>>0]<<16|d[A+3>>0]<<24|0)|0)<<(C&7)>>>28;C=C+4|0;c[m>>2]=B>>>0>C>>>0?C:B;a[k+13045>>0]=A+1;A=(qd(n)|0)+3|0;c[k+13048>>2]=A;c[k+13052>>2]=A+(qd(n)|0);z=d[z>>0]|0;A=c[o>>2]|0;if((z|0)>(A|0)){l=c[j>>2]|0;c[g>>2]=z;c[g+4>>2]=A;$a(l,16,4008,g);l=-1094995529;break a}else{B=c[m>>2]|0;C=(d[(c[n>>2]|0)+(B>>>3)>>0]|0)<<(B&7)>>>7&1;c[m>>2]=((B|0)<(c[r>>2]|0)&1)+B;a[k+13056>>0]=C;break}}while(0);c[k+2184>>2]=0;a[k+12942>>0]=0;a[k+13060>>0]=0;z=c[m>>2]|0;C=(d[(c[n>>2]|0)+(z>>>3)>>0]|0)<<(z&7)>>>7&1;c[m>>2]=((z|0)<(c[r>>2]|0)&1)+z;a[k+13061>>0]=C;c[k+160>>2]=0;c[k+164>>2]=1;C=c[m>>2]|0;z=c[n>>2]|0;D=d[z+(C>>>3)>>0]|0;A=c[r>>2]|0;B=((C|0)<(A|0)&1)+C|0;c[m>>2]=B;if((D&128>>>(C&7)|0)!=0?(D=d[z+(B>>>3)>>0]|0,t=((B|0)<(A|0)&1)+B+7|0,t=A>>>0>t>>>0?t:A,c[m>>2]=t,(D&128>>>(B&7)|0)!=0):0){C=(d[z+(t>>>3)>>0]|0)<<(t&7)>>>7&1;c[m>>2]=((t|0)<(A|0)&1)+t;c[k+13096>>2]=C;C=c[m>>2]|0;D=(d[z+(C>>>3)>>0]|0)<<(C&7)>>>7&1;c[m>>2]=((C|0)<(c[r>>2]|0)&1)+C;c[k+13100>>2]=D;D=c[m>>2]|0;C=(d[z+(D>>>3)>>0]|0)<<(D&7)>>>7&1;c[m>>2]=((D|0)<(c[r>>2]|0)&1)+D;c[k+13104>>2]=C;C=c[m>>2]|0;D=(d[z+(C>>>3)>>0]|0)<<(C&7)>>>7&1;c[m>>2]=((C|0)<(c[r>>2]|0)&1)+C;c[k+13108>>2]=D;D=c[m>>2]|0;C=d[z+(D>>>3)>>0]|0;A=c[r>>2]|0;t=((D|0)<(A|0)&1)+D|0;c[m>>2]=t;if(C&128>>>(D&7)){$a(c[j>>2]|0,24,4072,g);t=c[m>>2]|0;z=c[n>>2]|0;A=c[r>>2]|0}D=(d[z+(t>>>3)>>0]|0)<<(t&7)>>>7&1;c[m>>2]=((t|0)<(A|0)&1)+t;c[k+13112>>2]=D;D=c[m>>2]|0;C=d[z+(D>>>3)>>0]|0;t=c[r>>2]|0;A=((D|0)<(t|0)&1)+D|0;c[m>>2]=A;if(C&128>>>(D&7)){$a(c[j>>2]|0,24,4128,g);A=c[m>>2]|0;z=c[n>>2]|0;t=c[r>>2]|0}D=(d[z+(A>>>3)>>0]|0)<<(A&7)>>>7&1;c[m>>2]=((A|0)<(t|0)&1)+A;c[k+13116>>2]=D;D=c[m>>2]|0;C=d[z+(D>>>3)>>0]|0;c[m>>2]=((D|0)<(c[r>>2]|0)&1)+D;if(C&128>>>(D&7))$a(c[j>>2]|0,24,4192,g)}n=c[q>>2]|0;c[k+12>>2]=n;p=c[p>>2]|0;c[k+16>>2]=p;D=c[y>>2]|0;q=(c[x>>2]|0)+D|0;c[k+13080>>2]=q;C=D+ -1|0;c[k+13084>>2]=C;B=1<>q;c[k+13128>>2]=r;B=p+ -1+B>>q;c[k+13132>>2]=B;c[k+13136>>2]=$(B,r)|0;c[k+13140>>2]=n>>D;c[k+13144>>2]=p>>D;r=c[w>>2]|0;c[k+13148>>2]=n>>r;c[k+13152>>2]=p>>r;c[k+13156>>2]=n>>C;c[k+13160>>2]=p>>C;r=q-r|0;c[k+13164>>2]=(1<>2]=((c[o>>2]|0)*6|0)+ -48;D=(1<>>0>6){D=c[j>>2]|0;c[g>>2]=q;$a(D,16,4296,g);break}k=c[v>>2]|0;if(k>>>0>r>>>0){D=c[j>>2]|0;c[g>>2]=k;$a(D,16,4328,g);break}k=c[u>>2]|0;if(k>>>0>r>>>0){D=c[j>>2]|0;c[g>>2]=k;$a(D,16,4384,g);break}k=c[s>>2]|0;if(k>>>0>(q>>>0>5?5:q)>>>0){D=c[j>>2]|0;c[g>>2]=k;$a(D,16,4440,g);break}h=(c[h+216>>2]|0)-(c[m>>2]|0)|0;j=c[j>>2]|0;if((h|0)<0){c[g>>2]=0-h;$a(j,16,4488,g);break}if(c[j+680>>2]&4){c[g>>2]=0;c[g+4>>2]=n;c[g+8>>2]=p;c[g+12>>2]=n;c[g+16>>2]=p;c[g+20>>2]=4592;$a(j,48,4520,g)}g=b+252|0;h=c[g>>2]|0;do if(!h)h=0;else{D=c[f>>2]|0;if(qe(c[h+4>>2]|0,c[D+4>>2]|0,c[D+8>>2]|0)|0){h=0;break}_d(f);D=0;i=e;return D|0}while(0);do{j=b+(h<<2)+380|0;k=c[j>>2]|0;do if(k){if(c[c[k+4>>2]>>2]|0)break;_d(j)}while(0);h=h+1|0}while((h|0)!=256);h=c[g>>2]|0;do if(h){j=b+180|0;if((c[j>>2]|0)!=(c[h+4>>2]|0))break;C=b+1404|0;_d(C);D=Zd(c[g>>2]|0)|0;c[C>>2]=D;if(D)break;c[j>>2]=0}while(0);_d(g);c[g>>2]=c[f>>2];D=0;i=e;return D|0}$a(c[j>>2]|0,16,4256,g)}}}else l=-1094995529;while(0);_d(f);D=l;i=e;return D|0}function qd(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;e=c[a>>2]|0;f=a+8|0;g=c[f>>2]|0;a=c[a+16>>2]|0;l=e+(g>>>3)|0;l=(ze(d[l>>0]|d[l+1>>0]<<8|d[l+2>>0]<<16|d[l+3>>0]<<24|0)|0)<<(g&7);h=g+16|0;h=a>>>0>h>>>0?h:a;j=e+(h>>>3)|0;h=(ze(d[j>>0]|d[j+1>>0]<<8|d[j+2>>0]<<16|d[j+3>>0]<<24|0)|0)<<(h&7)>>>16|l&-65536;j=h>>>0>65535;h=j?l>>>16:h;j=j?16:0;if(h&65280){j=j|8;h=h>>>8}h=(d[7416+h>>0]|0)+j|0;j=31-h|0;l=0-g|0;k=a-g|0;if((j|0)>=(l|0))l=(k|0)<(j|0)?k:j;g=l+g|0;c[f>>2]=g;l=j+1|0;if(!l){l=0;l=l+ -1|0;i=b;return l|0}k=e+(g>>>3)|0;k=(ze(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0)<<(g&7);if((l|0)<26){l=g+l|0;c[f>>2]=a>>>0>l>>>0?l:a;l=k>>>h;l=l+ -1|0;i=b;return l|0}else{h=g+16|0;h=a>>>0>h>>>0?h:a;c[f>>2]=h;l=j+ -15|0;g=e+(h>>>3)|0;j=(ze(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0)<<(h&7)>>>(47-j|0);h=h+l|0;c[f>>2]=a>>>0>h>>>0?h:a;l=j|k>>>16<>2]|0;r=h+204|0;j=Td(1692)|0;c[m>>2]=j;if(!j){M=-12;i=e;return M|0}M=Vd(j,1692,6,0,0)|0;c[f>>2]=M;if(!M){Qd(m);M=-12;i=e;return M|0}k=b+4|0;$a(c[k>>2]|0,48,4600,g);a[(c[m>>2]|0)+53>>0]=1;j=c[m>>2]|0;c[j+44>>2]=1;c[j+48>>2]=1;a[j+52>>0]=1;a[(c[m>>2]|0)+57>>0]=0;j=c[m>>2]|0;c[j+60>>2]=0;c[j+64>>2]=0;a[j+1629>>0]=2;j=qd(r)|0;a:do if(j>>>0>255){M=c[k>>2]|0;c[g>>2]=j;$a(M,16,4616,g);g=-1094995529}else{l=qd(r)|0;q=c[m>>2]|0;c[q>>2]=l;if(l>>>0>31){M=c[k>>2]|0;c[g>>2]=l;$a(M,16,4648,g);g=-1094995529;break}n=c[b+(l<<2)+252>>2]|0;if(!n){M=c[k>>2]|0;c[g>>2]=l;$a(M,16,4680,g);g=-1094995529;break}n=c[n+4>>2]|0;l=h+212|0;K=c[l>>2]|0;M=d[(c[r>>2]|0)+(K>>>3)>>0]<<(K&7)>>>7&1;s=h+220|0;c[l>>2]=((K|0)<(c[s>>2]|0)&1)+K;a[q+41>>0]=M;M=c[l>>2]|0;K=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+39>>0]=K;K=c[l>>2]|0;M=c[s>>2]|0;q=c[r>>2]|0;L=q+(K>>>3)|0;L=(ze(d[L>>0]|d[L+1>>0]<<8|d[L+2>>0]<<16|d[L+3>>0]<<24|0)|0)<<(K&7)>>>29;K=K+3|0;c[l>>2]=M>>>0>K>>>0?K:M;M=c[m>>2]|0;c[M+1624>>2]=L;L=c[l>>2]|0;q=d[q+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[M+4>>0]=q;M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+5>>0]=q;q=(qd(r)|0)+1|0;c[(c[m>>2]|0)+8>>2]=q;q=(qd(r)|0)+1|0;c[(c[m>>2]|0)+12>>2]=q;q=qd(r)|0;if(!(q&1))q=0-(q>>>1)|0;else q=(q+1|0)>>>1;M=c[m>>2]|0;c[M+16>>2]=q;K=c[l>>2]|0;L=d[(c[r>>2]|0)+(K>>>3)>>0]<<(K&7)>>>7&1;c[l>>2]=((K|0)<(c[s>>2]|0)&1)+K;a[M+20>>0]=L;M=c[l>>2]|0;L=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+21>>0]=L;L=c[l>>2]|0;M=d[(c[r>>2]|0)+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[(c[m>>2]|0)+22>>0]=M;M=c[m>>2]|0;c[M+24>>2]=0;if(a[M+22>>0]|0){M=qd(r)|0;c[(c[m>>2]|0)+24>>2]=M}q=qd(r)|0;if(!(q&1))q=0-(q>>>1)|0;else q=(q+1|0)>>>1;c[(c[m>>2]|0)+28>>2]=q;if((q+12|0)>>>0>24){M=c[k>>2]|0;c[g>>2]=q;$a(M,16,4704,g);g=-1094995529;break}q=qd(r)|0;if(!(q&1))t=0-(q>>>1)|0;else t=(q+1|0)>>>1;q=c[m>>2]|0;c[q+32>>2]=t;if((t+12|0)>>>0>24){M=c[k>>2]|0;c[g>>2]=t;$a(M,16,4744,g);g=-1094995529;break}L=c[l>>2]|0;M=d[(c[r>>2]|0)+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[q+36>>0]=M;M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+37>>0]=q;q=c[l>>2]|0;M=d[(c[r>>2]|0)+(q>>>3)>>0]<<(q&7)>>>7&1;c[l>>2]=((q|0)<(c[s>>2]|0)&1)+q;a[(c[m>>2]|0)+38>>0]=M;M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+40>>0]=q;q=c[l>>2]|0;M=d[(c[r>>2]|0)+(q>>>3)>>0]<<(q&7)>>>7&1;c[l>>2]=((q|0)<(c[s>>2]|0)&1)+q;a[(c[m>>2]|0)+42>>0]=M;M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+43>>0]=q;q=c[m>>2]|0;do if(a[q+42>>0]|0){t=(qd(r)|0)+1|0;c[(c[m>>2]|0)+44>>2]=t;t=qd(r)|0;u=t+1|0;v=c[m>>2]|0;c[v+48>>2]=u;q=c[v+44>>2]|0;if((q|0)!=0?(q|0)<(c[n+13120>>2]|0):0){if((u|0)!=0?(u|0)<(c[n+13124>>2]|0):0){if(q>>>0>536870910)q=0;else{q=Nd(q<<2)|0;v=c[m>>2]|0}c[v+1648>>2]=q;q=c[m>>2]|0;t=c[q+48>>2]|0;if(t>>>0>536870910)t=0;else{t=Nd(t<<2)|0;q=c[m>>2]|0}c[q+1652>>2]=t;q=c[m>>2]|0;if(!(c[q+1648>>2]|0)){g=-12;break a}if(!(c[q+1652>>2]|0)){g=-12;break a}M=c[l>>2]|0;t=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[q+52>>0]=t;t=c[m>>2]|0;do if(!(a[t+52>>0]|0)){v=(c[t+44>>2]|0)+ -1|0;if((v|0)>0){u=0;q=0;w=0;do{v=(qd(r)|0)+1|0;t=c[m>>2]|0;c[(c[t+1648>>2]|0)+(w<<2)>>2]=v;u=ue(v|0,0,u|0,q|0)|0;q=D;w=w+1|0;v=(c[t+44>>2]|0)+ -1|0}while((w|0)<(v|0))}else{q=0;u=0}w=c[n+13128>>2]|0;x=((w|0)<0)<<31>>31;if(!(q>>>0>>0|(q|0)==(x|0)&u>>>0>>0)){$a(c[k>>2]|0,16,4872,g);g=-1094995529;break a}M=te(w|0,x|0,u|0,q|0)|0;c[(c[t+1648>>2]|0)+(v<<2)>>2]=M;v=(c[t+48>>2]|0)+ -1|0;if((v|0)>0){u=0;q=0;w=0;do{v=(qd(r)|0)+1|0;t=c[m>>2]|0;c[(c[t+1652>>2]|0)+(w<<2)>>2]=v;u=ue(v|0,0,u|0,q|0)|0;q=D;w=w+1|0;v=(c[t+48>>2]|0)+ -1|0}while((w|0)<(v|0))}else{q=0;u=0}w=c[n+13132>>2]|0;x=((w|0)<0)<<31>>31;if(q>>>0>>0|(q|0)==(x|0)&u>>>0>>0){M=te(w|0,x|0,u|0,q|0)|0;c[(c[t+1652>>2]|0)+(v<<2)>>2]=M;break}else{$a(c[k>>2]|0,16,4896,g);g=-1094995529;break a}}while(0);M=c[l>>2]|0;q=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[t+53>>0]=q;q=c[m>>2]|0;break}M=c[k>>2]|0;c[g>>2]=t;$a(M,16,4832,g);g=-1094995529;break a}M=c[k>>2]|0;c[g>>2]=q+ -1;$a(M,16,4784,g);g=-1094995529;break a}while(0);t=c[l>>2]|0;M=d[(c[r>>2]|0)+(t>>>3)>>0]<<(t&7)>>>7&1;c[l>>2]=((t|0)<(c[s>>2]|0)&1)+t;a[q+54>>0]=M;M=c[l>>2]|0;t=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+55>>0]=t;t=c[m>>2]|0;if(a[t+55>>0]|0){L=c[l>>2]|0;M=d[(c[r>>2]|0)+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[t+56>>0]=M;M=c[l>>2]|0;t=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+57>>0]=t;t=c[m>>2]|0;if(!(a[t+57>>0]|0)){q=qd(r)|0;if(!(q&1))q=0-(q>>>1)|0;else q=(q+1|0)>>>1;c[(c[m>>2]|0)+60>>2]=q<<1;q=qd(r)|0;if(!(q&1))q=0-(q>>>1)|0;else q=(q+1|0)>>>1;q=q<<1;t=c[m>>2]|0;c[t+64>>2]=q;u=c[t+60>>2]|0;if((u+13|0)>>>0>26){M=c[k>>2]|0;c[g>>2]=(u|0)/2|0;$a(M,16,4920,g);g=-1094995529;break}if((q+13|0)>>>0>26){M=c[k>>2]|0;c[g>>2]=(q|0)/2|0;$a(M,16,4960,g);g=-1094995529;break}}}M=c[l>>2]|0;u=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[t+68>>0]=u;u=c[m>>2]|0;if(a[u+68>>0]|0){v=0;do{q=u+(v<<6)+69|0;t=q+16|0;do{a[q>>0]=16;q=q+1|0}while((q|0)<(t|0));a[u+v+1605>>0]=16;a[u+v+1611>>0]=16;v=v+1|0}while((v|0)!=6);q=u+453|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+517|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+581|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+645|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+709|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+773|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+837|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+901|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+965|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1029|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1093|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1157|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1221|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1285|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1349|0;v=5240;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1413|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1477|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=u+1541|0;v=5304;t=q+64|0;do{a[q>>0]=a[v>>0]|0;q=q+1|0;v=v+1|0}while((q|0)<(t|0));q=c[m>>2]|0;F=c[p>>2]|0;C=F+204|0;E=F+212|0;F=F+220|0;B=0;b:do{u=(B|0)>0?64:16;A=(B|0)>1;z=B+ -2|0;t=(B|0)==3?3:1;w=1<<(B<<1)+4;x=(w|0)>0;y=(B|0)==0;w=(w|0)<64?w:64;v=0;do{M=c[E>>2]|0;L=d[(c[C>>2]|0)+(M>>>3)>>0]|0;c[E>>2]=((M|0)<(c[F>>2]|0)&1)+M;do if(!(L&128>>>(M&7))){G=qd(C)|0;if(!G)break;if(v>>>0>>0){o=88;break b}G=v-G|0;xe(q+(B*384|0)+(v<<6)+69|0,q+(B*384|0)+(G<<6)+69|0,u|0)|0;if(!A)break;a[q+(z*6|0)+v+1605>>0]=a[q+(z*6|0)+G+1605>>0]|0}else{if(A){G=qd(C)|0;if(!(G&1))G=0-(G>>>1)|0;else G=(G+1|0)>>>1;I=G+8|0;a[q+(z*6|0)+v+1605>>0]=I}else I=8;if(x)G=0;else break;do{if(y)H=(d[48+G>>0]<<2)+(d[32+G>>0]|0)|0;else H=(d[128+G>>0]<<3)+(d[64+G>>0]|0)|0;J=qd(C)|0;if(!(J&1))J=0-(J>>>1)|0;else J=(J+1|0)>>>1;I=(I+256+J|0)%256|0;a[q+(B*384|0)+(v<<6)+H+69>>0]=I;G=G+1|0}while((G|0)!=(w|0))}while(0);v=v+t|0}while((v|0)<6);B=B+1|0}while((B|0)<4);if((o|0)==88){M=c[k>>2]|0;c[g>>2]=G;$a(M,16,5192,g);g=-1094995529;break}if((c[n+4>>2]|0)==3){t=0;do{a[q+t+1285>>0]=a[q+t+901>>0]|0;a[q+t+1349>>0]=a[q+t+965>>0]|0;a[q+t+1477>>0]=a[q+t+1093>>0]|0;a[q+t+1541>>0]=a[q+t+1157>>0]|0;t=t+1|0}while((t|0)!=64);a[q+1612>>0]=a[q+1606>>0]|0;a[q+1613>>0]=a[q+1607>>0]|0;a[q+1615>>0]=a[q+1609>>0]|0;a[q+1616>>0]=a[q+1610>>0]|0}}M=c[l>>2]|0;t=d[(c[r>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;c[l>>2]=((M|0)<(c[s>>2]|0)&1)+M;a[(c[m>>2]|0)+1617>>0]=t;t=qd(r)|0;M=t+2|0;u=c[m>>2]|0;c[u+1620>>2]=M;q=n+13080|0;if(M>>>0>(c[q>>2]|0)>>>0){M=c[k>>2]|0;c[g>>2]=t;$a(M,16,5e3,g);g=-1094995529;break}L=c[l>>2]|0;M=d[(c[r>>2]|0)+(L>>>3)>>0]<<(L&7)>>>7&1;c[l>>2]=((L|0)<(c[s>>2]|0)&1)+L;a[u+1628>>0]=M;M=c[l>>2]|0;r=c[r>>2]|0;L=d[r+(M>>>3)>>0]|0;t=c[s>>2]|0;s=((M|0)<(t|0)&1)+M|0;c[l>>2]=s;do if((L&128>>>(M&7)|0)!=0?(M=d[r+(s>>>3)>>0]|0,L=((s|0)<(t|0)&1)+s+7|0,c[l>>2]=t>>>0>L>>>0?L:t,(M&128>>>(s&7)|0)!=0):0){r=c[m>>2]|0;s=c[p>>2]|0;p=s+204|0;if(a[r+21>>0]|0)a[r+1629>>0]=(qd(p)|0)+2;L=s+212|0;M=c[L>>2]|0;K=d[(c[p>>2]|0)+(M>>>3)>>0]<<(M&7)>>>7&1;J=s+220|0;c[L>>2]=((M|0)<(c[J>>2]|0)&1)+M;a[r+1630>>0]=K;K=c[L>>2]|0;M=d[(c[p>>2]|0)+(K>>>3)>>0]<<(K&7)>>>7&1;c[L>>2]=((K|0)<(c[J>>2]|0)&1)+K;M=M&255;a[r+1631>>0]=M;if(M<<24>>24){a[r+1632>>0]=qd(p)|0;M=qd(p)|0;t=r+1633|0;a[t>>0]=M;if((M&255)>>>0<5)s=0;else{$a(c[k>>2]|0,16,5088,g);break}while(1){u=qd(p)|0;if(!(u&1))u=0-(u>>>1)|0;else u=(u+1|0)>>>1;M=u&255;a[r+s+1634>>0]=M;if(M<<24>>24)$a(c[k>>2]|0,24,5152,g);u=qd(p)|0;if(!(u&1))u=0-(u>>>1)|0;else u=(u+1|0)>>>1;M=u&255;a[r+s+1639>>0]=M;if(M<<24>>24)$a(c[k>>2]|0,24,5152,g);if((s|0)<(d[t>>0]|0))s=s+1|0;else break}}a[r+1644>>0]=qd(p)|0;a[r+1645>>0]=qd(p)|0}while(0);p=c[m>>2]|0;r=(c[p+44>>2]|0)+1|0;if(r>>>0>536870910)r=0;else{r=Nd(r<<2)|0;p=c[m>>2]|0}c[p+1656>>2]=r;p=c[m>>2]|0;r=(c[p+48>>2]|0)+1|0;if(r>>>0>536870910)r=0;else{r=Nd(r<<2)|0;p=c[m>>2]|0}c[p+1660>>2]=r;p=n+13128|0;r=c[p>>2]|0;if(r>>>0>536870910)r=0;else r=Nd(r<<2)|0;c[(c[m>>2]|0)+1664>>2]=r;s=c[m>>2]|0;r=c[s+1656>>2]|0;if(!r){g=-12;break}if(!(c[s+1660>>2]|0)){g=-12;break}if(!(c[s+1664>>2]|0)){g=-12;break}if(a[s+52>>0]|0){u=c[s+1648>>2]|0;if(!u){r=c[s+44>>2]|0;if(r>>>0>536870910)r=0;else{r=Nd(r<<2)|0;s=c[m>>2]|0}c[s+1648>>2]=r;r=c[m>>2]|0;s=c[r+48>>2]|0;if(s>>>0>536870910)s=0;else{s=Nd(s<<2)|0;r=c[m>>2]|0}c[r+1652>>2]=s;s=c[m>>2]|0;u=c[s+1648>>2]|0;if(!u){g=-12;break}}r=c[s+1652>>2]|0;if(!r){g=-12;break}t=s+44|0;w=c[t>>2]|0;if((w|0)>0){v=0;do{M=v;v=v+1|0;L=c[p>>2]|0;c[u+(M<<2)>>2]=(($(L,v)|0)/(w|0)|0)-(($(L,M)|0)/(w|0)|0);w=c[t>>2]|0}while((v|0)<(w|0))}t=s+48|0;v=c[t>>2]|0;if((v|0)>0){u=n+13132|0;w=0;do{M=w;w=w+1|0;L=c[u>>2]|0;c[r+(M<<2)>>2]=(($(L,w)|0)/(v|0)|0)-(($(L,M)|0)/(v|0)|0);v=c[t>>2]|0}while((w|0)<(v|0))}r=c[s+1656>>2]|0}c[r>>2]=0;w=s+44|0;if((c[w>>2]|0)>0){v=c[s+1648>>2]|0;u=0;t=0;do{u=(c[v+(t<<2)>>2]|0)+u|0;t=t+1|0;c[r+(t<<2)>>2]=u}while((t|0)<(c[w>>2]|0))}w=c[s+1660>>2]|0;c[w>>2]=0;t=s+48|0;if((c[t>>2]|0)>0){u=c[s+1652>>2]|0;x=0;v=0;do{x=(c[u+(v<<2)>>2]|0)+x|0;v=v+1|0;c[w+(v<<2)>>2]=x}while((v|0)<(c[t>>2]|0))}t=c[p>>2]|0;if((t|0)>0){u=c[s+1664>>2]|0;v=0;w=0;do{w=(v>>>0>(c[r+(w<<2)>>2]|0)>>>0&1)+w|0;c[u+(v<<2)>>2]=w;v=v+1|0;t=c[p>>2]|0}while((v|0)<(t|0))}v=$(c[n+13132>>2]|0,t)|0;if(v>>>0>536870910){c[s+1668>>2]=0;c[(c[m>>2]|0)+1672>>2]=0;r=0}else{r=v<<2;M=Nd(r)|0;c[(c[m>>2]|0)+1668>>2]=M;M=Nd(r)|0;c[(c[m>>2]|0)+1672>>2]=M;r=Nd(r)|0}c[(c[m>>2]|0)+1676>>2]=r;r=n+13164|0;s=(c[r>>2]|0)+2|0;s=$(s,s)|0;if(s>>>0>536870910)s=0;else s=Nd(s<<2)|0;c[(c[m>>2]|0)+1688>>2]=s;s=c[m>>2]|0;t=c[s+1668>>2]|0;if(!t){g=-12;break}F=c[s+1672>>2]|0;if(!F){g=-12;break}u=c[s+1676>>2]|0;if(!u){g=-12;break}if(!(c[s+1688>>2]|0)){g=-12;break}if((v|0)>0){G=s+44|0;y=s+48|0;A=c[s+1660>>2]|0;z=c[s+1648>>2]|0;B=c[s+1656>>2]|0;x=s+1652|0;E=0;do{H=c[p>>2]|0;w=(E|0)%(H|0)|0;C=(E|0)/(H|0)|0;K=c[G>>2]|0;I=0;while(1){if((I|0)>=(K|0)){I=0;break}J=I+1|0;if(w>>>0<(c[B+(J<<2)>>2]|0)>>>0)break;else I=J}L=c[y>>2]|0;J=0;while(1){if((J|0)>=(L|0)){J=0;break}K=J+1|0;if(C>>>0<(c[A+(K<<2)>>2]|0)>>>0)break;else J=K}if((I|0)>0){L=c[(c[x>>2]|0)+(J<<2)>>2]|0;K=0;M=0;do{M=($(c[z+(K<<2)>>2]|0,L)|0)+M|0;K=K+1|0}while((K|0)!=(I|0))}else M=0;if((J|0)>0){K=c[x>>2]|0;L=0;do{M=($(c[K+(L<<2)>>2]|0,H)|0)+M|0;L=L+1|0}while((L|0)!=(J|0))}L=$(c[z+(I<<2)>>2]|0,C-(c[A+(J<<2)>>2]|0)|0)|0;M=M+w+L-(c[B+(I<<2)>>2]|0)|0;c[t+(E<<2)>>2]=M;c[F+(M<<2)>>2]=E;E=E+1|0}while((E|0)!=(v|0))}else y=s+48|0;B=c[y>>2]|0;if((B|0)>0){w=s+44|0;v=s+1660|0;x=s+1656|0;F=c[w>>2]|0;z=0;C=0;while(1){A=z;z=z+1|0;if((F|0)>0){B=c[v>>2]|0;E=B+(z<<2)|0;L=c[E>>2]|0;H=F;F=0;while(1){J=c[B+(A<<2)>>2]|0;G=F;F=F+1|0;if(J>>>0>>0){H=c[x>>2]|0;I=H+(F<<2)|0;K=c[I>>2]|0;do{M=c[H+(G<<2)>>2]|0;if(M>>>0>>0){do{c[u+(c[t+(($(c[p>>2]|0,J)|0)+M<<2)>>2]<<2)>>2]=C;M=M+1|0;K=c[I>>2]|0}while(M>>>0>>0);L=c[E>>2]|0}J=J+1|0}while(J>>>0>>0);G=c[w>>2]|0}else G=H;C=C+1|0;if((F|0)>=(G|0))break;else H=G}A=c[y>>2]|0;F=G}else A=B;if((z|0)>=(A|0))break;else B=A}if(C>>>0>536870910)t=0;else o=182}else{C=0;o=182}if((o|0)==182){t=Nd(C<<2)|0;s=c[m>>2]|0}c[s+1680>>2]=t;o=c[m>>2]|0;u=c[o+1680>>2]|0;if(!u){g=-12;break}t=o+48|0;x=c[t>>2]|0;if((x|0)>0){s=o+44|0;w=c[s>>2]|0;v=0;do{if((w|0)>0){x=c[o+1660>>2]|0;y=c[o+1656>>2]|0;z=0;do{M=$(c[p>>2]|0,c[x+(v<<2)>>2]|0)|0;c[u+(($(w,v)|0)+z<<2)>>2]=(c[y+(z<<2)>>2]|0)+M;z=z+1|0;w=c[s>>2]|0}while((z|0)<(w|0));x=c[t>>2]|0}v=v+1|0}while((v|0)<(x|0))}n=(c[q>>2]|0)-(c[n+13072>>2]|0)|0;y=c[r>>2]|0;c[o+1684>>2]=(c[o+1688>>2]|0)+(y+3<<2);s=y+2|0;if((s|0)>0){o=c[(c[m>>2]|0)+1688>>2]|0;q=0;do{c[o+(($(s,q)|0)<<2)>>2]=-1;c[o+(q<<2)>>2]=-1;q=q+1|0;y=c[r>>2]|0;s=y+2|0}while((q|0)<(s|0))}if((y|0)>-1){o=c[m>>2]|0;m=o+1668|0;q=n<<1;s=(n|0)>0;o=o+1684|0;t=0;while(1){c:do if((y|0)>-1){w=t>>n;v=c[m>>2]|0;u=c[o>>2]|0;x=0;while(1){C=c[v+(($(c[p>>2]|0,w)|0)+(x>>n)<<2)>>2]<>2]=C;y=c[r>>2]|0;if((x|0)>=(y|0))break c;x=x+1|0}}while(0);if((t|0)<(y|0))t=t+1|0;else break}}h=(c[h+216>>2]|0)-(c[l>>2]|0)|0;if((h|0)<0){M=c[k>>2]|0;c[g>>2]=0-h;$a(M,16,5056,g);g=0;break}M=b+(j<<2)+380|0;_d(M);c[M>>2]=c[f>>2];M=0;i=e;return M|0}while(0);_d(f);M=g;i=e;return M|0}function sd(a,b){a=a|0;b=b|0;var d=0;a=i;i=i+16|0;d=a;c[d>>2]=b;Qd(b+1648|0);Qd(b+1652|0);Qd(b+1656|0);Qd(b+1660|0);Qd(b+1664|0);Qd(b+1668|0);Qd(b+1672|0);Qd(b+1680|0);Qd(b+1676|0);Qd(b+1688|0);Qd(d);i=a;return}function td(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;b=i;i=i+16|0;f=b;h=a+136|0;e=a+4|0;g=a+3480|0;m=c[h>>2]|0;while(1){$a(c[e>>2]|0,48,5368,f);k=m+212|0;j=m+220|0;l=c[j>>2]|0;m=c[m+204>>2]|0;o=c[k>>2]|0;n=0;do{p=m+(o>>>3)|0;p=(ze(d[p>>0]|d[p+1>>0]<<8|d[p+2>>0]<<16|d[p+3>>0]<<24|0)|0)<<(o&7)>>>24;o=o+8|0;o=l>>>0>o>>>0?o:l;c[k>>2]=o;n=p+n|0}while((p|0)==255);p=0;do{q=m+(o>>>3)|0;q=(ze(d[q>>0]|d[q+1>>0]<<8|d[q+2>>0]<<16|d[q+3>>0]<<24|0)|0)<<(o&7)>>>24;r=o+8|0;o=l>>>0>r>>>0?r:l;c[k>>2]=o;p=q+p|0}while((q|0)==255);do if((c[g>>2]|0)==39)if((n|0)==256){ud(a);break}else{r=c[e>>2]|0;c[f>>2]=n;$a(r,48,5384,f);r=c[j>>2]|0;q=(c[k>>2]|0)+(p<<3)|0;c[k>>2]=r>>>0>q>>>0?q:r;break}else if((n|0)==132){ud(a);break}else{r=c[e>>2]|0;c[f>>2]=n;$a(r,48,5408,f);r=c[j>>2]|0;q=(c[k>>2]|0)+(p<<3)|0;c[k>>2]=r>>>0>q>>>0?q:r;break}while(0);m=c[h>>2]|0;j=c[m+212>>2]|0;if(((c[m+216>>2]|0)-j|0)<=0){a=14;break}r=(c[m+204>>2]|0)+(j>>>3)|0;if(((ze(d[r>>0]|d[r+1>>0]<<8|d[r+2>>0]<<16|d[r+3>>0]<<24|0)|0)<<(j&7)&-16777216|0)==-2147483648){a=14;break}}if((a|0)==14){i=b;return 1}return 0}function ud(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=i;h=c[b+136>>2]|0;f=h+212|0;l=c[f>>2]|0;g=h+220|0;j=c[g>>2]|0;h=h+204|0;k=(c[h>>2]|0)+(l>>>3)|0;k=(ze(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0)<<(l&7)>>>24;l=l+8|0;c[f>>2]=j>>>0>l>>>0?l:j;j=b+7744|0;l=0;do{if(!k){a[j>>0]=1;m=0;do{p=c[f>>2]|0;o=c[g>>2]|0;n=(c[h>>2]|0)+(p>>>3)|0;n=(ze(d[n>>0]|d[n+1>>0]<<8|d[n+2>>0]<<16|d[n+3>>0]<<24|0)|0)<<(p&7)>>>24;p=p+8|0;c[f>>2]=o>>>0>p>>>0?p:o;a[b+(l<<4)+m+7696>>0]=n;m=m+1|0}while((m|0)!=16)}else if((k|0)==1){p=c[g>>2]|0;o=(c[f>>2]|0)+16|0;c[f>>2]=p>>>0>o>>>0?o:p}else if((k|0)==2){p=c[g>>2]|0;o=(c[f>>2]|0)+32|0;c[f>>2]=p>>>0>o>>>0?o:p}l=l+1|0}while((l|0)!=3);i=e;return}function vd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=i;f=c[b+52>>2]|0;e=a+60|0;if((f|0)>0){if((c[e>>2]|0)==0?(f=Td(f)|0,c[e>>2]=f,(f|0)==0):0){f=-12;i=d;return f|0}}else c[e>>2]=0;f=a+12|0;c[f>>2]=b;c[a+424>>2]=0;c[a+800>>2]=1;h=a+912|0;g=a+936|0;c[h+0>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[g>>2]=0;c[g+4>>2]=-2147483648;g=a+928|0;c[g>>2]=0;c[g+4>>2]=-2147483648;a=La[c[b+76>>2]&7](a)|0;if((a|0)>=0){h=0;i=d;return h|0}Qd(e);c[f>>2]=0;h=a;i=d;return h|0}function wd(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;if(!a){i=b;return 0}e=a+12|0;f=c[e>>2]|0;if((f|0)!=0?(d=c[f+92>>2]|0,(d|0)!=0):0)La[d&7](a)|0;c[a+796>>2]=0;Qd(a+60|0);c[e>>2]=0;c[a+808>>2]=0;i=b;return 0}function xd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;if((f|0)<=0){i=h;return 0}j=(e|0)==0;k=0;do{l=d+($(k,g)|0)|0;l=Qa[b&1](a,l)|0;if(!j)c[e+(k<<2)>>2]=l;k=k+1|0}while((k|0)!=(f|0));i=h;return 0}function yd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;if((f|0)<=0){i=g;return 0}h=(e|0)==0;j=0;do{k=Oa[b&1](a,d,j,0)|0;if(!h)c[e+(j<<2)>>2]=k;j=j+1|0}while((j|0)!=(f|0));i=g;return 0}function zd(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;h=ke(c[f+76>>2]|0)|0;b=h+4|0;if(!(a[b>>0]|0)){p=0;i=g;return p|0}k=f+64|0;l=h+5|0;m=f+68|0;n=h+6|0;j=0;while(1){p=($((((e[h+(j<<1)+8>>1]|0)>>>11&15)+8|0)>>>3,c[k>>2]|0)|0)+31&-32;if((j+ -1|0)>>>0<2){p=0-(0-p>>d[l>>0])|0;c[f+(j<<2)+32>>2]=p;o=0-(0-((c[m>>2]|0)+31&-32)>>d[n>>0])|0}else{c[f+(j<<2)+32>>2]=p;o=(c[m>>2]|0)+31&-32}o=Xd(($(p,o)|0)+32|0)|0;c[f+(j<<2)+304>>2]=o;if(!o){b=-1;f=8;break}c[f+(j<<2)>>2]=c[o+4>>2];j=j+1|0;if((j|0)>=(d[b>>0]|0)){b=0;f=8;break}}if((f|0)==8){i=g;return b|0}return 0}function Ad(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;ve(a|0,0,976)|0;e=(b|0)!=0;if(e){c[a+8>>2]=c[b+8>>2];c[a+48>>2]=c[b+12>>2]}else c[a+8>>2]=-1;c[a+100>>2]=0;c[a+104>>2]=1;c[a+888>>2]=0;c[a+892>>2]=1;c[a+896>>2]=0;c[a+900>>2]=1;c[a+476>>2]=1;c[a+816>>2]=1;c[a+820>>2]=1;c[a+220>>2]=0;c[a+224>>2]=1;c[a+136>>2]=-1;c[a+416>>2]=-1;g=a+696|0;c[g>>2]=0;c[g+4>>2]=-2147483648;if((e?(f=c[b+52>>2]|0,(f|0)!=0):0)?(g=Td(f)|0,c[a+60>>2]=g,(g|0)==0):0){g=-12;i=d;return g|0}g=0;i=d;return g|0}function Bd(a){a=a|0;var b=0,c=0;b=i;c=Nd(976)|0;if(c){if((Ad(c,a)|0)<0){Pd(c);c=0}}else c=0;i=b;return c|0}function Cd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+96|0;h=f+80|0;g=f;k=g+0|0;j=e+0|0;l=k+80|0;do{c[k>>2]=c[j>>2];k=k+4|0;j=j+4|0}while((k|0)<(l|0));j=a+12|0;k=c[j>>2]|0;if(!k){l=-22;i=f;return l|0}if(c[k+8>>2]|0){$a(a,16,5432,h);l=-22;i=f;return l|0}c[d>>2]=0;he(b);h=c[j>>2]|0;if(((c[h+16>>2]&32|0)==0?(c[e+28>>2]|0)==0:0)?(c[a+808>>2]&1|0)==0:0){l=0;i=f;return l|0}g=Oa[c[h+88>>2]&1](a,b,d,g)|0;if(!(c[d>>2]|0)){he(b);l=g;i=f;return l|0}else{l=a+424|0;c[l>>2]=(c[l>>2]|0)+1;l=g;i=f;return l|0}return 0}function Dd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function Ed(a,b){a=a|0;b=b|0;return 0}function Fd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+16|0;f=e;g=a+8|0;do if(!(c[g>>2]|0)){j=c[a+136>>2]|0;if((j|0)<0){$a(a,16,5488,f);d=-22;break}k=b+64|0;h=b+68|0;if((c[k>>2]|0)>=1?(c[h>>2]|0)>=1:0)h=1;else{n=c[a+116>>2]|0;m=a+792|0;l=0-(0-(c[a+124>>2]|0)>>c[m>>2])|0;c[k>>2]=(n|0)>(l|0)?n:l;l=c[a+120>>2]|0;k=0-(0-(c[a+128>>2]|0)>>c[m>>2])|0;c[h>>2]=(l|0)>(k|0)?l:k;h=0}c[b+76>>2]=j;j=h;h=8}else{j=1;h=8}while(0);do if((h|0)==8){d=Ea[c[a+476>>2]&1](a,b,d)|0;if(!(c[g>>2]|j)){c[b+64>>2]=c[a+116>>2];c[b+68>>2]=c[a+120>>2]}if((d|0)<0)break;else{n=d;i=e;return n|0}}while(0);$a(a,16,5464,f);n=d;i=e;return n|0}function Gd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;c[b+4>>2]=a;a=Fd(a,c[b>>2]|0,d)|0;i=e;return a|0}function Hd(a,b){a=a|0;b=b|0;a=i;b=c[b>>2]|0;if(b)he(b);i=a;return}function Id(a){a=a|0;return}function Jd(a,b,c){a=a|0;b=b|0;c=c|0;return}function Kd(a){a=a|0;var b=0,d=0;b=i;d=a+8|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+16|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+64|0;c[d>>2]=-1;c[d+4>>2]=-1;d=a+72|0;c[d>>2]=0;c[d+4>>2]=0;d=a+32|0;c[a>>2]=0;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;i=b;return}function Ld(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;g=a+16|0;c[a+12>>2]=b;c[a+20>>2]=b+e;h=b+1|0;c[g>>2]=h;e=(d[b>>0]|0)<<18;c[a>>2]=e;f=b+2|0;c[g>>2]=f;e=(d[h>>0]|0)<<10|e;c[a>>2]=e;c[g>>2]=b+3;c[a>>2]=(d[f>>0]|0)<<2|e|2;c[a+4>>2]=510;return}function Md(){var b=0,e=0,f=0,g=0,h=0,j=0;b=i;if(!(c[1384]|0))e=0;else{i=b;return}while(1)if(e){g=(e&65280|0)==0;a[5544+e>>0]=(g?8:0)-(d[7416+(g?e:e>>>8)>>0]|0);e=e+1|0;if((e|0)==512){e=0;break}else continue}else{a[5544]=9;e=1;continue}while(1){f=e<<1;g=0;do{j=a[6888+(e<<2)+g>>0]|0;h=(g<<7)+f|0;a[(h|1)+6056>>0]=j;a[h+6056>>0]=j;g=g+1|0}while((g|0)!=4);j=(d[7144+e>>0]|0)<<1;a[f+6696>>0]=j;a[f+6697>>0]=j|1;if(e){h=(d[7208+e>>0]|0)<<1;j=128-f|0;a[j+6567>>0]=h;a[j+6566>>0]=h|1;e=e+1|0;if((e|0)==64)break;else continue}else{e=128-f|0;a[e+6567>>0]=1;a[e+6566>>0]=0;e=1;continue}}g=6824|0;f=7272|0;e=g+63|0;do{a[g>>0]=a[f>>0]|0;g=g+1|0;f=f+1|0}while((g|0)<(e|0));c[1384]=1;i=b;return}function Nd(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[1834]|0;if((d+ -32|0)>>>0>=a>>>0){e=le(a)|0;if((e|0)==0&(a|0)==0)if((d|0)==32)e=0;else e=le(1)|0}else e=0;i=b;return e|0}function Od(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;f=$(d,b)|0;if((d|b)>>>0>65535&(d|0)!=0?((f>>>0)/(d>>>0)|0|0)!=(b|0):0){me(a);d=0;i=e;return d|0}if(((c[1834]|0)+ -32|0)>>>0>>0)b=0;else b=ne(a,((f|0)==0&1)+f|0)|0;if((b|0)!=0|(f|0)==0){d=b;i=e;return d|0}me(a);d=0;i=e;return d|0}function Pd(a){a=a|0;var b=0;b=i;me(a);i=b;return}function Qd(a){a=a|0;var b=0;b=i;me(c[a>>2]|0);c[a>>2]=0;i=b;return}function Rd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if(((d|0)!=0?(2147483647/(d>>>0)|0)>>>0>b>>>0:0)?(f=$(d,b)|0,((c[1834]|0)+ -32|0)>>>0>=f>>>0):0)a=ne(a,((f|0)==0&1)+f|0)|0;else a=0;i=e;return a|0}function Sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=i;e=Od(c[a>>2]|0,b,d)|0;c[a>>2]=e;i=f;return((e|0)!=0|(b|0)==0|(d|0)==0?0:-12)|0}function Td(a){a=a|0;var b=0,c=0;c=i;b=Nd(a)|0;if(b)ve(b|0,0,a|0)|0;i=c;return b|0}function Ud(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;if((c[b>>2]|0)>>>0>d>>>0){i=e;return}f=((d*17|0)>>>4)+32|0;d=f>>>0>d>>>0?f:d;me(c[a>>2]|0);f=Nd(d)|0;c[a>>2]=f;c[b>>2]=(f|0)==0?0:d;i=e;return}function Vd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g;j=Td(24)|0;c[h>>2]=j;if(!j){f=0;i=g;return f|0}c[j>>2]=a;c[j+4>>2]=b;c[j+12>>2]=(d|0)!=0?d:7;c[j+16>>2]=e;c[j+8>>2]=1;if(f&1){f=(c[h>>2]|0)+20|0;c[f>>2]=c[f>>2]|1}j=Td(12)|0;if(!j){Qd(h);f=0;i=g;return f|0}else{c[j>>2]=c[h>>2];c[j+4>>2]=a;c[j+8>>2]=b;f=j;i=g;return f|0}return 0}function Wd(a,b){a=a|0;b=b|0;a=i;Pd(b);i=a;return}function Xd(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=Nd(a)|0;c[d>>2]=e;if(e){a=Vd(e,a,7,0,0)|0;if(!a){Qd(d);a=0}}else a=0;i=b;return a|0}function Yd(a){a=a|0;var b=0,d=0;b=i;d=Xd(a)|0;if(!d){d=0;i=b;return d|0}ve(c[d+4>>2]|0,0,a|0)|0;i=b;return d|0}function Zd(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b;d=Td(12)|0;if(!d){e=0;i=b;return e|0}c[d+0>>2]=c[a+0>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];f=(c[a>>2]|0)+8|0;a=c[f>>2]|0;c[f>>2]=a+1;c[e>>2]=a+1;e=d;i=b;return e|0}function _d(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b+4|0;d=b;if(!a){i=b;return}f=c[a>>2]|0;if(!f){i=b;return}f=c[f>>2]|0;c[d>>2]=f;Qd(a);a=f+8|0;f=c[a>>2]|0;c[a>>2]=f+ -1;c[e>>2]=f+ -1;if(c[e>>2]|0){i=b;return}f=c[d>>2]|0;Ja[c[f+12>>2]&15](c[f+16>>2]|0,c[f>>2]|0);Qd(d);i=b;return}function $d(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;e=Td(20)|0;if(!e){b=0;i=d;return b|0}c[e+12>>2]=a;c[e+16>>2]=(b|0)!=0?b:4;c[e+4>>2]=1;b=e;i=d;return b|0}function ae(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b;if(!a){i=b;return}e=c[a>>2]|0;if(!e){i=b;return}c[a>>2]=0;f=e+4|0;a=c[f>>2]|0;c[f>>2]=a+ -1;c[d>>2]=a+ -1;if(c[d>>2]|0){i=b;return}be(e);i=b;return}function be(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;if(!(c[a>>2]|0)){Qd(d);i=b;return}do{f=c[a>>2]|0;c[e>>2]=f;c[c[d>>2]>>2]=c[f+16>>2];f=c[e>>2]|0;Ja[c[f+8>>2]&15](c[f+4>>2]|0,c[f>>2]|0);Qd(e);a=c[d>>2]|0}while((c[a>>2]|0)!=0);Qd(d);i=b;return}function ce(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+16|0;b=d;e=d+4|0;f=c[a>>2]|0;j=0;while(1){if((f|0)==(j|0)){f=4;break}g=c[a>>2]|0;if((g|0)==(f|0))c[a>>2]=0;if(!g){f=5;break}else{j=f;f=g}}if((f|0)==4)if(!j)f=5;a:do if((f|0)==5){g=a+4|0;f=a+8|0;b:do if((c[g>>2]|0)<=(c[f>>2]|0)){$a(0,48,7344,b);c:while(1){c[b>>2]=c[g>>2];j=c[b>>2]|0;c[b>>2]=c[f>>2];if((j|0)>(c[b>>2]|0))break b;h=c[a>>2]|0;j=0;while(1){if((h|0)==(j|0))break;j=c[a>>2]|0;if((j|0)==(h|0))c[a>>2]=0;if(!j)continue c;else{k=h;h=j;j=k}}if(j)break a}}while(0);j=La[c[a+16>>2]&7](c[a+12>>2]|0)|0;c[e>>2]=j;if(!j){k=0;i=d;return k|0}h=Td(20)|0;if(!h){_d(e);k=0;i=d;return k|0}else{c[h>>2]=c[c[j>>2]>>2];c[h+4>>2]=c[(c[j>>2]|0)+16>>2];c[h+8>>2]=c[(c[j>>2]|0)+12>>2];c[h+12>>2]=a;c[(c[j>>2]|0)+16>>2]=h;c[(c[c[e>>2]>>2]|0)+12>>2]=8;k=c[g>>2]|0;c[g>>2]=k+1;c[b>>2]=k+1;k=c[f>>2]|0;c[f>>2]=k+1;c[b>>2]=k+1;k=c[e>>2]|0;i=d;return k|0}}while(0);e=j+16|0;de(c[e>>2]|0);c[e>>2]=0;e=Vd(c[j>>2]|0,c[a+12>>2]|0,8,j,0)|0;if(!e){de(j);k=0;i=d;return k|0}else{j=a+4|0;k=c[j>>2]|0;c[j>>2]=k+1;c[b>>2]=k+1;k=e;i=d;return k|0}return 0}function de(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;d=i;if(!a){i=d;return}b=c[a+12>>2]|0;f=a+16|0;if(!(c[f>>2]|0))e=a;else do{e=c[f>>2]|0;f=e+16|0}while((c[f>>2]|0)!=0);f=c[b>>2]|0;if(!f)c[b>>2]=a;if(!f){i=d;return}do{f=c[b>>2]|0;g=0;while(1){if((f|0)==(g|0))break;g=c[b>>2]|0;if((g|0)==(f|0))c[b>>2]=0;if(!g){g=0;break}else{h=f;f=g;g=h}}f=e+16|0;c[f>>2]=g;if(c[f>>2]|0)do{e=c[f>>2]|0;f=e+16|0}while((c[f>>2]|0)!=0);f=c[b>>2]|0;if(!f)c[b>>2]=a}while((f|0)!=0);i=d;return}function ee(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;b=i;i=i+16|0;e=b;d=c[a+12>>2]|0;de(a);f=d+4|0;a=c[f>>2]|0;c[f>>2]=a+ -1;c[e>>2]=a+ -1;if(c[e>>2]|0){i=b;return}be(d);i=b;return}function fe(){var a=0,b=0,d=0;a=i;b=Td(400)|0;if(!b){b=0;i=a;return b|0}ve(b|0,0,400)|0;d=b+136|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=b+144|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=b+128|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=b+360|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=b+376|0;c[d>>2]=0;c[d+4>>2]=0;d=b+368|0;c[d>>2]=-1;c[d+4>>2]=-1;c[b+392>>2]=-1;c[b+80>>2]=1;c[b+120>>2]=0;c[b+124>>2]=1;c[b+76>>2]=-1;c[b+344>>2]=2;c[b+348>>2]=2;c[b+352>>2]=2;c[b+340>>2]=0;c[b+356>>2]=0;i=a;return b|0}function ge(a){a=a|0;var b=0,d=0;b=i;if((a|0)!=0?(d=c[a>>2]|0,(d|0)!=0):0){he(d);Qd(a)}i=b;return}function he(a){a=a|0;var b=0,d=0;b=i;_d(a+304|0);_d(a+308|0);_d(a+312|0);_d(a+316|0);_d(a+320|0);_d(a+324|0);_d(a+328|0);_d(a+332|0);ve(a|0,0,400)|0;d=a+136|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+144|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+128|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+360|0;c[d>>2]=0;c[d+4>>2]=-2147483648;d=a+376|0;c[d>>2]=0;c[d+4>>2]=0;d=a+368|0;c[d>>2]=-1;c[d+4>>2]=-1;c[a+392>>2]=-1;c[a+80>>2]=1;c[a+120>>2]=0;c[a+124>>2]=1;c[a+76>>2]=-1;c[a+344>>2]=2;c[a+348>>2]=2;c[a+352>>2]=2;c[a+340>>2]=0;c[a+356>>2]=0;i=b;return}function ie(a,b){a=a|0;b=b|0;var d=0;d=i;xe(a|0,b|0,400)|0;ve(b|0,0,400)|0;a=b+136|0;c[a>>2]=0;c[a+4>>2]=-2147483648;a=b+144|0;c[a>>2]=0;c[a+4>>2]=-2147483648;a=b+128|0;c[a>>2]=0;c[a+4>>2]=-2147483648;a=b+360|0;c[a>>2]=0;c[a+4>>2]=-2147483648;a=b+376|0;c[a>>2]=0;c[a+4>>2]=0;a=b+368|0;c[a>>2]=-1;c[a+4>>2]=-1;c[b+392>>2]=-1;c[b+80>>2]=1;c[b+120>>2]=0;c[b+124>>2]=1;c[b+76>>2]=-1;c[b+344>>2]=2;c[b+348>>2]=2;c[b+352>>2]=2;c[b+340>>2]=0;c[b+356>>2]=0;i=d;return}function je(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;c[a+76>>2]=c[b+76>>2];c[a+64>>2]=c[b+64>>2];c[a+68>>2]=c[b+68>>2];c[a+388>>2]=c[b+388>>2];j=b+296|0;h=c[j+4>>2]|0;f=a+296|0;c[f>>2]=c[j>>2];c[f+4>>2]=h;c[a+72>>2]=c[b+72>>2];f=c[b+304>>2]|0;if(!f)ua();else{e=f;g=0}while(1){if((e|0)!=0?(j=Zd(e)|0,c[a+(g<<2)+304>>2]=j,(j|0)==0):0){e=5;break}g=g+1|0;if(g>>>0>=8){e=8;break}e=c[b+(g<<2)+304>>2]|0}if((e|0)==5){he(a);j=-12;i=d;return j|0}else if((e|0)==8){c[a+0>>2]=c[b+0>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];j=a+32|0;h=b+32|0;c[j+0>>2]=c[h+0>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];j=0;i=d;return j|0}return 0}function ke(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;e=0;while(1){f=e+1|0;if((c[7672+(e*24|0)>>2]|0)==(a|0))break;if(f>>>0<4)e=f;else{e=0;b=5;break}}if((b|0)==5){i=d;return e|0}f=7676+(e*24|0)|0;i=d;return f|0} -function Ta(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function Ua(){return i|0}function Va(a){a=a|0;i=a}function Wa(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function Xa(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Ya(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Za(a){a=a|0;D=a}function _a(){return D|0}function $a(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function ab(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=(c[b+16>>2]|0)==0?1:3;if((g|0)>(e|0)){b=c[b>>2]|0;c[d>>2]=c[b+(e<<2)+32>>2];b=c[b+(e<<2)>>2]|0;i=f;return b|0}if((a[b+20>>0]|0)!=0&(g|0)==(e|0)){b=c[b+4>>2]|0;c[d>>2]=c[b+32>>2];b=c[b>>2]|0;i=f;return b|0}else{c[d>>2]=0;b=0;i=f;return b|0}return 0}function bb(a,b){a=a|0;b=b|0;var e=0;c[b>>2]=c[a+8>>2];c[b+4>>2]=c[a+12>>2];c[b+8>>2]=c[a+16>>2];e=a+24|0;if(((c[e>>2]|0)+ -3|0)>>>0<2)c[b+12>>2]=0;else c[b+12>>2]=d[a+20>>0];c[b+16>>2]=c[e>>2];c[b+20>>2]=d[a+21>>0];return 0}function cb(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;k=i;h=c[f+8>>2]|0;j=f+32|0;n=c[j>>2]|0;if(n>>>0>=(c[f+12>>2]|0)>>>0){t=-1;i=k;return t|0}o=(c[f+44>>2]|0)+($(c[f+60>>2]|0,n)|0)|0;l=f+28|0;m=(d[l>>0]|0)+3|0;p=c[f+16>>2]|0;do if(!p)if((c[f+184>>2]|0)==8){if((h|0)>0){p=g;q=0}else break;while(1){t=b[o+(q<<1)>>1]&255;a[p>>0]=t;a[p+1>>0]=t;a[p+2>>0]=t;q=q+1|0;if((q|0)==(h|0))break;else p=p+m|0}}else{p=c[f+160>>2]|0;q=c[f+156>>2]|0;r=c[f+152>>2]|0;if((h|0)>0){s=g;t=0}else break;while(1){u=($(e[o+(t<<1)>>1]|0,p)|0)+q>>r&255;a[s>>0]=u;a[s+1>>0]=u;a[s+2>>0]=u;t=t+1|0;if((t|0)==(h|0))break;else s=s+m|0}}else if((p|0)==1){p=n>>1;r=(p|0)%8|0;q=f+76|0;s=c[q>>2]|0;if(!(n&1)){u=f+21|0;db(s,c[f+(r<<2)+84>>2]|0,h,d[u>>0]|0);db(c[f+80>>2]|0,c[f+(r<<2)+116>>2]|0,h,d[u>>0]|0)}else{u=f+148|0;t=f+21|0;eb(s,f+84|0,h,r,c[u>>2]|0,d[t>>0]|0);eb(c[f+80>>2]|0,f+116|0,h,r,c[u>>2]|0,d[t>>0]|0);s=(r+5|0)%8|0;r=p+5|0;t=c[f+40>>2]|0;t=(r|0)<(t|0)?r:t+ -1|0;r=(c[f+48>>2]|0)+($(t,c[f+64>>2]|0)|0)|0;t=(c[f+52>>2]|0)+($(c[f+68>>2]|0,t)|0)|0;u=f+36|0;we(c[f+(s<<2)+84>>2]|0,r|0,c[u>>2]<<1|0)|0;we(c[f+(s<<2)+116>>2]|0,t|0,c[u>>2]<<1|0)|0}Ga[c[f+188>>2]&7](f+152|0,g,o,c[q>>2]|0,c[f+80>>2]|0,h,m)}else if((p|0)==2){u=(c[f+48>>2]|0)+($(c[f+64>>2]|0,n)|0)|0;r=(c[f+52>>2]|0)+($(c[f+68>>2]|0,n)|0)|0;t=f+76|0;s=f+21|0;db(c[t>>2]|0,u,h,d[s>>0]|0);u=f+80|0;db(c[u>>2]|0,r,h,d[s>>0]|0);Ga[c[f+188>>2]&7](f+152|0,g,o,c[t>>2]|0,c[u>>2]|0,h,m)}else if((p|0)==3){t=(c[f+48>>2]|0)+($(c[f+64>>2]|0,n)|0)|0;u=(c[f+52>>2]|0)+($(c[f+68>>2]|0,n)|0)|0;Ga[c[f+188>>2]&7](f+152|0,g,o,t,u,h,m)}else{u=-1;i=k;return u|0}while(0);a:do if(((c[f+24>>2]|0)+ -3|0)>>>0<2){n=(c[f+56>>2]|0)+($(c[f+72>>2]|0,n)|0)|0;p=c[f+184>>2]|0;o=1<0;if(r){q=g;f=0;while(1){t=e[n+(f<<1)>>1]|0;a[q>>0]=($(d[q>>0]|0,t)|0)+o>>p;u=q+1|0;a[u>>0]=($(d[u>>0]|0,t)|0)+o>>p;u=q+2|0;a[u>>0]=($(d[u>>0]|0,t)|0)+o>>p;f=f+1|0;if((f|0)==(h|0))break;else q=q+m|0}}if(!((a[l>>0]|0)==0|r^1)){l=g+3|0;g=0;while(1){a[l>>0]=-1;g=g+1|0;if((g|0)==(h|0))break;else l=l+4|0}}}else if(a[l>>0]|0){if(!(a[f+20>>0]|0)){if((h|0)<=0)break;l=g+3|0;g=0;while(1){a[l>>0]=-1;g=g+1|0;if((g|0)==(h|0))break a;else l=l+4|0}}l=(c[f+56>>2]|0)+($(c[f+72>>2]|0,n)|0)|0;n=g+3|0;if((c[f+184>>2]|0)==8){if((h|0)>0)g=0;else break;while(1){a[n>>0]=b[l+(g<<1)>>1];g=g+1|0;if((g|0)==(h|0))break;else n=n+4|0}}else{m=c[f+160>>2]|0;g=c[f+156>>2]|0;f=c[f+152>>2]|0;if((h|0)>0)o=0;else break;while(1){a[n>>0]=($(e[l+(o<<1)>>1]|0,m)|0)+g>>f;o=o+1|0;if((o|0)==(h|0))break;else n=n+4|0}}}while(0);c[j>>2]=(c[j>>2]|0)+1;u=0;i=k;return u|0}function db(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;m=(d+1|0)/2|0;q=m<<1;h=Md(q+14|0)|0;j=h+6|0;we(j|0,c|0,q|0)|0;q=b[c>>1]|0;b[h>>1]=q;b[h+2>>1]=q;b[h+4>>1]=q;q=b[c+(m+ -1<<1)>>1]|0;b[h+(m+3<<1)>>1]=q;b[h+(m+4<<1)>>1]=q;b[h+(m+5<<1)>>1]=q;b[h+(m+6<<1)>>1]=q;m=(1<1){k=d+ -2|0;f=k>>>1;c=f<<1;o=c+2|0;l=b[j>>1]|0;n=a;p=j;while(1){b[n>>1]=l;r=$((e[p+4>>1]|0)+(e[p+ -2>>1]|0)|0,-11)|0;s=p;p=p+2|0;q=l;l=b[p>>1]|0;q=32-(e[s+ -6>>1]|0)-(e[s+8>>1]|0)+((e[s+6>>1]|0)+(e[s+ -4>>1]|0)<<2)+r+(((l&65535)+(q&65535)|0)*40|0)>>6;if((q|0)<0)q=0;else q=((q|0)>(m|0)?m:q)&65535;b[n+2>>1]=q;d=d+ -2|0;if((d|0)<=1)break;else n=n+4|0}a=a+(o<<1)|0;d=k-c|0;j=j+(f+1<<1)|0}if(!d){Od(h);i=g;return}b[a>>1]=b[j>>1]|0;Od(h);i=g;return}function eb(a,d,f,g,h,j){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;k=i;o=c[d+((g+5&7)<<2)>>2]|0;q=c[d+((g+6&7)<<2)>>2]|0;n=c[d+((g+7&7)<<2)>>2]|0;r=c[d+((g&7)<<2)>>2]|0;m=c[d+((g+1&7)<<2)>>2]|0;l=c[d+((g+2&7)<<2)>>2]|0;p=c[d+((g+3&7)<<2)>>2]|0;t=c[d+((g+4&7)<<2)>>2]|0;g=j+ -8|0;d=(f+1|0)/2|0;if((f|0)>0){s=0;do{u=((e[p+(s<<1)>>1]|0)+(e[q+(s<<1)>>1]|0)<<2)-((e[t+(s<<1)>>1]|0)+(e[o+(s<<1)>>1]|0))+($((e[l+(s<<1)>>1]|0)+(e[n+(s<<1)>>1]|0)|0,-11)|0)|0;b[h+(s+3<<1)>>1]=u+(((e[m+(s<<1)>>1]|0)+(e[r+(s<<1)>>1]|0)|0)*40|0)>>g;s=s+1|0}while((s|0)<(d|0))}g=h+6|0;l=b[g>>1]|0;b[h>>1]=l;b[h+2>>1]=l;b[h+4>>1]=l;l=b[h+(d+2<<1)>>1]|0;b[h+(d+3<<1)>>1]=l;b[h+(d+4<<1)>>1]=l;b[h+(d+5<<1)>>1]=l;b[h+(d+6<<1)>>1]=l;l=(1<>1;q=20-j|0;d=1<1){p=f+ -2|0;j=p>>>1;o=j<<1;r=a;while(1){s=(b[g>>1]|0)+n>>m;if((s|0)<0)s=0;else s=((s|0)>(l|0)?l:s)&65535;b[r>>1]=s;u=$((b[g+4>>1]|0)+(b[g+ -2>>1]|0)|0,-11)|0;s=g;g=g+2|0;s=d-(b[s+ -6>>1]|0)-(b[s+8>>1]|0)+((b[s+6>>1]|0)+(b[s+ -4>>1]|0)<<2)+u+(((b[g>>1]|0)+(b[s>>1]|0)|0)*40|0)>>q;if((s|0)<0)s=0;else s=((s|0)>(l|0)?l:s)&65535;b[r+2>>1]=s;f=f+ -2|0;if((f|0)<=1)break;else r=r+4|0}a=a+(o+2<<1)|0;f=p-o|0;g=h+(j+4<<1)|0}if(!f){i=k;return}h=(b[g>>1]|0)+n>>m;if((h|0)<0)h=0;else h=((h|0)>(l|0)?l:h)&65535;b[a>>1]=h;i=k;return}function fb(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;j=i;h=b+32|0;if((c[h>>2]|0)>-1|e>>>0>1){q=-1;i=j;return q|0}a[b+28>>0]=(e|0)==1&1;e=b+29|0;a[e>>0]=0;c[b+44>>2]=ab(b,b+60|0,0)|0;k=b+16|0;if(!(c[k>>2]|0))l=1;else{c[b+48>>2]=ab(b,b+64|0,1)|0;c[b+52>>2]=ab(b,b+68|0,2)|0;l=3}if(!(a[b+20>>0]|0))c[b+56>>2]=0;else c[b+56>>2]=ab(b,b+72|0,l)|0;if(((c[k>>2]|0)+ -1|0)>>>0<2?(q=b+8|0,p=c[q>>2]|0,f=b+36|0,c[f>>2]=(p+1|0)/2|0,g=b+40|0,c[g>>2]=((c[b+12>>2]|0)+1|0)/2|0,c[b+76>>2]=Md(p<<1)|0,c[b+80>>2]=Md(c[q>>2]<<1)|0,(c[k>>2]|0)==1):0){m=0;l=c[f>>2]<<1;do{c[b+(m<<2)+84>>2]=Md(l)|0;c[b+(m<<2)+116>>2]=Md(c[f>>2]<<1)|0;m=m+1|0;l=c[f>>2]<<1}while((m|0)!=8);c[b+148>>2]=Md(l+14|0)|0;n=b+48|0;o=b+64|0;l=b+52|0;m=b+68|0;p=0;do{q=(p|0)>4?p+ -8|0:p;if((q|0)<0)q=0;else{r=c[g>>2]|0;q=(q|0)<(r|0)?q:r+ -1|0}s=(c[n>>2]|0)+($(c[o>>2]|0,q)|0)|0;r=(c[l>>2]|0)+($(c[m>>2]|0,q)|0)|0;we(c[b+(p<<2)+84>>2]|0,s|0,c[f>>2]<<1|0)|0;we(c[b+(p<<2)+116>>2]|0,r|0,c[f>>2]<<1|0)|0;p=p+1|0}while((p|0)!=8)}s=d[b+21>>0]|0;q=(a[e>>0]|0)!=0?16:8;r=30-q|0;t=+((1<>2]=sa(+(t*1.402))|0;c[b+168>>2]=sa(+(t*.3441362862))|0;c[b+172>>2]=sa(+(t*.7141362862))|0;c[b+176>>2]=sa(+(t*1.772))|0;c[b+160>>2]=sa(+t)|0;c[b+152>>2]=r;c[b+156>>2]=1<>2]=1<>2]=s;if(!(c[k>>2]|0))c[b+188>>2]=0;else c[b+188>>2]=c[8+(c[b+24>>2]<<2)>>2];c[h>>2]=0;s=0;i=j;return s|0}function gb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=i;i=i+32|0;t=e+16|0;s=e+12|0;h=e+8|0;j=e+4|0;q=e;if((d|0)<6){z=0;i=e;return z|0}if((a[b>>0]|0)!=66){z=0;i=e;return z|0}if((a[b+1>>0]|0)!=80){z=0;i=e;return z|0}if((a[b+2>>0]|0)!=71){z=0;i=e;return z|0}if((a[b+3>>0]|0)!=-5){z=0;i=e;return z|0}z=a[b+4>>0]|0;g=z&255;n=g>>>5;if(z<<24>>24<0){z=0;i=e;return z|0}p=g>>>4&1;g=(g&15)+8|0;if(g>>>0>14){z=0;i=e;return z|0}z=a[b+5>>0]|0;u=z&255;r=u>>>4;if((z&255)>79){z=0;i=e;return z|0}if(!((n|0)!=0|(r|0)==0)){z=0;i=e;return z|0}if((r+ -3|0)>>>0<2&(p|0)==0){z=0;i=e;return z|0}v=hb(t,b+6|0,d+ -6|0)|0;if((v|0)<0){z=0;i=e;return z|0}w=v+6|0;v=hb(s,b+w|0,d-w|0)|0;if((v|0)<0){z=0;i=e;return z|0}v=v+w|0;w=hb(h,b+v|0,d-v|0)|0;if((w|0)<0){z=0;i=e;return z|0}y=w+v|0;c[q>>2]=0;u=(u&8|0)!=0;do if(u){v=hb(q,b+y|0,d-y|0)|0;if((v|0)<0){z=0;i=e;return z|0}else{y=v+y|0;break}}while(0);c[j>>2]=0;v=(p|0)!=0;do if(v){w=hb(j,b+y|0,d-y|0)|0;if((w|0)<0){z=0;i=e;return z|0}else{y=w+y|0;break}}while(0);w=Sd(192)|0;if(!w){z=0;i=e;return z|0}t=c[t>>2]|0;x=w+8|0;c[x>>2]=t;s=c[s>>2]|0;z=w+12|0;c[z>>2]=s;c[w+16>>2]=n;a[w+20>>0]=p;c[w+24>>2]=r;a[w+21>>0]=g;if(u){p=(c[q>>2]|0)+y|0;if(p>>>0<=d>>>0){o=p;m=23}}else{o=y;m=23}a:do if(((m|0)==23?(k=c[h>>2]|0,f=k+o|0,f>>>0<=d>>>0):0)?(l=ib(b+o|0,k,t,s,n,g)|0,c[w>>2]=l,(l|0)!=0):0){if((c[l+64>>2]|0)<(c[x>>2]|0))break;if((c[l+68>>2]|0)<(c[z>>2]|0))break;switch(c[l+76>>2]|0){case 0:case 54:{if((n|0)!=1)break a;break};case 4:case 56:{if((n|0)!=2)break a;break};case 5:case 58:{if((n|0)!=3)break a;break};case 8:case 32:{if(n)break a;break};default:break a}if(v){h=c[j>>2]|0;if((h+f|0)>>>0>d>>>0)break;z=ib(b+f|0,h,t,s,0,g)|0;c[w+4>>2]=z;if(!z)break}c[w+32>>2]=-1;z=w;i=e;return z|0}while(0);jb(w);z=0;i=e;return z|0}function hb(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;a:do if((f|0)>=1){j=a[e>>0]|0;h=j&255;if(j<<24>>24>-1){c[b>>2]=h;b=1;break}if(j<<24>>24!=-128){j=e+1|0;h=h&127;while(1){if((f|0)<2){b=-1;break a}k=j;j=j+1|0;k=d[k>>0]|0;h=k&127|h<<7;if(!(k&128))break;else f=f+ -1|0}c[b>>2]=h;b=j-e|0}else b=-1}else b=-1;while(0);i=g;return b|0}function ib(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;k=i;i=i+96|0;n=k+88|0;o=k;l=k+84|0;q=k+80|0;p=hb(q,b,d)|0;if((p|0)<0){b=0;i=k;return b|0}r=d-p|0;s=c[q>>2]|0;if(s>>>0>r>>>0){b=0;i=k;return b|0}d=s+10|0;q=Md(d)|0;a[q>>0]=g;a[q+1>>0]=e>>>24;a[q+2>>0]=e>>>16;a[q+3>>0]=e>>>8;a[q+4>>0]=e;a[q+5>>0]=f>>>24;a[q+6>>0]=f>>>16;a[q+7>>0]=f>>>8;a[q+8>>0]=f;a[q+9>>0]=h+248;we(q+10|0,b+p|0,s|0)|0;g=b+(s+p)|0;r=r-s|0;p=Md((d<<1)+10-s+r|0)|0;a[p>>0]=0;a[p+1>>0]=0;a[p+2>>0]=0;a[p+3>>0]=1;a[p+4>>0]=96;a[p+5>>0]=1;if((d|0)>0){f=0;s=6;while(1){e=f+1|0;h=a[q+f>>0]|0;if((e|0)<(d|0)&h<<24>>24==0)if(!(a[q+e>>0]|0)){a[p+s>>0]=0;a[p+(s+1)>>0]=0;a[p+(s+2)>>0]=3;e=f+2|0;s=s+3|0}else{h=0;j=7}else j=7;if((j|0)==7){j=0;a[p+s>>0]=h;s=s+1|0}if((e|0)<(d|0))f=e;else break}if(!s){s=0;j=11}else j=10}else{s=6;j=10}if((j|0)==10)if(!(a[p+(s+ -1)>>0]|0))j=11;if((j|0)==11){a[p+s>>0]=-128;s=s+1|0}Od(q);a[p+s>>0]=0;a[p+(s+1)>>0]=0;a[p+(s+2)>>0]=0;b=s+4|0;a[p+(s+3)>>0]=1;we(p+b|0,g|0,r|0)|0;r=b+r|0;Jd(o);g=Ad(1504)|0;if(!g)Aa(1);if(c[380]&8){b=g+84|0;c[b>>2]=c[b>>2]|65536}b=g+688|0;c[b>>2]=c[b>>2]|1;if((ud(g,1504,0)|0)<0)Aa(1);s=ee()|0;c[l>>2]=s;if(!s){b=0;i=k;return b|0}q=o+28|0;c[q>>2]=r;d=o+24|0;c[d>>2]=p;if((r|0)>0){r=s;s=0;while(1){r=Bd(g,r,n,o)|0;if((r|0)<0){j=26;break}m=((c[n>>2]|0)!=0&1)+s|0;s=c[d>>2]|0;e=c[q>>2]|0;if(s){e=e-r|0;c[q>>2]=e;c[d>>2]=s+r}if((e|0)<=0)break;r=c[l>>2]|0;s=m}if((j|0)==26)Aa(1);vd(g)|0;Od(g);Od(p);if(m){b=c[l>>2]|0;i=k;return b|0}}else{vd(g)|0;Od(g);Od(p)}fe(l);b=0;i=k;return b|0}function jb(a){a=a|0;var b=0,d=0;b=i;Od(c[a+76>>2]|0);Od(c[a+80>>2]|0);d=0;do{Od(c[a+(d<<2)+84>>2]|0);Od(c[a+(d<<2)+116>>2]|0);d=d+1|0}while((d|0)!=8);Od(c[a+148>>2]|0);if(c[a>>2]|0)fe(a);d=a+4|0;if(!(c[d>>2]|0)){Od(a);i=b;return}fe(d);Od(a);i=b;return}function kb(b,d,f,g,h,j,k){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;q=i;s=c[b+12>>2]|0;n=c[b+16>>2]|0;o=c[b+20>>2]|0;l=c[b+24>>2]|0;p=c[b+8>>2]|0;r=c[b+4>>2]|0;m=c[b>>2]|0;b=c[b+28>>2]|0;if((j|0)>0)t=0;else{i=q;return}while(1){v=$(e[f+(t<<1)>>1]|0,p)|0;u=(e[g+(t<<1)>>1]|0)-b|0;w=(e[h+(t<<1)>>1]|0)-b|0;v=v+r|0;x=v+($(w,s)|0)>>m;if((x|0)<0)x=0;else x=(x|0)>255?-1:x&255;a[d>>0]=x;w=v-($(u,n)|0)-($(w,o)|0)>>m;if((w|0)<0)w=0;else w=(w|0)>255?-1:w&255;a[d+1>>0]=w;u=v+($(u,l)|0)>>m;if((u|0)<0)u=0;else u=(u|0)>255?-1:u&255;a[d+2>>0]=u;t=t+1|0;if((t|0)==(j|0))break;else d=d+k|0}i=q;return}function lb(d,f,g,h,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;m=i;if((c[d+32>>2]|0)==8){if((k|0)>0)n=0;else{i=m;return}while(1){a[f>>0]=b[j+(n<<1)>>1];a[f+1>>0]=b[g+(n<<1)>>1];a[f+2>>0]=b[h+(n<<1)>>1];n=n+1|0;if((n|0)==(k|0))break;else f=f+l|0}i=m;return}else{n=c[d+8>>2]|0;o=c[d+4>>2]|0;d=c[d>>2]|0;if((k|0)>0){p=f;f=0}else{i=m;return}while(1){a[p>>0]=($(e[j+(f<<1)>>1]|0,n)|0)+o>>d;a[p+1>>0]=($(e[g+(f<<1)>>1]|0,n)|0)+o>>d;a[p+2>>0]=($(e[h+(f<<1)>>1]|0,n)|0)+o>>d;f=f+1|0;if((f|0)==(k|0))break;else p=p+l|0}i=m;return}}function mb(b,d,f,g,h,j,k){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;o=i;l=c[b+8>>2]|0;m=c[b+4>>2]|0;n=c[b>>2]|0;b=c[b+28>>2]|0;if((j|0)>0)p=0;else{i=o;return}while(1){t=e[f+(p<<1)>>1]|0;s=(e[g+(p<<1)>>1]|0)-b|0;r=(e[h+(p<<1)>>1]|0)-b|0;q=t-s|0;u=($(q+r|0,l)|0)+m>>n;if((u|0)<0)u=0;else u=(u|0)>255?-1:u&255;a[d>>0]=u;s=($(s+t|0,l)|0)+m>>n;if((s|0)<0)s=0;else s=(s|0)>255?-1:s&255;a[d+1>>0]=s;q=($(q-r|0,l)|0)+m>>n;if((q|0)<0)q=0;else q=(q|0)>255?-1:q&255;a[d+2>>0]=q;p=p+1|0;if((p|0)==(j|0))break;else d=d+k|0}i=o;return}function nb(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;if(!(a[(c[b+184>>2]|0)+43>>0]|0)){i=e;return}f=c[(c[b+180>>2]|0)+13128>>2]|0;d=(d|0)%(f|0)|0;if((d|0)!=2?!((f|0)==2&(d|0)==0):0){i=e;return}we(c[b+152>>2]|0,c[b+136>>2]|0,199)|0;i=e;return}function ob(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;g=b+184|0;f=c[g>>2]|0;if((c[(c[f+1668>>2]|0)+(c[b+3468>>2]<<2)>>2]|0)==(d|0)){pb(b);f=b+2417|0;if(a[f>>0]|0){j=c[g>>2]|0;if((a[j+42>>0]|0)!=0?(j=c[j+1676>>2]|0,(c[j+(d<<2)>>2]|0)!=(c[j+(d+ -1<<2)>>2]|0)):0)h=5}else h=5;if((h|0)==5)qb(b);if(a[b+2416>>0]|0){i=e;return}if(!(a[(c[g>>2]|0)+43>>0]|0)){i=e;return}g=c[(c[b+180>>2]|0)+13128>>2]|0;if((d|0)%(g|0)|0){i=e;return}if((g|0)==1){qb(b);i=e;return}if((a[f>>0]|0)!=1){i=e;return}we(c[b+136>>2]|0,c[b+152>>2]|0,199)|0;i=e;return}if((a[f+42>>0]|0)!=0?(j=c[f+1676>>2]|0,(c[j+(d<<2)>>2]|0)!=(c[j+(d+ -1<<2)>>2]|0)):0){if((a[b+141>>0]|0)==1)rb(c[b+136>>2]|0);else pb(b);qb(b);f=c[g>>2]|0}if(!(a[f+43>>0]|0)){i=e;return}f=b+180|0;if((d|0)%(c[(c[f>>2]|0)+13128>>2]|0)|0){i=e;return}d=b+136|0;sb((c[d>>2]|0)+224|0)|0;if((a[b+141>>0]|0)==1)rb(c[d>>2]|0);else pb(b);if((c[(c[f>>2]|0)+13128>>2]|0)==1){qb(b);i=e;return}else{we(c[d>>2]|0,c[b+152>>2]|0,199)|0;i=e;return}}function pb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;a=c[a+136>>2]|0;d=a+212|0;f=c[a+220>>2]|0;e=(c[d>>2]|0)+1|0;e=f>>>0>e>>>0?e:f;g=0-e&7;if(g){e=g+e|0;e=f>>>0>e>>>0?e:f}c[d>>2]=e;Kd(a+224|0,(c[a+204>>2]|0)+((e|0)/8|0)|0,(7-e+(c[a+216>>2]|0)|0)/8|0);i=b;return}function qb(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;g=i;f=c[b+2408>>2]|0;e=2-f|0;e=(a[b+3028>>0]|0)==0|(f|0)==2?e:e^3;f=b+3080|0;b=b+136|0;h=0;do{j=d[728+(e*199|0)+h>>0]|0;l=a[f>>0]|0;k=l<<24>>24;if(l<<24>>24<0)k=0;else k=(k|0)>51?51:k;j=((j<<3&120)+ -16+(($(k,((j>>>4)*5|0)+ -45|0)|0)>>4)<<1)+ -127|0;j=j>>31^j;if((j|0)>124)j=j&1|124;a[(c[b>>2]|0)+h>>0]=j;h=h+1|0}while((h|0)!=199);a[(c[b>>2]|0)+199>>0]=0;a[(c[b>>2]|0)+200>>0]=0;a[(c[b>>2]|0)+201>>0]=0;a[(c[b>>2]|0)+202>>0]=0;i=g;return}function rb(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+224|0;e=c[a+240>>2]|0;f=c[d>>2]|0;e=(f&1|0)==0?e:e+ -1|0;e=(f&511|0)==0?e:e+ -1|0;a=(c[a+244>>2]|0)-e|0;if((a|0)<0){i=b;return}Kd(d,e,a);i=b;return}function sb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;f=a+4|0;d=c[f>>2]|0;e=d+ -2|0;c[f>>2]=e;g=c[a>>2]|0;if((g|0)>=(e<<17|0)){g=(c[a+16>>2]|0)-(c[a+12>>2]|0)|0;i=b;return g|0}d=(d+ -258|0)>>>31;c[f>>2]=e<>2]=g;if(g&65535){g=0;i=b;return g|0}Vb(a);g=0;i=b;return g|0}function tb(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=ub(a+224|0,a)|0;i=b;return a|0}function ub(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;h=d[e>>0]|0;j=b+4|0;k=c[j>>2]|0;l=d[5544+((k<<1&384)+(h|512))>>0]|0;k=k-l|0;m=k<<17;n=c[b>>2]|0;g=m-n>>31;c[b>>2]=n-(g&m);c[j>>2]=(g&l-k)+k;h=g^h;a[e>>0]=a[h+6696>>0]|0;e=h&1;h=c[j>>2]|0;g=d[5544+h>>0]|0;c[j>>2]=h<>2]<>2]=g;if(g&65535){i=f;return e|0}j=b+16|0;h=c[j>>2]|0;c[b>>2]=(((d[h+1>>0]|0)<<1|(d[h>>0]|0)<<9)+ -65535<<7-(d[5544+((g+ -1^g)>>15)>>0]|0))+g;if(h>>>0>=(c[b+20>>2]|0)>>>0){i=f;return e|0}c[j>>2]=h+2;i=f;return e|0}function vb(a){a=a|0;var b=0,d=0;b=i;a=a+136|0;d=c[a>>2]|0;if(!(ub(d+224|0,d+1|0)|0)){d=0;i=b;return d|0}d=(wb((c[a>>2]|0)+224|0)|0)==0;d=d?1:2;i=b;return d|0}function wb(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a>>2]<<1;c[a>>2]=d;if(!(d&65534)){Vb(a);d=c[a>>2]|0}e=c[a+4>>2]<<17;if((d|0)<(e|0)){e=0;i=b;return e|0}c[a>>2]=d-e;e=1;i=b;return e|0}function xb(a){a=a|0;var b=0,d=0;b=i;d=a+136|0;a=(wb((c[d>>2]|0)+224|0)|0)<<1;a=(wb((c[d>>2]|0)+224|0)|0|a)<<1;a=(wb((c[d>>2]|0)+224|0)|0|a)<<1;a=(wb((c[d>>2]|0)+224|0)|0|a)<<1;a=wb((c[d>>2]|0)+224|0)|0|a;i=b;return a|0}function yb(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=c[(c[a+180>>2]|0)+52>>2]|0;d=(d|0)>10?31:(1<0)a=0;else{f=0;i=b;return f|0}while(1){f=a+1|0;if(!(wb((c[e>>2]|0)+224|0)|0)){d=4;break}if((f|0)<(d|0))a=f;else{a=f;d=4;break}}if((d|0)==4){i=b;return a|0}return 0}function zb(a){a=a|0;var b=0;b=i;a=wb((c[a+136>>2]|0)+224|0)|0;i=b;return a|0}function Ab(a){a=a|0;var b=0,d=0;b=i;d=a+136|0;a=(wb((c[d>>2]|0)+224|0)|0)<<1;a=wb((c[d>>2]|0)+224|0)|0|a;i=b;return a|0}function Bb(a){a=a|0;var b=0;b=i;a=sb((c[a+136>>2]|0)+224|0)|0;i=b;return a|0}function Cb(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=ub(a+224|0,a+5|0)|0;i=b;return a|0}function Db(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+16|0;g=b;e=a+136|0;j=9;f=0;while(1){k=c[e>>2]|0;h=f;f=f+1|0;if(!(ub(k+224|0,k+j|0)|0)){f=h;h=0;d=10;break}if((f|0)>=5){j=0;h=0;break}else j=10}if((d|0)==10){k=h+f|0;i=b;return k|0}while(1){if(!(wb((c[e>>2]|0)+224|0)|0)){d=8;break}h=(1<=31){d=6;break}}if((d|0)==6)if((j|0)==31){a=c[a+4>>2]|0;c[g>>2]=31;$a(a,16,192,g);a=31}else a=j;else if((d|0)==8)if(!j){k=f;j=h;k=j+k|0;i=b;return k|0}else a=j;do{a=a+ -1|0;h=((wb((c[e>>2]|0)+224|0)|0)<>2]|0)+224|0)|0;i=b;return a|0}function Fb(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=ub(a+224|0,a+176|0)|0;i=b;return a|0}function Gb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;e=a[(c[b+184>>2]|0)+1633>>0]|0;e=(e&255)<5?5:e&255;f=b+136|0;if(!e){g=0;i=d;return g|0}else b=0;while(1){h=c[f>>2]|0;g=b+1|0;if(!(ub(h+224|0,h+177|0)|0)){e=4;break}if((g|0)<(e|0))b=g;else{b=g;e=4;break}}if((e|0)==4){i=d;return b|0}return 0}function Hb(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;j=i;k=c[b+180>>2]|0;n=(1<>2])+ -1|0;l=n&g;m=c[k+13064>>2]|0;h=f>>m;m=g>>m;g=c[b+136>>2]|0;if((a[g+308>>0]|0)==0?(n&f|0)==0:0)f=0;else{f=h+ -1+($(c[k+13140>>2]|0,m)|0)|0;f=d[(c[b+7612>>2]|0)+f>>0]|0}if((a[g+309>>0]|0)==0&(l|0)==0){n=0;m=(f|0)>(e|0);m=m&1;n=(n|0)>(e|0);n=n&1;f=g+224|0;m=m|2;n=m+n|0;n=g+n|0;n=ub(f,n)|0;i=j;return n|0}n=($(c[k+13140>>2]|0,m+ -1|0)|0)+h|0;n=d[(c[b+7612>>2]|0)+n>>0]|0;m=(f|0)>(e|0);m=m&1;n=(n|0)>(e|0);n=n&1;f=g+224|0;m=m|2;n=m+n|0;n=g+n|0;n=ub(f,n)|0;i=j;return n|0}function Ib(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+136>>2]|0;b=(ub(b+224|0,b+13|0)|0)==0;i=d;return(b?3:0)|0}function Jb(a){a=a|0;var b=0;b=i;a=sb((c[a+136>>2]|0)+224|0)|0;i=b;return a|0}function Kb(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=ub(a+224|0,a+17|0)|0;i=b;return a|0}function Lb(a){a=a|0;var b=0,d=0,e=0;b=i;e=a+136|0;d=0;while(1){a=d+1|0;if(!(wb((c[e>>2]|0)+224|0)|0)){a=d;d=4;break}if((a|0)<2)d=a;else{d=4;break}}if((d|0)==4){i=b;return a|0}return 0}function Mb(a){a=a|0;var b=0,d=0;b=i;d=a+136|0;a=(wb((c[d>>2]|0)+224|0)|0)<<1;a=(wb((c[d>>2]|0)+224|0)|0|a)<<1;a=(wb((c[d>>2]|0)+224|0)|0|a)<<1;a=(wb((c[d>>2]|0)+224|0)|0|a)<<1;a=wb((c[d>>2]|0)+224|0)|0|a;i=b;return a|0}function Nb(a){a=a|0;var b=0,d=0;b=i;a=a+136|0;d=c[a>>2]|0;if(!(ub(d+224|0,d+18|0)|0)){d=4;i=b;return d|0}d=(wb((c[a>>2]|0)+224|0)|0)<<1;d=wb((c[a>>2]|0)+224|0)|0|d;i=b;return d|0}function Ob(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=ub(a+224|0,a+36|0)|0;i=b;return a|0}function Pb(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+136>>2]|0;a=ub(a+224|0,a+(42-b)|0)|0;i=d;return a|0}function Qb(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+136>>2]|0;a=ub(a+224|0,a+(b+42)|0)|0;i=d;return a|0}function Rb(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+136>>2]|0;a=ub(a+224|0,a+((b|0)==0|40)|0)|0;i=d;return a|0}function Sb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;a=a+136|0;f=(b<<2)+166|0;e=0;while(1){g=c[a>>2]|0;b=e+1|0;if(!(ub(g+224|0,g+(f+e)|0)|0)){b=e;a=4;break}if((b|0)<4)e=b;else{a=4;break}}if((a|0)==4){i=d;return b|0}return 0}function Tb(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+136>>2]|0;a=ub(a+224|0,a+(b+174)|0)|0;i=d;return a|0}function Ub(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Na=0,Oa=0;o=i;i=i+96|0;w=o;t=o+32|0;u=o+16|0;s=o+8|0;x=f+136|0;p=c[x>>2]|0;y=c[f+160>>2]|0;n=c[y+(l<<2)+32>>2]|0;m=f+180|0;q=c[m>>2]|0;U=$(h>>c[q+(l<<2)+13180>>2],n)|0;q=(c[y+(l<<2)>>2]|0)+(U+(g>>c[q+(l<<2)+13168>>2]<>2]))|0;U=(l|0)!=0;h=p+320|0;g=U?p+11680|0:h;y=t+0|0;r=y+64|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(r|0));T=1<>2]|0;r=T<>0]|0)){B=a[p+272>>0]|0;E=f+184|0;Na=c[E>>2]|0;if((a[Na+21>>0]|0)!=0?(d[Na+1629>>0]|0)>=(j|0):0){G=c[x>>2]|0;G=ub(G+224|0,G+(U&1|46)|0)|0}else G=0;if(A){C=c[m>>2]|0;H=C;C=(c[C+13192>>2]|0)+B|0}else{C=c[E>>2]|0;if((l|0)==1)C=(c[f+3040>>2]|0)+(c[C+28>>2]|0)+(a[p+302>>0]|0)|0;else C=(c[f+3044>>2]|0)+(c[C+32>>2]|0)+(a[p+303>>0]|0)|0;F=C+B|0;H=c[m>>2]|0;B=c[H+13192>>2]|0;C=0-B|0;if((F|0)>=(C|0))C=(F|0)>57?57:F;do if((c[H+4>>2]|0)==1){if((C|0)>=30)if((C|0)>43){C=C+ -6|0;break}else{C=c[224+(C+ -30<<2)>>2]|0;break}}else C=(C|0)>51?51:C;while(0);C=B+C|0}B=(c[H+52>>2]|0)+j|0;F=B+ -5|0;B=1<>0]|0)>>0]<>0];if((a[H+634>>0]|0)!=0?!((G|0)!=0&(j|0)>2):0){I=c[E>>2]|0;I=(a[I+68>>0]|0)==0?H+635|0:I+69|0;H=((c[p+31244>>2]|0)!=1?3:0)+l|0;E=I+((j+ -2|0)*384|0)+(H<<6)|0;if((j|0)>3)ka=a[I+((j+ -4|0)*6|0)+H+1536>>0]|0;else ka=16}else{ka=16;E=0}}else{B=0;ka=0;C=0;E=0;F=0;G=0}K=(j<<1)+ -1|0;if(A){H=(j*3|0)+ -6+(j+ -1>>2)|0;J=j+1>>2}else{H=15;J=j+ -2|0}if((K|0)>0){L=H+52|0;I=0;while(1){Na=c[x>>2]|0;M=I+1|0;if(!(ub(Na+224|0,Na+(L+(I>>J))|0)|0))break;if((M|0)<(K|0))I=M;else{I=M;break}}M=H+70|0;H=0;while(1){Na=c[x>>2]|0;L=H+1|0;if(!(ub(Na+224|0,Na+(M+(H>>J))|0)|0))break;if((L|0)<(K|0))H=L;else{H=L;break}}if((I|0)>3){J=(I>>1)+ -1|0;L=wb((c[x>>2]|0)+224|0)|0;if((J|0)>1){K=1;do{L=wb((c[x>>2]|0)+224|0)|0|L<<1;K=K+1|0}while((K|0)!=(J|0))}I=L+((I&1|2)<3){K=(H>>1)+ -1|0;L=wb((c[x>>2]|0)+224|0)|0;if((K|0)>1){J=1;do{L=wb((c[x>>2]|0)+224|0)|0|L<<1;J=J+1|0}while((J|0)!=(K|0))}J=I;M=L+((H&1|2)<>2;P=M>>2;if((k|0)==1){I=J;H=M;Q=d[584+(M<<3)+J>>0]|0;L=536;K=552;M=544;J=568;break}else if(k){K=J;L=M;v=49;break}Q=d[(J&3)+(440+((M&3)<<2))>>0]|0;if((T|0)==4){I=J;H=M;L=456;K=32;M=456;J=48;break}else if((T|0)==8){I=J;H=M;Q=(d[464+(P<<1)+N>>0]<<4)+Q|0;L=544;K=32;M=536;J=48;break}else if((T|0)==16){I=J;H=M;Q=(d[440+(P<<2)+N>>0]<<4)+Q|0;L=32;K=32;M=48;J=48;break}else{I=J;H=M;Q=(d[472+(P<<3)+N>>0]<<4)+Q|0;L=64;K=32;M=128;J=48;break}}else{K=M;L=J;N=M>>2;P=J>>2;v=49}while(0);if((v|0)==49){I=K;H=L;Q=d[584+(K<<3)+L>>0]|0;L=544;K=568;M=536;J=552}O=Q+1|0;Q=Q>>4;if((Q|0)>-1){R=(1<0;l=S?90:88;T=T+ -1>>2;V=U?27:0;W=(j|0)==2;U=V+3|0;X=(j|0)==3;ja=(k|0)==0?9:15;Y=A?0:27;ca=(G|0)==0;fa=A?42:43;aa=A?40:41;ga=A?2:0;k=p+31244|0;ia=y&-17;Z=f+184|0;ba=f+4|0;ea=((C|0)<0)<<31>>31;da=((B|0)<0)<<31>>31;_=(G|0)!=0&(j|0)>2;ha=(j|0)<4;oa=ka&255;la=(A&1)<<1;ka=la|1;sa=1;ma=Q;qa=0;za=16;while(1){pa=ma<<4;ya=a[L+ma>>0]|0;va=ya&255;ua=a[M+ma>>0]|0;wa=ua&255;na=(ma|0)>0;if((ma|0)<(Q|0)&na){if((va|0)<(R|0))ra=d[t+(va+1<<3)+wa>>0]|0;else ra=0;if((wa|0)<(R|0))ra=(d[wa+1+(t+(va<<3))>>0]|0)+ra|0;Aa=c[x>>2]|0;Aa=(ub(Aa+224|0,Aa+(((ra|0)>1?1:ra)+l)|0)|0)&255;a[t+(va<<3)+wa>>0]=Aa;ta=1}else{if(!((va|0)==(N|0)&(wa|0)==(P|0)))if(!(ya<<24>>24))Aa=ua<<24>>24==0&1;else Aa=0;else Aa=1;a[t+(va<<3)+wa>>0]=Aa;ta=0}pa=O-pa|0;ra=(ma|0)==(Q|0);if(ra){a[u>>0]=pa+255;xa=pa+ -2|0;pa=1}else{xa=15;pa=0}if((va|0)<(T|0))Ba=(a[t+(va+1<<3)+wa>>0]|0)!=0&1;else Ba=0;if((wa|0)<(T|0))Ba=((a[wa+1+(t+(va<<3))>>0]|0)!=0&1)<<1|Ba;do if(Aa<<24>>24!=0&(xa|0)>-1){if(!(c[(c[m>>2]|0)+13100>>2]|0))if(W){ua=648;ya=V}else v=73;else if(ca){Aa=(a[z>>0]|0)!=0;if(Aa|W){ua=Aa?712:648;ya=Aa?aa:V}else v=73}else{ua=712;ya=aa}do if((v|0)==73){v=0;Aa=(Ba<<4)+664|0;if(!A){ua=Aa;ya=V+(X?9:12)|0;break}ya=(ua|ya)<<24>>24==0?V:U;if(X){ua=Aa;ya=ya+ja|0;break}else{ua=Aa;ya=ya+21|0;break}}while(0);if((xa|0)>0){Aa=ya+92|0;do{Na=c[x>>2]|0;if(ub(Na+224|0,Na+(Aa+(d[ua+((d[J+xa>>0]<<2)+(d[K+xa>>0]|0))>>0]|0))|0)|0){a[u+(pa&255)>>0]=xa;ta=0;pa=pa+1<<24>>24}xa=xa+ -1|0}while((xa|0)>0)}if(ta){a[u+(pa&255)>>0]=0;ta=pa+1<<24>>24;break}if(c[(c[m>>2]|0)+13100>>2]|0)if(ca?(a[z>>0]|0)==0:0)v=87;else ta=fa;else v=87;if((v|0)==87){v=0;ta=(ma|0)==0?Y:ya+2|0}Na=c[x>>2]|0;if((ub(Na+224|0,Na+(ta+92)|0)|0)==1){a[u+(pa&255)>>0]=0;ta=pa+1<<24>>24}else ta=pa}else ta=pa;while(0);pa=ta&255;a:do if(ta<<24>>24){ta=na?ga:0;if(!(c[(c[m>>2]|0)+13116>>2]|0))Fa=0;else{if(ca?(a[z>>0]|0)==0:0)qa=la;else qa=ka;Fa=(d[p+qa+199>>0]|0)>>>2}ua=ta|(sa|0)==0&(ra^1)&1;Da=a[u>>0]|0;xa=Da&255;ta=pa>>>0>8?8:pa;if(!ta){ra=-1;sa=1}else{Aa=ua<<2;ra=-1;sa=1;ya=0;do{Na=sa+Aa|0;La=c[x>>2]|0;Na=(ub(La+224|0,La+((S?Na+16|0:Na)+136)|0)|0)&255;a[s+ya>>0]=Na;if(!(Na<<24>>24))sa=((sa+ -1|0)>>>0<2&1)+sa|0;else{ra=(ra|0)==-1?ya:ra;sa=0}ya=ya+1|0}while((ya|0)<(ta|0))}ya=pa+ -1|0;ta=a[u+ya>>0]|0;Aa=ta&255;do if(!(a[z>>0]|0)){if((c[k>>2]|0)==1?!((c[(c[m>>2]|0)+13104>>2]|0)==0|ca|(ia|0)!=10):0){xa=0;break}xa=(xa-Aa|0)>3&1}else xa=0;while(0);if((ra|0)!=-1){La=c[x>>2]|0;La=ub(La+224|0,La+((S?ua|4:ua)|160)|0)|0;Na=s+ra|0;a[Na>>0]=(d[Na>>0]|0)+La}ua=(xa|0)==0;if((a[(c[Z>>2]|0)+4>>0]|0)==0|ua){ya=0;xa=0;do{xa=wb((c[x>>2]|0)+224|0)|0|xa<<1;ya=ya+1|0}while((ya|0)<(pa|0));Ba=xa<<16-pa}else{xa=ya&255;if(!((ya&255)<<24>>24))Aa=0;else{ya=0;Aa=0;do{Aa=wb((c[x>>2]|0)+224|0)|0|Aa<<1;ya=ya+1|0}while((ya|0)<(xa|0))}Ba=Aa<<17-pa}va=va<<2;xa=wa<<2;wa=p+qa+199|0;ya=0;Ga=0;Ca=za;Ea=0;while(1){za=Da&255;Aa=(d[K+za>>0]|0)+va|0;za=(d[J+za>>0]|0)+xa|0;b:do if((ya|0)<8){Ha=(d[s+ya>>0]|0)+1|0;Na=(ya|0)==(ra|0);if((Ha|0)==((Na?3:2)|0)&0==((Na?0:0)|0))Ia=0;else{Ia=0;break}while(1){Ka=Ia+1|0;if(!(wb((c[x>>2]|0)+224|0)|0)){v=122;break}if((Ka|0)<31)Ia=Ka;else{v=120;break}}do if((v|0)==120){if((Ka|0)!=31){v=126;break}Ka=c[ba>>2]|0;c[w>>2]=31;$a(Ka,16,192,w);Ka=31;v=126}else if((v|0)==122){v=0;if((Ia|0)>=3){Ka=Ia;v=126;break}if((Fa|0)>0){Ka=0;La=0;do{La=wb((c[x>>2]|0)+224|0)|0|La<<1;Ka=Ka+1|0}while((Ka|0)!=(Fa|0))}else La=0;Ka=La+(Ia<0){La=Fa+ -3+Ka|0;Ka=0;Na=0;do{Na=wb((c[x>>2]|0)+224|0)|0|Na<<1;Ka=Ka+1|0}while((Ka|0)!=(La|0))}else Na=0;Ka=Na+((1<>31|0,Ha|0,0)|0;Ia=D;La=3<>31;Na=c[(c[m>>2]|0)+13116>>2]|0;do if((Ia|0)>(Oa|0)|(Ia|0)==(Oa|0)&Ha>>>0>La>>>0){La=Fa+1|0;if(Na){Fa=La;break}Fa=(Fa|0)>3?4:La;break b}while(0);if(!((Na|0)!=0&(Ga|0)==0))break;Ga=a[wa>>0]|0;La=(Ga&255)>>>2;if((Ka|0)>=(3<>0]=Ga+1<<24>>24;Ga=1;break}if((Ka<<1|0)>=(1<>24==0){Ga=1;break}a[wa>>0]=Ga+ -1<<24>>24;Ga=1}else{Ha=0;while(1){Ia=Ha+1|0;if(!(wb((c[x>>2]|0)+224|0)|0)){v=142;break}if((Ia|0)<31)Ha=Ia;else{v=140;break}}do if((v|0)==140){if((Ia|0)!=31){v=146;break}Ia=c[ba>>2]|0;c[w>>2]=31;$a(Ia,16,192,w);Ia=31;v=146}else if((v|0)==142){v=0;if((Ha|0)>=3){Ia=Ha;v=146;break}if((Fa|0)>0){Ia=0;Ka=0;do{Ka=wb((c[x>>2]|0)+224|0)|0|Ka<<1;Ia=Ia+1|0}while((Ia|0)!=(Fa|0))}else Ka=0;Ka=Ka+(Ha<0){Ia=Fa+ -3+Ia|0;Ka=0;La=0;do{La=wb((c[x>>2]|0)+224|0)|0|La<<1;Ka=Ka+1|0}while((Ka|0)!=(Ia|0))}else La=0;Ka=La+((1<>31;Na=c[(c[m>>2]|0)+13116>>2]|0;do if((Ka|0)>=(3<3?4:La;break b}while(0);if(!((Na|0)!=0&(Ga|0)==0))break;La=a[wa>>0]|0;Ga=(La&255)>>>2;if((Ka|0)>=(3<>0]=La+1<<24>>24;Ga=1;break}if((Ka<<1|0)>=(1<>24==0){Ga=1;break}a[wa>>0]=La+ -1<<24>>24;Ga=1}while(0);do if(!((a[(c[Z>>2]|0)+4>>0]|0)==0|ua)){Ea=te(Ha|0,Ia|0,Ea|0,0)|0;if(Da<<24>>24!=ta<<24>>24)break;Oa=(Ea&1|0)==0;Na=se(0,0,Ha|0,Ia|0)|0;Ha=Oa?Ha:Na;Ia=Oa?Ia:D}while(0);Oa=(Ba&32768|0)==0;Da=se(0,0,Ha|0,Ia|0)|0;Da=Oa?Ha:Da;Ha=Oa?Ia:D;Ba=Ba<<1&131070;Ia=Da&65535;do if(!(a[z>>0]|0)){do if(!((a[(c[m>>2]|0)+634>>0]|0)==0|_)){if(!((za|Aa|0)!=0|ha)){Ca=oa;break}if((j|0)==3)Ca=(za<<3)+Aa|0;else if((j|0)==4)Ca=(za>>>1<<3)+(Aa>>>1)|0;else if((j|0)==5)Ca=(za>>>2<<3)+(Aa>>>2)|0;else Ca=(za<<2)+Aa|0;Ca=d[E+Ca>>0]|0}while(0);Ha=Fe(Da|0,Ha|0,C|0,ea|0)|0;Ha=Fe(Ha|0,D|0,Ca|0,((Ca|0)<0)<<31>>31|0)|0;Ha=te(Ha|0,D|0,B|0,da|0)|0;Ha=re(Ha|0,D|0,F|0)|0;Da=D;if((Da|0)<0){Ia=(Ha&-32768|0)==-32768&(Da&268435455|0)==268435455?Ha&65535:-32768;break}else{Ia=Da>>>0>0|(Da|0)==0&Ha>>>0>32767?32767:Ha&65535;break}}while(0);b[g+((za<>1]=Ia;ya=ya+1|0;if((ya|0)>=(pa|0)){za=Ca;break a}Da=a[u+ya>>0]|0}}while(0);if(na)ma=ma+ -1|0;else break}}do if(a[z>>0]|0){if((c[(c[m>>2]|0)+13104>>2]|0)!=0?(y&-17|0)==10:0)Ma[c[f+5908>>2]&7](g,j&65535,(y|0)==26&1)}else{if(G){s=c[m>>2]|0;if((c[s+13096>>2]|0)!=0&(j|0)==2?(c[p+31244>>2]|0)==1:0){t=0;do{La=g+(15-t<<1)|0;Na=b[La>>1]|0;Oa=g+(t<<1)|0;b[La>>1]=b[Oa>>1]|0;b[Oa>>1]=Na;t=t+1|0}while((t|0)!=8)}t=j&65535;Ma[c[f+5904>>2]&7](g,t,c[s+52>>2]|0);if(!(c[(c[m>>2]|0)+13104>>2]|0))break;if((c[p+31244>>2]|0)!=1)break;if((y&-17|0)!=10)break;Ma[c[f+5908>>2]&7](g,t,(y|0)==26&1);break}if(A&(c[p+31244>>2]|0)==1&(j|0)==2){Ja[c[f+5912>>2]&15](g,c[(c[m>>2]|0)+52>>2]|0);break}s=(I|0)>(H|0)?I:H;if(!s){Ja[c[f+(j+ -2<<2)+5932>>2]&15](g,c[(c[m>>2]|0)+52>>2]|0);break}t=H+4+I|0;do if((s|0)>=4){if((s|0)<8){t=(t|0)<8?t:8;break}if((s|0)<12)t=(t|0)<24?t:24}else t=(t|0)<4?t:4;while(0);Ma[c[f+(j+ -2<<2)+5916>>2]&7](g,t,c[(c[m>>2]|0)+52>>2]|0)}while(0);if(!(a[p+304>>0]|0)){Na=j+ -2|0;Na=f+(Na<<2)+5888|0;Na=c[Na>>2]|0;Oa=c[m>>2]|0;Oa=Oa+52|0;Oa=c[Oa>>2]|0;Sa[Na&15](q,g,n,Oa);i=o;return}if((r|0)<=0){Na=j+ -2|0;Na=f+(Na<<2)+5888|0;Na=c[Na>>2]|0;Oa=c[m>>2]|0;Oa=Oa+52|0;Oa=c[Oa>>2]|0;Sa[Na&15](q,g,n,Oa);i=o;return}p=c[p+284>>2]|0;s=0;do{Oa=g+(s<<1)|0;b[Oa>>1]=(($(b[h+(s<<1)>>1]|0,p)|0)>>>3)+(e[Oa>>1]|0);s=s+1|0}while((s|0)!=(r|0));Na=j+ -2|0;Na=f+(Na<<2)+5888|0;Na=c[Na>>2]|0;Oa=c[m>>2]|0;Oa=Oa+52|0;Oa=c[Oa>>2]|0;Sa[Na&15](q,g,n,Oa);i=o;return}function Vb(a){a=a|0;var b=0,e=0,f=0;b=i;f=a+16|0;e=c[f>>2]|0;c[a>>2]=(c[a>>2]|0)+ -65535+((d[e+1>>0]|0)<<1|(d[e>>0]|0)<<9);if(e>>>0>=(c[a+20>>2]|0)>>>0){i=b;return}c[f>>2]=e+2;i=b;return}function Wb(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;h=b+136|0;n=c[h>>2]|0;g=b+180|0;j=c[g>>2]|0;m=c[j+13080>>2]|0;q=(1<>2]|0)+24>>2]|0);o=m&d;p=m&e;k=c[j+13140>>2]|0;j=c[j+13064>>2]|0;l=o>>j;j=p>>j;if(!(q&d))o=0;else o=(o&q|0)!=0;if(!(q&e))p=0;else p=(p&q|0)!=0;q=n+203|0;if((a[q>>0]|0)==0?(m&(e|d)|0)!=0:0)d=c[n+276>>2]|0;else{a[q>>0]=(a[n+300>>0]|0)==0&1;d=a[b+3080>>0]|0}if(o){e=l+ -1+($(j,k)|0)|0;e=a[(c[b+7592>>2]|0)+e>>0]|0}else e=d;if(p){d=($(j+ -1|0,k)|0)+l|0;d=a[(c[b+7592>>2]|0)+d>>0]|0}b=e+1+d>>1;h=c[h>>2]|0;j=c[h+280>>2]|0;if(!j){a[h+272>>0]=b;i=f;return}g=c[(c[g>>2]|0)+13192>>2]|0;b=j+52+b+(g<<1)|0;if((b|0)>0)j=b;else j=-52-g+1+b|0;a[h+272>>0]=b-g-j+((j|0)%(g+52|0)|0);i=f;return}function Xb(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;g=i;s=c[b+136>>2]|0;q=b+3488|0;v=c[q>>2]|0;n=c[v+16>>2]|0;u=b+180|0;w=c[u>>2]|0;p=c[w+13084>>2]|0;l=c[w+13072>>2]|0;k=c[w+13156>>2]|0;m=c[w+13148>>2]|0;r=$(k,e>>p)|0;o=d>>p;j=(a[n+(r+o)>>0]|0)==0;a:do if((e|0)>0&(e&7|0)==0){if(((a[b+3030>>0]|0)==0?(c[s+31312>>2]&4|0)!=0:0)?((e|0)%(1<>2]|0)|0|0)==0:0)break;if((a[(c[b+184>>2]|0)+53>>0]|0)==0?(x=c[s+31312>>2]|0,(x&8|0)!=0):0)if(!((e|0)%(1<>2]|0)|0))break;else w=x;else w=c[s+31312>>2]|0;B=e+ -1|0;if(w&4)Ic(b,v,d,B)|0;A=1<0){y=$(m,B>>l)|0;x=b+7620|0;w=$(m,e>>l)|0;z=b+5820|0;v=b+7596|0;B=$(k,B>>p)|0;C=0;while(1){D=C+d|0;G=D>>p;F=D>>l;H=c[x>>2]|0;E=a[H+(F+y)>>0]|0;F=a[H+(F+w)>>0]|0;if((a[n+(G+r)>>0]|0)!=0?(a[n+(G+B)>>0]|0)!=0:0)if(!((F|E)<<24>>24))break;else E=1;else E=2;H=($(c[z>>2]|0,e)|0)+D>>2;a[(c[v>>2]|0)+H>>0]=E;C=C+4|0;if((C|0)>=(A|0))break a}Yb()}}while(0);b:do if((d|0)>0&(d&7|0)==0){if(((a[b+3030>>0]|0)==0?(c[s+31312>>2]&1|0)!=0:0)?((d|0)%(1<>2]|0)+13080>>2]|0)|0|0)==0:0)break;if((a[(c[b+184>>2]|0)+53>>0]|0)==0?(t=c[s+31312>>2]|0,(t&2|0)!=0):0){if(!((d|0)%(1<>2]|0)+13080>>2]|0)|0))break}else t=c[s+31312>>2]|0;if(!(t&1))r=d+ -1|0;else{r=d+ -1|0;Ic(b,c[q>>2]|0,r,e)|0}q=r>>p;v=r>>l;u=d>>l;t=1<0){r=b+7620|0;s=b+5820|0;w=b+7600|0;b=0;while(1){x=b+e|0;H=$(x>>p,k)|0;y=$(x>>l,m)|0;G=c[r>>2]|0;z=a[G+(y+v)>>0]|0;y=a[G+(y+u)>>0]|0;if((a[n+(H+o)>>0]|0)!=0?(a[n+(H+q)>>0]|0)!=0:0)if(!((y|z)<<24>>24))break;else y=1;else y=2;H=($(c[s>>2]|0,x)|0)+d>>2;a[(c[w>>2]|0)+H>>0]=y;b=b+4|0;if((b|0)>=(t|0))break b}Yb()}}while(0);if((p|0)>=(f|0)|j){i=g;return}j=1<8;if(k)Yb();if((j|0)<=0){i=g;return}if(k)Yb();else h=0;do h=h+4|0;while((h|0)<(j|0));i=g;return}function Yb(){ua()}function Zb(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0;j=i;i=i+32|0;o=j+8|0;x=j;n=j+18|0;s=j+16|0;l=e+180|0;K=c[l>>2]|0;v=c[K+13120>>2]|0;k=(v-h|0)<=(f|0);b[n>>1]=0;b[s>>1]=0;w=c[K+13080>>2]|0;u=1<>w,c[K+13128>>2]|0)|0)+(f>>w)|0;t=c[e+3476>>2]|0;m=c[t+(w<<3)+4>>2]|0;y=c[t+(w<<3)>>2]|0;if((c[K+68>>2]|0)!=0?(a[K+13056>>0]|0)!=0:0)p=1;else p=(a[(c[e+184>>2]|0)+40>>0]|0)!=0;r=c[K+52>>2]|0;q=(f|0)!=0;if(q){w=w+ -1|0;z=c[t+(w<<3)>>2]|0;w=c[t+(w<<3)+4>>2]|0}else{z=0;w=0}t=u+f|0;t=(t|0)>(v|0)?v:t;u=u+g|0;A=c[K+13124>>2]|0;u=(u|0)>(A|0)?A:u;A=(t|0)==(v|0)?t:t+ -8|0;v=(u|0)>(g|0);if(v){K=q?f:8;N=(K|0)<(t|0);Q=q?f+ -8|0:0;F=e+5820|0;P=e+7596|0;I=e+7592|0;C=x+4|0;D=e+160|0;E=n+1|0;R=s+1|0;L=e+7576|0;M=e+7560|0;J=e+7600|0;G=e+7580|0;H=e+7564|0;B=(Q|0)>=(A|0);U=y;T=m;O=g;do{if(N){W=O+4|0;X=T+ -2&-2;V=K;do{_=c[F>>2]|0;da=($(_,O)|0)+V>>2;aa=c[J>>2]|0;da=a[aa+da>>0]|0;ca=da&255;_=a[aa+(($(_,W)|0)+V>>2)>>0]|0;aa=_&255;da=da<<24>>24!=0;_=_<<24>>24==0;do if(!(_&(da^1))){S=V+ -1|0;Y=c[l>>2]|0;ba=c[Y+13064>>2]|0;Z=$(O>>ba,c[Y+13140>>2]|0)|0;ea=c[I>>2]|0;ba=(a[ea+(Z+(S>>ba))>>0]|0)+1+(a[ea+(Z+(V>>ba))>>0]|0)>>1;Z=ba+U|0;if((Z|0)<0)Z=0;else Z=(Z|0)>51?51:Z;Z=d[1328+Z>>0]|0;if(da){ca=(ca<<1)+X+ba|0;if((ca|0)<0)ca=0;else ca=(ca|0)>53?53:ca;ca=d[1384+ca>>0]|0}else ca=0;c[x>>2]=ca;if(_)_=0;else{_=(aa<<1)+X+ba|0;if((_|0)<0)_=0;else _=(_|0)>53?53:_;_=d[1384+_>>0]|0}c[C>>2]=_;da=c[D>>2]|0;_=c[da+32>>2]|0;ea=$(_,O)|0;Y=(c[da>>2]|0)+((V<>2])+ea)|0;if(p){a[n>>0]=bc(e,S,O)|0;a[E>>0]=bc(e,S,W)|0;a[s>>0]=bc(e,V,O)|0;a[R>>0]=bc(e,V,W)|0;Ga[c[G>>2]&7](Y,_,Z,x,n,s,r);break}else{Ga[c[H>>2]&7](Y,_,Z,x,n,s,r);break}}while(0);V=V+8|0}while((V|0)<(t|0))}if(!((O|0)==0|B)){S=O+ -1|0;W=T;T=Q;do{Z=$(c[F>>2]|0,O)|0;_=c[P>>2]|0;ba=a[_+(Z+T>>2)>>0]|0;ca=ba&255;V=T+4|0;Z=a[_+(Z+V>>2)>>0]|0;_=Z&255;ba=ba<<24>>24!=0;Z=Z<<24>>24==0;do if(!(Z&(ba^1))){X=c[l>>2]|0;W=c[X+13064>>2]|0;aa=T>>W;U=c[X+13140>>2]|0;ea=($(S>>W,U)|0)+aa|0;Y=c[I>>2]|0;aa=(a[Y+ea>>0]|0)+1+(a[Y+(($(O>>W,U)|0)+aa)>>0]|0)>>1;U=(T|0)>=(f|0);W=U?m:w;U=U?y:z;Y=aa+U|0;if((Y|0)<0)Y=0;else Y=(Y|0)>51?51:Y;Y=d[1328+Y>>0]|0;if(ba){ba=(ca<<1)+(W+ -2&-2)+aa|0;if((ba|0)<0)ba=0;else ba=(ba|0)>53?53:ba;ba=d[1384+ba>>0]|0}else ba=0;c[x>>2]=ba;if(Z)Z=0;else{Z=(_<<1)+(W+ -2&-2)+aa|0;if((Z|0)<0)Z=0;else Z=(Z|0)>53?53:Z;Z=d[1384+Z>>0]|0}c[C>>2]=Z;da=c[D>>2]|0;Z=c[da+32>>2]|0;ea=$(Z,O)|0;X=(c[da>>2]|0)+((T<>2])+ea)|0;if(p){a[n>>0]=bc(e,T,S)|0;a[E>>0]=bc(e,V,S)|0;a[s>>0]=bc(e,T,O)|0;a[R>>0]=bc(e,V,O)|0;Ga[c[L>>2]&7](X,Z,Y,x,n,s,r);break}else{Ga[c[M>>2]&7](X,Z,Y,x,n,s,r);break}}while(0);T=T+8|0}while((T|0)<(A|0));T=W}O=O+8|0}while((O|0)<(u|0));K=c[l>>2]|0}else T=m;if(c[K+4>>2]|0){D=q?w:m;G=e+5820|0;F=e+7596|0;w=e+7592|0;y=o+4|0;x=e+160|0;C=n+1|0;B=s+1|0;E=e+7584|0;H=e+7568|0;I=e+7600|0;A=e+7588|0;z=e+7572|0;J=1;do{P=1<>2];Q=1<>2];if(v){O=P<<3;M=q?f:O;L=(M|0)<(t|0);K=Q<<3;N=q?f-O|0:0;P=P<<2;Q=Q<<2;R=g;do{if(L){S=R+Q|0;U=M;do{X=c[G>>2]|0;Z=($(X,R)|0)+U>>2;ea=c[I>>2]|0;Z=(a[ea+Z>>0]|0)==2;X=(a[ea+(($(X,S)|0)+U>>2)>>0]|0)==2;do if(Z|X){V=U+ -1|0;W=c[l>>2]|0;ea=c[W+13064>>2]|0;_=V>>ea;Y=c[W+13140>>2]|0;ba=$(R>>ea,Y)|0;aa=c[w>>2]|0;ca=U>>ea;Y=$(S>>ea,Y)|0;Y=(a[aa+(Y+_)>>0]|0)+1+(a[aa+(Y+ca)>>0]|0)>>1;if(Z)Z=cc(e,(a[aa+(ba+ca)>>0]|0)+1+(a[aa+(ba+_)>>0]|0)>>1,J,T)|0;else Z=0;c[o>>2]=Z;if(X)X=cc(e,Y,J,T)|0;else X=0;c[y>>2]=X;da=c[x>>2]|0;X=c[da+(J<<2)+32>>2]|0;ea=$(X,R>>c[W+(J<<2)+13180>>2])|0;W=(c[da+(J<<2)>>2]|0)+((U>>c[W+(J<<2)+13168>>2]<>2])+ea)|0;if(p){a[n>>0]=bc(e,V,R)|0;a[C>>0]=bc(e,V,S)|0;a[s>>0]=bc(e,U,R)|0;a[B>>0]=bc(e,U,S)|0;Pa[c[A>>2]&3](W,X,o,n,s,r);break}else{Pa[c[z>>2]&3](W,X,o,n,s,r);break}}while(0);U=U+O|0}while((U|0)<(t|0))}if(R){V=t-((t|0)==(c[(c[l>>2]|0)+13120>>2]|0)?0:O)|0;if((N|0)<(V|0)){U=R+ -1|0;T=N;do{X=$(c[G>>2]|0,R)|0;ea=c[F>>2]|0;S=T+P|0;Y=(a[ea+(X+T>>2)>>0]|0)==2;X=(a[ea+(X+S>>2)>>0]|0)==2;do if(Y|X){if(Y){ea=c[l>>2]|0;da=c[ea+13064>>2]|0;Z=T>>da;ea=c[ea+13140>>2]|0;ba=($(U>>da,ea)|0)+Z|0;ca=c[w>>2]|0;Z=(a[ca+ba>>0]|0)+1+(a[ca+(($(R>>da,ea)|0)+Z)>>0]|0)>>1}else Z=0;if(X){ea=c[l>>2]|0;da=c[ea+13064>>2]|0;W=S>>da;ea=c[ea+13140>>2]|0;ba=($(U>>da,ea)|0)+W|0;ca=c[w>>2]|0;W=(a[ca+ba>>0]|0)+1+(a[ca+(($(R>>da,ea)|0)+W)>>0]|0)>>1}else W=0;if(Y)Y=cc(e,Z,J,D)|0;else Y=0;c[o>>2]=Y;if(X)W=cc(e,W,J,m)|0;else W=0;c[y>>2]=W;ea=c[l>>2]|0;da=c[x>>2]|0;X=c[da+(J<<2)+32>>2]|0;W=$(X,R>>c[ea+13184>>2])|0;W=(c[da+(J<<2)>>2]|0)+((T>>c[ea+13172>>2]<>2])+W)|0;if(p){a[n>>0]=bc(e,T,U)|0;a[C>>0]=bc(e,S,U)|0;a[s>>0]=bc(e,T,R)|0;a[B>>0]=bc(e,S,R)|0;Pa[c[E>>2]&3](W,X,o,n,s,r);break}else{Pa[c[H>>2]&3](W,X,o,n,s,r);break}}while(0);T=T+O|0}while((T|0)<(V|0));T=D}else T=D}R=R+K|0}while((R|0)<(u|0))}J=J+1|0;K=c[l>>2]|0}while((J|0)!=3)}if(!(a[K+12941>>0]|0)){if((a[e+140>>0]&1)==0|k^1){i=j;return}i=j;return}n=(c[K+13124>>2]|0)-h|0;l=(g|0)==0;m=(f|0)==0;if(!(l|m))_b(e,f-h|0,g-h|0);n=(n|0)>(g|0);if(!(m|n))_b(e,f-h|0,g);k=k^1;!(l|k)?(_b(e,f,g-h|0),(a[e+140>>0]&1)!=0):0;if(n|k){i=j;return}_b(e,f,g);if(!(a[e+140>>0]&1)){i=j;return}i=j;return}function _b(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;t=i;i=i+32|0;h=t+8|0;s=t+26|0;r=t+24|0;p=t;q=e+180|0;G=c[q>>2]|0;j=c[G+13080>>2]|0;o=f>>j;j=g>>j;z=G+13128|0;m=($(j,c[z>>2]|0)|0)+o|0;J=c[e+184>>2]|0;I=J+1668|0;K=c[(c[I>>2]|0)+(m<<2)>>2]|0;k=e+3472|0;l=c[k>>2]|0;n=l+(m*148|0)|0;b[s>>1]=0;b[r>>1]=0;c[p>>2]=0;y=($(c[z>>2]|0,j)|0)+o|0;y=a[(c[e+7628>>2]|0)+y>>0]|0;if((a[J+42>>0]|0)!=0?(a[J+53>>0]|0)==0:0){L=1;F=1}else{L=0;F=y<<24>>24==0&1}A=(o|0)==0;c[h>>2]=A&1;E=(j|0)==0;w=h+4|0;c[w>>2]=E&1;C=(o|0)==((c[z>>2]|0)+ -1|0);u=h+8|0;c[u>>2]=C&1;B=(j|0)==((c[G+13132>>2]|0)+ -1|0);v=h+12|0;c[v>>2]=B&1;if(F<<24>>24){if(A)D=0;else{if(L){D=c[J+1676>>2]|0;D=(c[D+(K<<2)>>2]|0)!=(c[D+(c[(c[I>>2]|0)+(m+ -1<<2)>>2]<<2)>>2]|0)&1}else D=0;if(y<<24>>24==0?(W=$(c[z>>2]|0,j)|0,V=c[e+7604>>2]|0,(c[V+(W+o<<2)>>2]|0)!=(c[V+(o+ -1+W<<2)>>2]|0)):0)H=1;else H=D;a[s>>0]=H}if(C)H=0;else{if(L){H=c[J+1676>>2]|0;H=(c[H+(K<<2)>>2]|0)!=(c[H+(c[(c[I>>2]|0)+(m+1<<2)>>2]<<2)>>2]|0)&1}else H=0;if(y<<24>>24==0?(W=$(c[z>>2]|0,j)|0,V=c[e+7604>>2]|0,(c[V+(W+o<<2)>>2]|0)!=(c[V+(o+1+W<<2)>>2]|0)):0)M=1;else M=H;a[s+1>>0]=M}if(E)M=0;else{if(L){M=c[J+1676>>2]|0;M=(c[M+(K<<2)>>2]|0)!=(c[M+(c[(c[I>>2]|0)+(m-(c[z>>2]|0)<<2)>>2]<<2)>>2]|0)&1}else M=0;if(y<<24>>24==0?(W=c[z>>2]|0,U=($(W,j)|0)+o|0,V=c[e+7604>>2]|0,(c[V+(U<<2)>>2]|0)!=(c[V+(($(W,j+ -1|0)|0)+o<<2)>>2]|0)):0)N=1;else N=M;a[r>>0]=N}if(B)I=0;else{if(L){W=c[J+1676>>2]|0;I=(c[W+(K<<2)>>2]|0)!=(c[W+(c[(c[I>>2]|0)+((c[z>>2]|0)+m<<2)>>2]<<2)>>2]|0)&1}else I=0;if(y<<24>>24==0?(W=c[z>>2]|0,U=($(W,j)|0)+o|0,V=c[e+7604>>2]|0,(c[V+(U<<2)>>2]|0)!=(c[V+(($(W,j+1|0)|0)+o<<2)>>2]|0)):0)J=1;else J=I;a[r+1>>0]=J}if(!A)if(E)x=47;else{if(!(y<<24>>24)){W=c[z>>2]|0;U=($(W,j)|0)+o|0;V=c[e+7604>>2]|0;if(D<<24>>24==0?(c[V+(U<<2)>>2]|0)==(c[V+(o+ -1+($(W,j+ -1|0)|0)<<2)>>2]|0):0)x=38;else J=1}else if(!(D<<24>>24))x=38;else J=1;if((x|0)==38)J=M<<24>>24!=0&1;a[p>>0]=J;x=40}else x=40;if((x|0)==40)if(!E){if(!C){if(!(y<<24>>24)){W=c[z>>2]|0;U=($(W,j)|0)+o|0;V=c[e+7604>>2]|0;if(H<<24>>24==0?(c[V+(U<<2)>>2]|0)==(c[V+(o+1+($(W,j+ -1|0)|0)<<2)>>2]|0):0)x=45;else E=1}else if(!(H<<24>>24))x=45;else E=1;if((x|0)==45)E=M<<24>>24!=0&1;a[p+1>>0]=E;x=47}}else x=47;if((x|0)==47?!(C|B):0){if(!(y<<24>>24)){W=c[z>>2]|0;U=($(W,j)|0)+o|0;V=c[e+7604>>2]|0;if(H<<24>>24==0?(c[V+(U<<2)>>2]|0)==(c[V+(o+1+($(W,j+1|0)|0)<<2)>>2]|0):0)x=51;else C=1}else if(!(H<<24>>24))x=51;else C=1;if((x|0)==51)C=I<<24>>24!=0&1;a[p+2>>0]=C}if(!(A|B)){if(!(y<<24>>24)){W=c[z>>2]|0;U=($(W,j)|0)+o|0;V=c[e+7604>>2]|0;if(D<<24>>24==0?(c[V+(U<<2)>>2]|0)==(c[V+(o+ -1+($(W,j+1|0)|0)<<2)>>2]|0):0)x=57;else y=1}else if(!(D<<24>>24))x=57;else y=1;if((x|0)==57)y=I<<24>>24!=0&1;a[p+3>>0]=y}}B=(c[G+4>>2]|0)!=0?3:1;D=e+160|0;E=e+164|0;A=e+5948|0;z=o+ -1|0;y=j+ -1|0;x=o+1|0;C=j+1|0;F=e+((F&255)<<2)+5952|0;U=G;M=0;while(1){T=c[U+(M<<2)+13168>>2]|0;I=f>>T;O=c[U+(M<<2)+13180>>2]|0;R=g>>O;P=c[D>>2]|0;L=c[P+(M<<2)+32>>2]|0;Q=c[E>>2]|0;N=c[Q+(M<<2)+32>>2]|0;J=1<>2];H=J>>T;J=J>>O;T=(c[U+13120>>2]>>T)-I|0;H=(H|0)>(T|0)?T:H;O=(c[U+13124>>2]>>O)-R|0;J=(J|0)>(O|0)?O:J;O=$(L,R)|0;T=c[U+56>>2]|0;I=I<>2]|0;G=P+O|0;R=I+($(N,R)|0)|0;Q=c[Q+(M<<2)>>2]|0;I=Q+R|0;K=l+(m*148|0)+M+142|0;S=d[K>>0]|0;if((S|0)==1){O=H<0){P=I;R=0;Q=G;while(1){we(P|0,Q|0,O|0)|0;R=R+1|0;if((R|0)==(J|0))break;else{P=P+N|0;Q=Q+L|0}}U=c[q>>2]|0}Fa[c[A>>2]&1](G,I,L,N,n,h,H,J,M,c[U+52>>2]|0);ac(e,f,g,H,J,M);a[K>>0]=3}else if((S|0)==2){V=(c[h>>2]|0)==0;if(V){S=z+($(c[U+13128>>2]|0,j)|0)|0;S=(a[(c[k>>2]|0)+(S*148|0)+M+142>>0]|0)!=3&1}else S=0;do if(!(c[w>>2]|0)){if(V){V=z+($(c[U+13128>>2]|0,y)|0)|0;V=(a[(c[k>>2]|0)+(V*148|0)+M+142>>0]|0)!=3&1}else V=0;U=c[U+13128>>2]|0;if(!(c[u>>2]|0)){W=x+($(U,y)|0)|0;W=(a[(c[k>>2]|0)+(W*148|0)+M+142>>0]|0)!=3&1}else W=0;U=($(U,y)|0)+o|0;if(!(a[(c[k>>2]|0)+(U*148|0)+M+142>>0]|0)){V=V&255;U=V<>24){V=1<>24){W=c[(c[q>>2]|0)+56>>2]|0;V=H<>2]|0)){T=c[q>>2]|0;if(!(c[h>>2]|0)){U=z+($(c[T+13128>>2]|0,C)|0)|0;U=(a[(c[k>>2]|0)+(U*148|0)+M+142>>0]|0)!=3&1}else U=0;X=($(J,N)|0)+R|0;W=c[T+56>>2]|0;T=U<>2]|0;X=c[U+56>>2]|0;T=S<0){Q=Q+(R-T)|0;R=0;O=P+(O-T)|0;while(1){we(Q|0,O|0,S|0)|0;R=R+1|0;if((R|0)==(J|0))break;else{Q=Q+N|0;O=O+L|0}}U=c[q>>2]|0}Ha[c[F>>2]&3](G,I,L,N,n,h,H,J,M,s,r,p,c[U+52>>2]|0);ac(e,f,g,H,J,M);a[K>>0]=3}M=M+1|0;if((M|0)>=(B|0))break;U=c[q>>2]|0}i=t;return}function $b(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;h=c[a+180>>2]|0;k=((c[h+13120>>2]|0)-e|0)>(b|0);h=((c[h+13124>>2]|0)-e|0)>(d|0);j=(d|0)==0;g=(b|0)==0;if(!(j|g))Zb(a,b-e|0,d-e|0,e);if(!(j|k))Zb(a,b,d-e|0,e);if(g|h){i=f;return}Zb(a,b-e|0,d,e);i=f;return}function ac(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;o=i;s=c[b+180>>2]|0;if(!(a[(c[b+184>>2]|0)+40>>0]|0)){if(!(a[s+13056>>0]|0)){i=o;return}if(!(c[s+68>>2]|0)){i=o;return}}p=b+164|0;j=c[(c[p>>2]|0)+(h<<2)+32>>2]|0;k=b+160|0;q=c[(c[k>>2]|0)+(h<<2)+32>>2]|0;l=b+180|0;A=c[s+13084>>2]|0;v=1<>2]|0;t=c[s+(h<<2)+13180>>2]|0;s=d>>A;u=e>>A;f=f+d>>A;g=g+e>>A;d=v>>r;if((u|0)>=(g|0)){i=o;return}e=(s|0)<(f|0);b=b+7624|0;v=v>>t;w=(v|0)>0;do{if(e){x=s;do{y=c[l>>2]|0;A=($(c[y+13156>>2]|0,u)|0)+x|0;if((a[(c[b>>2]|0)+A>>0]|0)!=0?(n=c[y+13084>>2]|0,m=u<>t,n=x<>r<>2],w):0){z=$(m,j)|0;y=$(m,q)|0;z=(c[(c[p>>2]|0)+(h<<2)>>2]|0)+(z+n)|0;A=0;y=(c[(c[k>>2]|0)+(h<<2)>>2]|0)+(y+n)|0;while(1){we(y|0,z|0,d|0)|0;A=A+1|0;if((A|0)==(v|0))break;else{z=z+j|0;y=y+q|0}}}x=x+1|0}while((x|0)!=(f|0))}u=u+1|0}while((u|0)!=(g|0));i=o;return}function bc(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;f=i;g=c[a+180>>2]|0;h=c[g+13084>>2]|0;if((e|b|0)<0){e=2;i=f;return e|0}b=b>>h;e=e>>h;h=c[g+13156>>2]|0;if((b|0)>=(h|0)){e=2;i=f;return e|0}if((e|0)>=(c[g+13160>>2]|0)){e=2;i=f;return e|0}e=($(h,e)|0)+b|0;e=d[(c[a+7624>>2]|0)+e>>0]|0;i=f;return e|0}function cc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=c[b+184>>2]|0;d=(c[((e|0)==1?h+28|0:h+32|0)>>2]|0)+d|0;if((d|0)<0)d=0;else d=(d|0)>57?57:d;do if((c[(c[b+180>>2]|0)+4>>2]|0)==1){if((d|0)>=30)if((d|0)>43){d=d+ -6|0;break}else{d=c[1440+(d+ -30<<2)>>2]|0;break}}else if((d|0)<0)d=0;else d=(d|0)>51?51:d;while(0);f=f+2+d|0;if((f|0)<0){h=0;h=1384+h|0;h=a[h>>0]|0;h=h&255;i=g;return h|0}h=(f|0)>53?53:f;h=1384+h|0;h=a[h>>0]|0;h=h&255;i=g;return h|0}function dc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;k=b+7652|0;c[k>>2]=0;a:do if((e|0)>1){m=0;while(1){if(!(a[d+m>>0]|0)){if((m|0)>0){l=m+ -1|0;l=(a[d+l>>0]|0)==0?l:m}else l=m;m=l+2|0;if(((m|0)<(e|0)?(a[d+(l+1)>>0]|0)==0:0)?(j=a[d+m>>0]|0,(j&255)<4):0)break}else l=m;m=l+2|0;if((l+3|0)>=(e|0))break a}m=l;e=j<<24>>24==3?e:l}else m=0;while(0);if((m|0)>=(e+ -1|0)){c[f+12>>2]=d;c[f+8>>2]=e;q=e;i=g;return q|0}Td(f,f+4|0,e+32|0);j=c[f>>2]|0;if(!j){q=-12;i=g;return q|0}we(j|0,d|0,m|0)|0;o=m+2|0;b:do if((o|0)<(e|0)){l=b+7660|0;b=b+7656|0;n=m;c:while(1){p=d+o|0;q=a[p>>0]|0;do if((q&255)<=3){p=a[d+m>>0]|0;if(!(p<<24>>24))if(!(a[d+(m+1)>>0]|0)){if(q<<24>>24!=3){e=m;break b}o=n+1|0;a[j+n>>0]=0;n=n+2|0;a[j+o>>0]=0;m=m+3|0;q=(c[k>>2]|0)+1|0;c[k>>2]=q;p=c[l>>2]|0;if((p|0)<(q|0)){p=p<<1;c[l>>2]=p;Rd(b,p,4)|0;p=c[b>>2]|0;if(!p){f=-12;break c}}else{p=c[b>>2]|0;if(!p)break}c[p+((c[k>>2]|0)+ -1<<2)>>2]=o}else{p=0;h=26}else h=26}else{a[j+n>>0]=a[d+m>>0]|0;a[j+(n+1)>>0]=a[d+(m+1)>>0]|0;p=a[p>>0]|0;n=n+2|0;m=o;h=26}while(0);if((h|0)==26){h=0;a[j+n>>0]=p;n=n+1|0;m=m+1|0}o=m+2|0;if((o|0)>=(e|0)){h=15;break b}}i=g;return f|0}else{n=m;h=15}while(0);if((h|0)==15)if((m|0)<(e|0)){h=e+n|0;k=m;while(1){a[j+n>>0]=a[d+k>>0]|0;k=k+1|0;if((k|0)==(e|0))break;else n=n+1|0}n=h-m|0}else e=m;h=j+n+0|0;d=h+32|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(d|0));c[f+12>>2]=j;c[f+8>>2]=n;q=e;i=g;return q|0}function ec(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;f=b+60|0;e=c[f>>2]|0;Ld();Nc();f=c[f>>2]|0;c[f+4>>2]=b;g=Sd(31328)|0;c[f+136>>2]=g;a:do if((((g|0)!=0?(c[f+72>>2]=g,c[f+8>>2]=f,j=Md(199)|0,c[f+152>>2]=j,(j|0)!=0):0)?(j=ee()|0,c[f+168>>2]=j,(j|0)!=0):0)?(j=ee()|0,c[f+172>>2]=j,(j|0)!=0):0){g=f+3492|0;h=0;do{j=ee()|0;c[g+(h*72|0)>>2]=j;if(!j)break a;c[g+(h*72|0)+4>>2]=j;h=h+1|0}while(h>>>0<32);c[f+5816>>2]=2147483647;a[f+7745>>0]=1;c[f+5808>>2]=0;c[e+7644>>2]=0;c[e+7796>>2]=0;f=b+808|0;if(!(c[f>>2]&2))a[e+141>>0]=1;else a[e+141>>0]=c[b+800>>2];if((c[f>>2]&1|0)!=0?(c[b+800>>2]|0)>1:0){a[e+140>>0]=1;j=0;i=d;return j|0}a[e+140>>0]=2;j=0;i=d;return j|0}while(0);gc(b)|0;j=-12;i=d;return j|0}function fc(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0;k=i;i=i+16|0;m=k;p=k+8|0;n=c[f+60>>2]|0;l=j+28|0;I=c[l>>2]|0;if(!I){l=Mc(n,g,1)|0;if((l|0)<0){ib=l;i=k;return ib|0}c[h>>2]=l;ib=0;i=k;return ib|0}o=n+3488|0;c[o>>2]=0;H=c[j+24>>2]|0;c[o>>2]=0;A=n+5808|0;q=n+5812|0;c[q>>2]=c[A>>2];c[A>>2]=0;j=n+7684|0;c[j>>2]=0;a:do if((I|0)>3){B=n+7746|0;F=n+7688|0;u=n+7680|0;w=n+7664|0;E=n+7672|0;s=n+7668|0;G=n+7660|0;t=n+7656|0;v=n+7652|0;y=n+136|0;x=n+3480|0;C=n+7756|0;b:while(1){z=(a[B>>0]|0)==0;if(z){while(1){J=H+1|0;if(((a[H>>0]|0)==0?(a[J>>0]|0)==0:0)?(a[H+2>>0]|0)==1:0)break;if((I|0)<5){A=19;break b}H=J;I=I+ -1|0}H=H+3|0;K=0;I=I+ -3|0}else{J=c[C>>2]|0;if((J|0)>0){L=0;K=0;do{L=d[H+K>>0]|L<<8;K=K+1|0}while((K|0)!=(J|0));K=L}else K=0;I=I-J|0;if((K|0)>(I|0)){A=13;break}H=H+J|0}z=z?I:K;J=c[F>>2]|0;L=c[j>>2]|0;if((J|0)<(L+1|0)){J=J+1|0;K=Qd(c[u>>2]|0,J,16)|0;if(!K){z=-12;break a}c[u>>2]=K;L=c[F>>2]|0;ue(K+(L<<4)|0,0,J-L<<4|0)|0;Rd(w,J,4)|0;Rd(E,J,4)|0;Rd(s,J,4)|0;K=c[E>>2]|0;c[K+(c[F>>2]<<2)>>2]=1024;L=c[F>>2]|0;K=c[K+(L<<2)>>2]|0;if(K>>>0<536870911){K=Md(K<<2)|0;L=c[F>>2]|0}else K=0;c[(c[s>>2]|0)+(L<<2)>>2]=K;c[F>>2]=J;L=c[j>>2]|0}c[G>>2]=c[(c[E>>2]|0)+(L<<2)>>2];c[t>>2]=c[(c[s>>2]|0)+(L<<2)>>2];K=c[u>>2]|0;J=dc(n,H,z,K+(L<<4)|0)|0;c[(c[w>>2]|0)+(c[j>>2]<<2)>>2]=c[v>>2];c[(c[E>>2]|0)+(c[j>>2]<<2)>>2]=c[G>>2];hb=c[t>>2]|0;ib=c[j>>2]|0;c[j>>2]=ib+1;c[(c[s>>2]|0)+(ib<<2)>>2]=hb;if((J|0)<0){z=J;break a}hb=c[y>>2]|0;fb=c[K+(L<<4)+12>>2]|0;gb=c[K+(L<<4)+8>>2]|0;gb=gb>>>0>268435455?-8:gb<<3;ib=gb>>>0>2147483639|(fb|0)==0;gb=ib?0:gb;fb=ib?0:fb;z=ib?-1094995529:0;c[hb+204>>2]=fb;c[hb+216>>2]=gb;c[hb+220>>2]=gb+8;c[hb+208>>2]=fb+(gb>>3);c[hb+212>>2]=0;if(ib)break a;jc(n)|0;if(((c[x>>2]|0)+ -36|0)>>>0<2)c[A>>2]=1;I=I-J|0;if((I|0)<=3){A=6;break}else H=H+J|0}if((A|0)==6){if((c[j>>2]|0)<=0)break;B=n+4|0;Fa=n+2416|0;Y=n+3014|0;X=n+2396|0;Ea=n+184|0;wa=n+180|0;La=n+2417|0;Ma=n+2400|0;Qa=n+2404|0;Ra=n+5804|0;Ia=n+156|0;ra=n+2408|0;N=n+2418|0;I=n+2588|0;va=n+5796|0;G=n+3484|0;J=n+5800|0;H=n+3024|0;U=n+3025|0;K=n+3026|0;M=n+3020|0;L=n+3016|0;Oa=n+3036|0;P=n+3040|0;O=n+3044|0;Q=n+3048|0;V=n+3029|0;S=n+3052|0;R=n+3056|0;W=n+3030|0;T=n+2419|0;Pa=n+3076|0;Ja=n+3080|0;Na=n+3468|0;Ga=n+5816|0;oa=n+5828|0;qa=n+7692|0;Ha=m+4|0;xa=n+7596|0;za=n+5820|0;ya=n+5824|0;Aa=n+7600|0;Ba=n+7620|0;Ca=n+7624|0;Da=n+7604|0;sa=n+160|0;pa=n+140|0;ta=n+172|0;la=n+3064|0;ma=n+3068|0;na=n+3072|0;E=n+141|0;F=n+7644|0;Z=n+3472|0;_=n+3476|0;aa=n+7608|0;ba=n+7612|0;ca=n+7616|0;ea=n+7628|0;da=n+7592|0;ga=n+1408|0;fa=n+1412|0;ia=n+5832|0;ha=n+5884|0;Sa=n+176|0;Ta=n+7640|0;ka=n+168|0;ja=n+164|0;C=0;c:while(1){c[v>>2]=c[(c[w>>2]|0)+(C<<2)>>2];c[t>>2]=c[(c[s>>2]|0)+(C<<2)>>2];hb=c[u>>2]|0;gb=c[hb+(C<<4)+12>>2]|0;hb=c[hb+(C<<4)+8>>2]|0;ib=c[y>>2]|0;hb=hb>>>0>268435455?-8:hb<<3;Ua=hb>>>0>2147483639|(gb|0)==0;hb=Ua?0:hb;gb=Ua?0:gb;c[ib+204>>2]=gb;c[ib+216>>2]=hb;c[ib+220>>2]=hb+8;c[ib+208>>2]=gb+(hb>>3);c[ib+212>>2]=0;d:do if(Ua){r=Ua?-1094995529:0;A=247}else{Ua=jc(n)|0;e:do if((Ua|0)<0){ib=c[B>>2]|0;c[m>>2]=c[x>>2];$a(ib,16,1728,m)}else{if(!Ua)break d;Ya=c[x>>2]|0;switch(Ya|0){case 48:{Ua=od(n)|0;if((Ua|0)<0)break e;else break d};case 34:{Ua=qd(n)|0;if((Ua|0)<0)break e;else break d};case 40:case 39:{Ua=sd(n)|0;if((Ua|0)<0)break e;else break d};case 9:case 8:case 7:case 6:case 21:case 20:case 19:case 18:case 17:case 16:case 5:case 4:case 3:case 2:case 0:case 1:{Va=c[y>>2]|0;Xa=Va+204|0;Ua=Va+212|0;hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;Wa=Va+220|0;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;ib=ib&255;a[Fa>>0]=ib;if(!((Ya+ -16|0)>>>0>4|ib<<24>>24==0)?(b[Ta>>1]=(e[Ta>>1]|0)+1&255,c[Ga>>2]=2147483647,(Ya+ -19|0)>>>0<2):0){Jc(n);Ya=c[x>>2]|0}a[Y>>0]=0;if((Ya+ -16|0)>>>0<8){hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[Y>>0]=ib}Za=pc(Xa)|0;c[X>>2]=Za;if(Za>>>0>255){A=46;break c}Ya=c[n+(Za<<2)+380>>2]|0;if(!Ya){A=46;break c}if(!(a[Fa>>0]|0)){ab=c[Ya+4>>2]|0;if((c[Ea>>2]|0)!=(ab|0)){A=50;break c}}else ab=c[Ya+4>>2]|0;c[Ea>>2]=ab;_a=c[x>>2]|0;Za=(_a|0)==21;if(Za?(c[q>>2]|0)==1:0)a[Y>>0]=1;Ya=c[wa>>2]|0;ab=c[(c[n+(c[ab>>2]<<2)+252>>2]|0)+4>>2]|0;if((Ya|0)!=(ab|0)){c[wa>>2]=ab;f:do if(Ya){if((_a+ -16|0)>>>0>7|Za)break;do if((c[ab+13120>>2]|0)==(c[Ya+13120>>2]|0)){if((c[ab+13124>>2]|0)!=(c[Ya+13124>>2]|0))break;if((c[ab+76+(((c[ab+72>>2]|0)+ -1|0)*12|0)>>2]|0)==(c[Ya+(((c[Ya+72>>2]|0)+ -1|0)*12|0)+76>>2]|0))break f}while(0);a[Y>>0]=0}while(0);Jc(n);Ya=c[wa>>2]|0;ic(n);cb=c[Ya+13064>>2]|0;_a=Ya+13120|0;hb=c[_a>>2]|0;ab=Ya+13124|0;ib=c[ab>>2]|0;cb=$((ib>>cb)+1|0,(hb>>cb)+1|0)|0;Za=$(c[Ya+13132>>2]|0,c[Ya+13128>>2]|0)|0;db=Ya+13156|0;eb=Ya+13160|0;bb=$(c[eb>>2]|0,c[db>>2]|0)|0;c[za>>2]=(hb>>2)+1;c[ya>>2]=(ib>>2)+1;if(Za>>>0>=14510024){c[Z>>2]=0;if(Za>>>0>=268435455){A=64;break c}}else c[Z>>2]=Sd(Za*148|0)|0;ib=Sd(Za<<3)|0;c[_>>2]=ib;if((c[Z>>2]|0)==0|(ib|0)==0){A=104;break c}gb=Ya+13144|0;fb=Ya+13140|0;c[aa>>2]=Md($(c[fb>>2]|0,c[gb>>2]|0)|0)|0;gb=c[gb>>2]|0;fb=c[fb>>2]|0;if(!fb){A=68;break c}if((2147483647/(fb>>>0)|0)>>>0<=gb>>>0){A=68;break c}ib=Md($(fb,gb)|0)|0;c[ba>>2]=ib;if((c[aa>>2]|0)==0|(ib|0)==0){A=104;break c}gb=c[Ya+13148>>2]|0;fb=c[Ya+13152>>2]|0;do if(!fb)fb=0;else{if((2147483647/(fb>>>0)|0)>>>0<=gb>>>0){fb=0;break}fb=Md($(fb,gb)|0)|0}while(0);c[Ba>>2]=fb;c[ca>>2]=Sd(bb)|0;db=Md($((c[eb>>2]|0)+1|0,(c[db>>2]|0)+1|0)|0)|0;c[Ca>>2]=db;if(!(c[ca>>2]|0)){A=104;break c}if((c[Ba>>2]|0)==0|(db|0)==0){A=104;break c}c[ea>>2]=Md(Za)|0;if(cb>>>0>=536870911){c[Da>>2]=0;if(cb>>>0>=2147483647){A=78;break c}}else c[Da>>2]=Md(cb<<2)|0;ib=Md(cb)|0;c[da>>2]=ib;if(!ib){A=104;break c}if(!(c[ea>>2]|0)){A=104;break c}if(!(c[Da>>2]|0)){A=104;break c}db=c[za>>2]|0;cb=c[ya>>2]|0;if(!cb){A=83;break c}if((2147483647/(cb>>>0)|0)>>>0>db>>>0){ib=Sd($(cb,db)|0)|0;db=c[za>>2]|0;cb=c[ya>>2]|0;c[xa>>2]=ib;if(!cb){A=88;break c}}else c[xa>>2]=0;if((2147483647/(cb>>>0)|0)>>>0<=db>>>0){A=88;break c}ib=Sd($(cb,db)|0)|0;c[Aa>>2]=ib;if((c[xa>>2]|0)==0|(ib|0)==0){A=104;break c}c[ga>>2]=_d(bb,3)|0;ib=_d(Za*392|0,3)|0;c[fa>>2]=ib;if((c[ga>>2]|0)==0|(ib|0)==0){A=104;break c}ib=c[B>>2]|0;c[ib+124>>2]=c[_a>>2];c[ib+128>>2]=c[ab>>2];c[ib+116>>2]=c[Ya+12>>2];c[ib+120>>2]=c[Ya+16>>2];c[ib+136>>2]=c[Ya+60>>2];c[ib+172>>2]=c[Ya+(((c[Ya+72>>2]|0)+ -1|0)*12|0)+80>>2];ib=Ya+160|0;c[m+0>>2]=c[ib+0>>2];c[m+4>>2]=c[ib+4>>2];if(!(c[Ya+176>>2]|0)){Za=c[B>>2]|0;c[Za+392>>2]=1}else{Za=c[B>>2]|0;c[Za+392>>2]=(c[Ya+184>>2]|0)!=0?2:1}if(!(c[Ya+188>>2]|0)){c[Za+380>>2]=2;c[Za+384>>2]=2;c[Za+388>>2]=2}else{c[Za+380>>2]=d[Ya+192>>0];c[Za+384>>2]=d[Ya+193>>0];c[Za+388>>2]=d[Ya+194>>0]}ib=Ya+52|0;qc(ia,c[ib>>2]|0);Oc(ha,c[ib>>2]|0);if(a[Ya+12941>>0]|0){ge(c[ka>>2]|0);ab=c[ka>>2]|0;ib=c[B>>2]|0;Za=ab+64|0;c[Za>>2]=(c[ib+124>>2]|0)+2;bb=ab+68|0;c[bb>>2]=(c[ib+128>>2]|0)+2;if((Ed(ib,ab,1)|0)>=0){eb=c[ab>>2]|0;if(eb){_a=1<>2];cb=ab;db=0;do{c[cb>>2]=eb+((c[ab+(db<<2)+32>>2]|0)+_a);db=db+1|0;cb=ab+(db<<2)|0;eb=c[cb>>2]|0}while((eb|0)!=0)}ib=c[B>>2]|0;c[Za>>2]=c[ib+124>>2];c[bb>>2]=c[ib+128>>2]}c[ja>>2]=c[ka>>2]}c[wa>>2]=Ya;c[Sa>>2]=c[(c[n+(c[Ya>>2]<<2)+188>>2]|0)+4>>2];b[Ta>>1]=(e[Ta>>1]|0)+1&255;c[Ga>>2]=2147483647}_a=c[B>>2]|0;c[_a+832>>2]=d[Ya+302>>0];c[_a+836>>2]=d[Ya+335>>0];a[La>>0]=0;do if(!(a[Fa>>0]|0)){Za=c[Ea>>2]|0;if(a[Za+41>>0]|0){hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[La>>0]=ib}ab=Ya+13128|0;Ya=Ya+13132|0;bb=($(c[ab>>2]<<1,c[Ya>>2]|0)|0)+ -2|0;cb=bb>>>0>65535;bb=cb?bb>>>16:bb;cb=cb?16:0;if(bb&65280){cb=cb|8;bb=bb>>>8}gb=(d[7416+bb>>0]|0)+cb|0;hb=c[Ua>>2]|0;ib=c[Wa>>2]|0;bb=(c[Xa>>2]|0)+(hb>>>3)|0;bb=(ye(d[bb>>0]|d[bb+1>>0]<<8|d[bb+2>>0]<<16|d[bb+3>>0]<<24|0)|0)<<(hb&7)>>>(32-gb|0);hb=gb+hb|0;c[Ua>>2]=ib>>>0>hb>>>0?hb:ib;c[Ma>>2]=bb;if(bb>>>0>=($(c[Ya>>2]|0,c[ab>>2]|0)|0)>>>0){A=112;break c}if(a[La>>0]|0)if(!(a[Ia>>0]|0)){A=171;break c}else break;else{c[Qa>>2]=bb;c[Ra>>2]=(c[Ra>>2]|0)+1;A=116;break}}else{c[Qa>>2]=0;c[Ma>>2]=0;c[Ra>>2]=0;a[Ia>>0]=0;Za=c[Ea>>2]|0;A=116}while(0);g:do if((A|0)==116){A=0;a[Ia>>0]=0;Ya=Za+1624|0;if((c[Ya>>2]|0)>0){ab=c[Wa>>2]|0;Za=c[Ua>>2]|0;_a=0;do{ib=Za+1|0;Za=ab>>>0>ib>>>0?ib:ab;c[Ua>>2]=Za;_a=_a+1|0}while((_a|0)<(c[Ya>>2]|0))}Za=pc(Xa)|0;c[ra>>2]=Za;if(Za>>>0>=3){A=120;break c}Ya=c[x>>2]|0;if(!((Ya+ -16|0)>>>0>7|(Za|0)==2)){A=122;break c}a[N>>0]=1;if(a[(c[Ea>>2]|0)+39>>0]|0){hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[N>>0]=ib}Za=c[wa>>2]|0;if(a[Za+8>>0]|0){gb=c[Ua>>2]|0;hb=c[Wa>>2]|0;ib=(c[Xa>>2]|0)+(gb>>>3)|0;ib=(ye(d[ib>>0]|d[ib+1>>0]<<8|d[ib+2>>0]<<16|d[ib+3>>0]<<24|0)|0)<<(gb&7)>>>30;gb=gb+2|0;c[Ua>>2]=hb>>>0>gb>>>0?gb:hb;a[T>>0]=ib}if((Ya+ -19|0)>>>0>=2){A=128;break c}c[I>>2]=0;c[va>>2]=0;h:do if(!(c[G>>2]|0)){switch(Ya|0){case 9:case 8:case 7:case 6:case 4:case 2:case 0:break h;default:{}}c[J>>2]=0}while(0);do if(a[Za+12941>>0]|0){hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[H>>0]=ib;if(!(c[Za+4>>2]|0)){a[U>>0]=0;a[K>>0]=0;break}else{hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;ib=ib&255;a[K>>0]=ib;a[U>>0]=ib;break}}else{a[H>>0]=0;a[U>>0]=0;a[K>>0]=0}while(0);c[M>>2]=0;c[L>>2]=0;Ya=pc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[Oa>>2]=Ya;Za=c[Ea>>2]|0;if(!(a[Za+36>>0]|0)){c[P>>2]=0;c[O>>2]=0}else{Ya=pc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[P>>2]=Ya;Ya=pc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[O>>2]=Ya;Za=c[Ea>>2]|0}if(!(a[Za+1631>>0]|0))Ya=0;else{ib=c[Ua>>2]|0;Ya=d[(c[Xa>>2]|0)+(ib>>>3)>>0]<<(ib&7)>>>7&1;c[Ua>>2]=((ib|0)<(c[Wa>>2]|0)&1)+ib;Ya=Ya&255}a[Q>>0]=Ya;i:do if(!(a[Za+55>>0]|0)){a[V>>0]=0;c[S>>2]=0;c[R>>2]=0}else{do if(a[Za+56>>0]|0){ib=c[Ua>>2]|0;ab=c[Xa>>2]|0;hb=d[ab+(ib>>>3)>>0]|0;Ya=c[Wa>>2]|0;_a=((ib|0)<(Ya|0)&1)+ib|0;c[Ua>>2]=_a;if(!(hb&128>>>(ib&7)))break;ib=d[ab+(_a>>>3)>>0]<<(_a&7)>>>7&1;c[Ua>>2]=((_a|0)<(Ya|0)&1)+_a;ib=ib&255;a[V>>0]=ib;if(ib<<24>>24)break i;Ya=pc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[S>>2]=Ya<<1;Ya=pc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[R>>2]=Ya<<1;Za=c[Ea>>2]|0;break i}while(0);a[V>>0]=a[Za+57>>0]|0;c[S>>2]=c[Za+60>>2];c[R>>2]=c[Za+64>>2]}while(0);Ya=a[Za+54>>0]|0;j:do if(Ya<<24>>24){do if(!(a[H>>0]|0)){if(a[U>>0]|0)break;if(a[V>>0]|0)break j}while(0);hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[W>>0]=ib;break g}while(0);a[W>>0]=Ya}while(0);c[Pa>>2]=0;if(!((a[Za+42>>0]|0)==0?(a[Za+43>>0]|0)==0:0))A=174;k:do if((A|0)==174){A=0;ib=pc(Xa)|0;c[Pa>>2]=ib;if((ib|0)<=0){c[F>>2]=0;break}Ya=(pc(Xa)|0)+1|0;Za=Ya>>4;Ya=Ya&15;Pd(la);Pd(ma);Pd(na);_a=c[Pa>>2]|0;do if(_a>>>0<536870911){ib=Md(_a<<2)|0;_a=c[Pa>>2]|0;c[la>>2]=ib;if(_a>>>0>=536870911){A=178;break}ib=Md(_a<<2)|0;_a=c[Pa>>2]|0;c[ma>>2]=ib;if(_a>>>0>=536870911){ab=0;break}ab=Md(_a<<2)|0}else{c[la>>2]=0;A=178}while(0);if((A|0)==178){A=0;c[ma>>2]=0;ab=0}c[na>>2]=ab;_a=c[la>>2]|0;if(!_a){A=185;break c}if((c[ma>>2]|0)==0|(ab|0)==0){A=185;break c}if((c[Pa>>2]|0)>0){db=(Za|0)>0;bb=(Ya|0)==0;ab=32-Ya|0;cb=0;do{if(db){eb=c[Wa>>2]|0;fb=c[Xa>>2]|0;hb=c[Ua>>2]|0;gb=0;ib=0;do{jb=fb+(hb>>>3)|0;jb=(ye(d[jb>>0]|d[jb+1>>0]<<8|d[jb+2>>0]<<16|d[jb+3>>0]<<24|0)|0)<<(hb&7)>>>16;kb=hb+16|0;hb=eb>>>0>kb>>>0?kb:eb;c[Ua>>2]=hb;ib=jb|ib<<16;gb=gb+1|0}while((gb|0)!=(Za|0))}else ib=0;if(!bb){hb=c[Ua>>2]|0;jb=c[Wa>>2]|0;kb=(c[Xa>>2]|0)+(hb>>>3)|0;kb=(ye(d[kb>>0]|d[kb+1>>0]<<8|d[kb+2>>0]<<16|d[kb+3>>0]<<24|0)|0)<<(hb&7)>>>ab;hb=hb+Ya|0;c[Ua>>2]=jb>>>0>hb>>>0?hb:jb;ib=kb+(ib<>2]=ib+1;cb=cb+1|0}while((cb|0)<(c[Pa>>2]|0))}do if((d[E>>0]|0)>1){kb=c[Ea>>2]|0;if((c[kb+48>>2]|0)<=1?(c[kb+44>>2]|0)<=1:0)break;c[F>>2]=0;a[E>>0]=1;break k}while(0);c[F>>2]=0}while(0);Ya=c[Ea>>2]|0;if(a[Ya+1628>>0]|0){Xa=pc(Xa)|0;jb=ve(Xa|0,0,3)|0;hb=D;Za=c[Ua>>2]|0;kb=(c[Va+216>>2]|0)-Za|0;ib=((kb|0)<0)<<31>>31;if((hb|0)>(ib|0)|(hb|0)==(ib|0)&jb>>>0>kb>>>0){A=202;break c}if(Xa){Wa=c[Wa>>2]|0;Ya=0;do{kb=Za+8|0;Za=Wa>>>0>kb>>>0?kb:Wa;Ya=Ya+1|0}while((Ya|0)!=(Xa|0));c[Ua>>2]=Za}Ya=c[Ea>>2]|0}Wa=(c[Ya+16>>2]|0)+26+(c[Oa>>2]|0)|0;a[Ja>>0]=Wa;Wa=Wa<<24;if((Wa|0)>855638016){A=207;break c}Wa=Wa>>24;Xa=c[(c[wa>>2]|0)+13192>>2]|0;if((Wa|0)<(0-Xa|0)){A=209;break c}kb=c[Ma>>2]|0;c[Na>>2]=kb;if((kb|0)==0?(a[La>>0]|0)!=0:0){A=212;break c}Ua=(c[Va+216>>2]|0)-(c[Ua>>2]|0)|0;if((Ua|0)<0){A=214;break c}a[(c[y>>2]|0)+203>>0]=(a[La>>0]|0)==0&1;if(!(a[(c[Ea>>2]|0)+22>>0]|0))a[(c[y>>2]|0)+272>>0]=a[Ja>>0]|0;a[Ia>>0]=1;a[(c[y>>2]|0)+302>>0]=0;a[(c[y>>2]|0)+303>>0]=0;Va=c[Ga>>2]|0;Ua=c[x>>2]|0;l:do if((Va|0)==2147483647)switch(Ua|0){case 18:case 16:case 17:case 21:{Va=c[va>>2]|0;c[Ga>>2]=Va;break l};case 20:case 19:{c[Ga>>2]=-2147483648;Va=-2147483648;break l};default:{Va=2147483647;break l}}while(0);do if((Ua+ -8|0)>>>0<2){if((c[va>>2]|0)<=(Va|0)){c[oa>>2]=0;break d}if((Ua|0)!=9)break;c[Ga>>2]=-2147483648}while(0);m:do if(a[Fa>>0]|0){Ua=c[y>>2]|0;jb=c[wa>>2]|0;Va=c[jb+13064>>2]|0;kb=c[jb+13120>>2]>>Va;Va=(c[jb+13124>>2]>>Va)+1|0;ue(c[xa>>2]|0,0,$(c[ya>>2]|0,c[za>>2]|0)|0)|0;ue(c[Aa>>2]|0,0,$(c[ya>>2]|0,c[za>>2]|0)|0)|0;jb=c[wa>>2]|0;ue(c[Ba>>2]|0,0,$(c[jb+13152>>2]|0,c[jb+13148>>2]|0)|0)|0;jb=c[wa>>2]|0;ue(c[Ca>>2]|0,0,$((c[jb+13160>>2]|0)+1|0,(c[jb+13156>>2]|0)+1|0)|0)|0;ue(c[Da>>2]|0,-1,$((kb<<2)+4|0,Va)|0)|0;c[oa>>2]=0;c[qa>>2]=c[x>>2];Va=c[Ea>>2]|0;if(a[Va+42>>0]|0)c[Ua+312>>2]=c[c[Va+1648>>2]>>2]<>2]|0)+13080>>2];Ua=Lc(n,sa,c[va>>2]|0)|0;do if((Ua|0)>=0){c[(c[c[o>>2]>>2]|0)+80>>2]=((c[x>>2]|0)+ -16|0)>>>0<8&1;c[(c[sa>>2]|0)+84>>2]=3-(c[ra>>2]|0);ge(c[ta>>2]|0);Ua=Mc(n,c[ta>>2]|0,0)|0;if((Ua|0)<0)break;break m}while(0);if(!(c[o>>2]|0)){A=233;break c}c[o>>2]=0;if((Ua|0)<0)break c}else{if(c[o>>2]|0)break;$a(c[B>>2]|0,16,1760,m);Ua=0;break e}while(0);Va=c[x>>2]|0;Ua=c[qa>>2]|0;if((Va|0)!=(Ua|0)){A=240;break c}c[m>>2]=0;c[Ha>>2]=1;Ua=c[B>>2]|0;Ka[c[Ua+816>>2]&1](Ua,1,m,p,1,4)|0;Ua=c[p>>2]|0;kb=c[wa>>2]|0;if((Ua|0)>=($(c[kb+13132>>2]|0,c[kb+13128>>2]|0)|0))c[oa>>2]=1;if((Ua|0)<0)break e;else break d};case 37:case 36:{b[Ta>>1]=(e[Ta>>1]|0)+1&255;c[Ga>>2]=2147483647;break d};case 38:case 35:break d;default:{kb=c[B>>2]|0;c[m>>2]=Ya;$a(kb,32,1848,m);break d}}}while(0);r=(c[(c[B>>2]|0)+688>>2]&8|0)==0?0:Ua;A=247}while(0);if((A|0)==247?(A=0,(r|0)<0):0)break;C=C+1|0;if((C|0)>=(c[j>>2]|0))break a}switch(A|0){case 46:{kb=c[B>>2]|0;c[m>>2]=Za;$a(kb,16,2104,m);break};case 50:{$a(c[B>>2]|0,16,2136,m);break};case 64:{c[_>>2]=0;A=104;break};case 68:{c[ba>>2]=0;A=104;break};case 78:{c[da>>2]=0;A=104;break};case 83:{c[xa>>2]=0;A=88;break};case 112:{c[m>>2]=bb;$a(_a,16,2168,m);break};case 120:{kb=c[B>>2]|0;c[m>>2]=Za;$a(kb,16,2208,m);break};case 122:{$a(c[B>>2]|0,16,2240,m);break};case 128:{ua();break};case 171:{$a(_a,16,2272,m);break};case 185:{c[Pa>>2]=0;$a(c[B>>2]|0,16,2312,m);break};case 202:{$a(c[B>>2]|0,16,2344,m);break};case 207:{Xa=c[(c[wa>>2]|0)+13192>>2]|0;Wa=Wa>>24;A=209;break};case 212:{$a(c[B>>2]|0,16,2448,m);break};case 214:{kb=c[B>>2]|0;c[m>>2]=0-Ua;$a(kb,16,2480,m);break};case 233:{c[o>>2]=0;break};case 240:{kb=c[B>>2]|0;c[m>>2]=Ua;c[m+4>>2]=Va;$a(kb,16,1800,m);break}}if((A|0)==88){c[Aa>>2]=0;A=104}else if((A|0)==209){kb=c[B>>2]|0;c[m>>2]=Wa;c[m+4>>2]=0-Xa;$a(kb,16,2392,m)}if((A|0)==104){ic(n);ic(n);c[wa>>2]=0}kb=c[B>>2]|0;c[m>>2]=C;$a(kb,24,1696,m);break}else if((A|0)==13){$a(c[n+4>>2]|0,16,1640,m);z=-1094995529;break}else if((A|0)==19){$a(c[n+4>>2]|0,16,1664,m);z=-1094995529;break}}else z=0;while(0);if((z|0)<0){kb=z;i=k;return kb|0}o=n+5828|0;if(c[o>>2]|0){c[m>>2]=c[n+5796>>2];$a(f,48,1608,m);c[o>>2]=0}f=c[n+172>>2]|0;if(c[f+304>>2]|0){he(g,f);c[h>>2]=1}kb=c[l>>2]|0;i=k;return kb|0}function gc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;e=c[b+60>>2]|0;ic(e);b=e+7688|0;f=e+7668|0;if((c[b>>2]|0)>0){g=0;do{Pd((c[f>>2]|0)+(g<<2)|0);g=g+1|0}while((g|0)<(c[b>>2]|0))}Pd(e+7672|0);Pd(e+7664|0);Pd(f);Pd(e+152|0);fe(e+168|0);fe(e+172|0);g=e+3492|0;f=0;do{l=g+(f*72|0)|0;Hc(e,l,-1);fe(l);f=f+1|0}while((f|0)!=32);g=e+188|0;f=0;do{Zd(g+(f<<2)|0);f=f+1|0}while((f|0)!=16);g=e+252|0;f=0;do{Zd(g+(f<<2)|0);f=f+1|0}while((f|0)!=32);g=e+380|0;f=0;do{Zd(g+(f<<2)|0);f=f+1|0}while((f|0)!=256);c[e+180>>2]=0;c[e+184>>2]=0;c[e+176>>2]=0;Zd(e+1404|0);Pd(e+3064|0);Pd(e+3068|0);Pd(e+3072|0);h=e+141|0;l=a[h>>0]|0;f=e+72|0;if((l&255)>1){g=e+8|0;j=1;do{k=f+(j<<2)|0;if(c[k>>2]|0){Pd(k);Pd(g+(j<<2)|0);l=a[h>>0]|0}j=j+1|0}while((j|0)<(l&255|0))}g=e+136|0;if((c[g>>2]|0)==(c[f>>2]|0))c[g>>2]=0;Pd(f);f=e+7680|0;if((c[b>>2]|0)<=0){Pd(f);c[b>>2]=0;i=d;return 0}e=0;do{Pd((c[f>>2]|0)+(e<<4)|0);e=e+1|0}while((e|0)<(c[b>>2]|0));Pd(f);c[b>>2]=0;i=d;return 0}function hc(a){a=a|0;var b=0;b=i;a=c[a+60>>2]|0;Kc(a);c[a+5816>>2]=2147483647;i=b;return}function ic(a){a=a|0;var b=0;b=i;Pd(a+3472|0);Pd(a+3476|0);Pd(a+7608|0);Pd(a+7612|0);Pd(a+7616|0);Pd(a+7620|0);Pd(a+7624|0);Pd(a+7592|0);Pd(a+7604|0);Pd(a+7628|0);Pd(a+7596|0);Pd(a+7600|0);Pd(a+3064|0);Pd(a+3072|0);Pd(a+3068|0);$d(a+1408|0);$d(a+1412|0);i=b;return}function jc(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+16|0;e=b;h=c[a+136>>2]|0;j=h+212|0;f=c[j>>2]|0;g=c[h+204>>2]|0;l=d[g+(f>>>3)>>0]|0;h=c[h+220>>2]|0;k=((f|0)<(h|0)&1)+f|0;c[j>>2]=k;if(l&128>>>(f&7)){l=-1094995529;i=b;return l|0}f=g+(k>>>3)|0;f=(ye(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24|0)|0)<<(k&7)>>>26;l=k+6|0;l=h>>>0>l>>>0?l:h;c[j>>2]=l;c[a+3480>>2]=f;k=g+(l>>>3)|0;k=(ye(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0)<<(l&7)>>>26;l=l+6|0;l=h>>>0>l>>>0?l:h;c[j>>2]=l;g=g+(l>>>3)|0;g=(ye(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0)<<(l&7)>>>29;l=l+3|0;c[j>>2]=h>>>0>l>>>0?l:h;g=g+ -1|0;c[a+3484>>2]=g;if((g|0)<0){l=-1094995529;i=b;return l|0}l=c[a+4>>2]|0;c[e>>2]=f;c[e+4>>2]=k;c[e+8>>2]=g;$a(l,48,2520,e);l=(k|0)==0&1;i=b;return l|0}function kc(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;f=i;i=i+16|0;n=f;e=c[e+60>>2]|0;k=e+180|0;E=c[k>>2]|0;h=1<>2];l=e+184|0;o=c[l>>2]|0;A=c[(c[o+1668>>2]|0)+(c[e+3468>>2]<<2)>>2]|0;m=(a[e+2417>>0]|0)==0;if(!A)if(m)g=5;else{$a(c[e+4>>2]|0,16,1872,n);W=-1094995529;i=f;return W|0}else if(!m){m=e+7604|0;t=e+2404|0;if((c[(c[m>>2]|0)+(c[(c[o+1672>>2]|0)+(A+ -1<<2)>>2]<<2)>>2]|0)!=(c[t>>2]|0)){$a(c[e+4>>2]|0,16,1904,n);W=-1094995529;i=f;return W|0}}else g=5;if((g|0)==5){m=e+7604|0;t=e+2404|0}s=h+ -1|0;p=e+136|0;y=e+3472|0;o=e+3024|0;n=e+3025|0;w=e+3052|0;x=e+3476|0;v=e+3056|0;u=e+3030|0;r=e+7628|0;z=0;q=0;do{if((A|0)>=(c[E+13136>>2]|0))break;J=c[l>>2]|0;B=c[(c[J+1672>>2]|0)+(A<<2)>>2]|0;H=E+13120|0;I=E+13080|0;G=c[I>>2]|0;q=s+(c[H>>2]|0)>>G;z=((B|0)%(q|0)|0)<>2]|0;G=1<>2]|0;D=B-F|0;c[(c[m>>2]|0)+(B<<2)>>2]=F;do if(!(a[J+43>>0]|0)){if(!(a[J+42>>0]|0)){c[C+312>>2]=c[H>>2];H=E;break}if((A|0)!=0?(W=c[J+1676>>2]|0,(c[W+(A<<2)>>2]|0)!=(c[W+(A+ -1<<2)>>2]|0)):0){H=c[I>>2]|0;c[C+312>>2]=(c[(c[J+1648>>2]|0)+(c[(c[J+1664>>2]|0)+(z>>H<<2)>>2]<<2)>>2]<>0]=1;H=c[k>>2]|0}else H=E}else{if((z|0)==0?(G+ -1&q|0)==0:0){a[C+203>>0]=1;E=c[k>>2]|0}c[C+312>>2]=c[E+13120>>2];H=E}while(0);E=G+q|0;G=c[H+13124>>2]|0;c[C+316>>2]=(E|0)>(G|0)?G:E;E=C+31312|0;c[E>>2]=0;G=c[l>>2]|0;if(!(a[G+42>>0]|0)){if((B|0)==(F|0)){c[E>>2]=1;F=1}else F=0;if((D|0)<(c[H+13128>>2]|0)){F=F|4;c[E>>2]=F}}else{if((z|0)>0){W=c[G+1676>>2]|0;I=B+ -1|0;if((c[W+(A<<2)>>2]|0)==(c[W+(c[(c[G+1668>>2]|0)+(I<<2)>>2]<<2)>>2]|0))F=0;else{c[E>>2]=2;F=2}W=c[m>>2]|0;if((c[W+(B<<2)>>2]|0)!=(c[W+(I<<2)>>2]|0)){F=F|1;c[E>>2]=F}}else F=0;if((q|0)>0){W=c[G+1676>>2]|0;H=H+13128|0;I=c[H>>2]|0;if((c[W+(A<<2)>>2]|0)!=(c[W+(c[(c[G+1668>>2]|0)+(B-I<<2)>>2]<<2)>>2]|0)){F=F|8;c[E>>2]=F;I=c[H>>2]|0}W=c[m>>2]|0;if((c[W+(B<<2)>>2]|0)!=(c[W+(B-I<<2)>>2]|0)){F=F|4;c[E>>2]=F}}}E=(z|0)>0;if(E&(D|0)>0)G=(F>>>1&1^1)&255;else G=0;a[C+308>>0]=G;if((q|0)>0){if((D|0)<(c[(c[k>>2]|0)+13128>>2]|0))F=0;else F=(F>>>3&1^1)&255;a[C+309>>0]=F;F=c[(c[k>>2]|0)+13128>>2]|0;if((D+1|0)<(F|0))F=0;else{W=c[l>>2]|0;V=c[W+1676>>2]|0;F=(c[V+(A<<2)>>2]|0)==(c[V+(c[(c[W+1668>>2]|0)+(B+1-F<<2)>>2]<<2)>>2]|0)&1}a[C+310>>0]=F;if(E?(j=c[(c[k>>2]|0)+13128>>2]|0,(D|0)>(j|0)):0){D=c[l>>2]|0;W=c[D+1676>>2]|0;D=(c[W+(A<<2)>>2]|0)==(c[W+(c[(c[D+1668>>2]|0)+(B+ -1-j<<2)>>2]<<2)>>2]|0)&1}else D=0}else{a[C+309>>0]=0;a[C+310>>0]=0;D=0}a[C+311>>0]=D;ob(e,A);D=c[k>>2]|0;E=c[D+13080>>2]|0;F=z>>E;E=q>>E;G=c[p>>2]|0;D=($(c[D+13128>>2]|0,E)|0)+F|0;C=c[y>>2]|0;if((a[o>>0]|0)==0?(a[n>>0]|0)==0:0){M=0;G=0}else{if((F|0)>0?(a[G+308>>0]|0)!=0:0)M=tb(e)|0;else M=0;if((E|0)>0&(M|0)==0)if(!(a[G+309>>0]|0)){M=0;G=0}else{M=0;G=(tb(e)|0)!=0}else G=0}K=(c[(c[k>>2]|0)+4>>2]|0)!=0?3:1;L=C+(D*148|0)+143|0;J=C+(D*148|0)+144|0;I=C+(D*148|0)+104|0;H=C+(D*148|0)+108|0;R=(M|0)==0;Q=R&(G^1);P=E+ -1|0;N=F+ -1|0;S=0;do{M=c[l>>2]|0;M=d[((S|0)==0?M+1644|0:M+1645|0)>>0]|0;a:do if(a[e+S+3024>>0]|0){T=(S|0)==2;do if(!T){if(Q){U=(vb(e)|0)&255;O=C+(D*148|0)+S+142|0;a[O>>0]=U;break}if(!R){U=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;U=a[(c[y>>2]|0)+(U*148|0)+S+142>>0]|0;O=C+(D*148|0)+S+142|0;a[O>>0]=U;break}if(G){U=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;U=a[(c[y>>2]|0)+(U*148|0)+S+142>>0]|0;O=C+(D*148|0)+S+142|0;a[O>>0]=U;break}else{a[C+(D*148|0)+S+142>>0]=0;break a}}else{U=a[L>>0]|0;a[J>>0]=U;c[H>>2]=c[I>>2];O=J}while(0);if(U<<24>>24){U=0;do{do if(!Q){if(!R){W=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;c[C+(D*148|0)+(S<<4)+(U<<2)>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<4)+(U<<2)>>2];break}if(G){W=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;c[C+(D*148|0)+(S<<4)+(U<<2)>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<4)+(U<<2)>>2];break}else{c[C+(D*148|0)+(S<<4)+(U<<2)>>2]=0;break}}else c[C+(D*148|0)+(S<<4)+(U<<2)>>2]=yb(e)|0;while(0);U=U+1|0}while((U|0)!=4);do if((a[O>>0]|0)==1){T=0;do{do if(c[C+(D*148|0)+(S<<4)+(T<<2)>>2]|0){if(Q){c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=zb(e)|0;break}if(!R){W=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<4)+(T<<2)+48>>2];break}if(G){W=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<4)+(T<<2)+48>>2];break}else{c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=0;break}}else c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=0;while(0);T=T+1|0}while((T|0)!=4);if(Q){a[C+(D*148|0)+S+96>>0]=xb(e)|0;break}if(!R){W=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;a[C+(D*148|0)+S+96>>0]=a[(c[y>>2]|0)+(W*148|0)+S+96>>0]|0;break}if(G){W=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;a[C+(D*148|0)+S+96>>0]=a[(c[y>>2]|0)+(W*148|0)+S+96>>0]|0;break}else{a[C+(D*148|0)+S+96>>0]=0;break}}else if(!T){if(Q){c[C+(D*148|0)+(S<<2)+100>>2]=Ab(e)|0;break}if(!R){W=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;c[C+(D*148|0)+(S<<2)+100>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<2)+100>>2];break}if(G){W=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;c[C+(D*148|0)+(S<<2)+100>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<2)+100>>2];break}else{c[C+(D*148|0)+(S<<2)+100>>2]=0;break}}while(0);b[C+(D*148|0)+(S*10|0)+112>>1]=0;U=0;do{V=c[C+(D*148|0)+(S<<4)+(U<<2)>>2]|0;W=U;U=U+1|0;T=C+(D*148|0)+(S*10|0)+(U<<1)+112|0;b[T>>1]=V;if((a[O>>0]|0)==2){if((W|0)>1){V=0-V|0;b[T>>1]=V}}else if(c[C+(D*148|0)+(S<<4)+(W<<2)+48>>2]|0){V=0-V|0;b[T>>1]=V}b[T>>1]=V<<16>>16<>0]=0;while(0);S=S+1|0}while((S|0)<(K|0));C=c[x>>2]|0;c[C+(B<<3)>>2]=c[w>>2];c[C+(B<<3)+4>>2]=c[v>>2];a[(c[r>>2]|0)+B>>0]=a[u>>0]|0;C=lc(e,z,q,c[(c[k>>2]|0)+13080>>2]|0,0)|0;if((C|0)<0){g=110;break}A=A+1|0;nb(e,A);$b(e,z,q,h);E=c[k>>2]|0}while((C|0)!=0);if((g|0)==110){c[(c[m>>2]|0)+(B<<2)>>2]=-1;W=C;i=f;return W|0}if((z+h|0)<(c[E+13120>>2]|0)){W=A;i=f;return W|0}if((q+h|0)<(c[E+13124>>2]|0)){W=A;i=f;return W|0}Zb(e,z,q,h);W=A;i=f;return W|0}function lc(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0;j=i;i=i+32|0;B=j;D=j+20|0;C=b+136|0;p=c[C>>2]|0;l=1<>2]|0;q=b+184|0;t=c[q>>2]|0;s=(1<<(c[u+13080>>2]|0)-(c[t+24>>2]|0))+ -1|0;c[p+31232>>2]=h;k=l+e|0;if(((k|0)<=(c[u+13120>>2]|0)?(l+f|0)<=(c[u+13124>>2]|0):0)?(c[u+13064>>2]|0)>>>0>>0:0){u=Hb(b,h,e,f)|0;t=c[q>>2]|0}else u=(c[u+13064>>2]|0)>>>0>>0&1;if((a[t+22>>0]|0)!=0?((c[(c[m>>2]|0)+13080>>2]|0)-(c[t+24>>2]|0)|0)>>>0<=g>>>0:0){a[p+300>>0]=0;c[p+280>>2]=0}if((a[b+3048>>0]|0)!=0?((c[(c[m>>2]|0)+13080>>2]|0)-(d[(c[q>>2]|0)+1632>>0]|0)|0)>>>0<=g>>>0:0)a[p+301>>0]=0;if(u){o=l>>1;q=o+e|0;n=o+f|0;g=g+ -1|0;r=h+1|0;h=lc(b,e,f,g,r)|0;if((h|0)<0){aa=h;i=j;return aa|0}if(h){if((q|0)<(c[(c[m>>2]|0)+13120>>2]|0)){h=lc(b,q,f,g,r)|0;if((h|0)<0){aa=h;i=j;return aa|0}}if(h){if((n|0)<(c[(c[m>>2]|0)+13124>>2]|0)){h=lc(b,e,n,g,r)|0;if((h|0)<0){aa=h;i=j;return aa|0}}if(h){aa=c[m>>2]|0;if((q|0)<(c[aa+13120>>2]|0)?(n|0)<(c[aa+13124>>2]|0):0){h=lc(b,q,n,g,r)|0;if((h|0)<0){aa=h;i=j;return aa|0}}}else h=0}else h=0}else h=0;if((s&k|0)==0?(s&l+f|0)==0:0)c[p+276>>2]=a[p+272>>0];if(!h){aa=0;i=j;return aa|0}k=c[m>>2]|0;if((q+o|0)<(c[k+13120>>2]|0))k=1;else k=(n+o|0)<(c[k+13124>>2]|0);aa=k&1;i=j;return aa|0}p=c[C>>2]|0;t=c[m>>2]|0;s=c[t+13064>>2]|0;h=c[t+13140>>2]|0;t=1<<(c[t+13080>>2]|0)-(c[(c[q>>2]|0)+24>>2]|0);c[p+31236>>2]=e;c[p+31240>>2]=f;A=p+31252|0;a[A>>0]=1;x=p+31244|0;c[x>>2]=1;z=p+31248|0;c[z>>2]=0;w=p+31254|0;a[w>>0]=0;y=p+31253|0;a[y>>0]=0;u=($(f>>s,h)|0)+(e>>s)|0;G=b+7608|0;a[(c[G>>2]|0)+u>>0]=0;aa=p+31268|0;a[aa>>0]=1;a[aa+1>>0]=1;a[aa+2>>0]=1;a[aa+3>>0]=1;s=l>>s;t=t+ -1|0;if(a[(c[q>>2]|0)+40>>0]|0){aa=(Cb(b)|0)&255;a[p+31256>>0]=aa;if(aa<<24>>24)mc(b,e,f,g)}else a[p+31256>>0]=0;v=(s|0)>0;J=c[G>>2]|0;if(v){H=u;I=0;while(1){ue(J+H|0,0,s|0)|0;I=I+1|0;J=c[G>>2]|0;if((I|0)==(s|0))break;else H=H+h|0}}if(a[J+u>>0]|0)ua();if((c[x>>2]|0)==1?(c[(c[m>>2]|0)+13064>>2]|0)!=(g|0):0)E=c[z>>2]|0;else{H=Ib(b,g)|0;c[z>>2]=H;G=c[x>>2]|0;if((H|0)==3)I=(G|0)==1&1;else I=0;a[w>>0]=I;if((G|0)==1)E=H;else ua()}if((((E|0)==0?(F=c[m>>2]|0,(c[F+68>>2]|0)!=0):0)?(c[F+13048>>2]|0)>>>0<=g>>>0:0)?(c[F+13052>>2]|0)>>>0>=g>>>0:0){E=(Jb(b)|0)&255;a[y>>0]=E}else E=a[y>>0]|0;do if(!(E<<24>>24)){E=c[C>>2]|0;G=(c[E+31248>>2]|0)==3;F=G?2:1;J=0;do{H=J<<1;I=0;do{a[D+(I+H)>>0]=Kb(b)|0;I=I+1|0}while((I|0)<(F|0));J=J+1|0}while((J|0)<(F|0));S=l>>(G&1);R=E+31264|0;T=b+3488|0;U=B+4|0;G=B+8|0;H=b+7616|0;Q=E+31260|0;I=0;do{L=I<<1;M=($(I,S)|0)+f|0;J=0;do{N=J+L|0;Y=(a[D+N>>0]|0)==0;if(Y)c[R>>2]=Mb(b)|0;else c[Q>>2]=Lb(b)|0;V=($(J,S)|0)+e|0;X=c[C>>2]|0;aa=c[m>>2]|0;W=c[aa+13084>>2]|0;O=V>>W;K=M>>W;P=c[aa+13156>>2]|0;W=S>>W;aa=c[aa+13080>>2]|0;_=(1<>0]|0)==0?(_&M|0)==0:0)Z=1;else{Z=($(K+ -1|0,P)|0)+O|0;Z=d[(c[H>>2]|0)+Z>>0]|0}if((a[X+308>>0]|0)==0&(V|0)==0)_=1;else{_=O+ -1+($(K,P)|0)|0;_=d[(c[H>>2]|0)+_>>0]|0}V=c[(c[T>>2]|0)+16>>2]|0;aa=(M>>aa<>>0<2){c[B>>2]=0;c[U>>2]=1;c[G>>2]=26;_=0;aa=1;Z=26;break}else{c[B>>2]=_;aa=(_+29&31)+2|0;c[U>>2]=aa;Z=(_+31&31)+2|0;c[G>>2]=Z;break}else{c[B>>2]=_;c[U>>2]=aa;if(!((_|0)==0|(aa|0)==0)){c[G>>2]=0;Z=0;break}if((_|0)==1|(aa|0)==1){c[G>>2]=26;Z=26;break}else{c[G>>2]=1;Z=1;break}}while(0);if(Y){if((_|0)>(aa|0)){c[U>>2]=_;Y=aa&255;c[B>>2]=Y}else{Y=_;_=aa}if((Y|0)>(Z|0)){c[G>>2]=Y;aa=Z&255;c[B>>2]=aa;Z=Y;Y=aa}if((_|0)>(Z|0)){c[G>>2]=_;aa=Z&255;c[U>>2]=aa;Z=_}else aa=_;X=c[X+31264>>2]|0;X=((X|0)>=(Y|0)&1)+X|0;X=((X|0)>=(aa|0)&1)+X|0;X=((X|0)>=(Z|0)&1)+X|0}else X=c[B+(c[X+31260>>2]<<2)>>2]|0;W=(W|0)==0?1:W;_=X&255;if((W|0)>0){Y=0;do{Z=($(Y+K|0,P)|0)+O|0;ue((c[H>>2]|0)+Z|0,_|0,W|0)|0;Z=Y+O|0;X=0;do{a[V+(Z+($(X+K|0,P)|0))>>0]=0;X=X+1|0}while((X|0)<(W|0));Y=Y+1|0}while((Y|0)<(W|0))}a[E+N+31268>>0]=_;J=J+1|0}while((J|0)<(F|0));I=I+1|0}while((I|0)<(F|0));B=c[(c[m>>2]|0)+4>>2]|0;if(!B)break;else if((B|0)==2){C=Nb(b)|0;a[E+31281>>0]=C;B=a[E+31268>>0]|0;if((C|0)==4)B=B&255;else{aa=a[2056+C>>0]|0;B=B<<24>>24==aa<<24>>24?34:aa&255}a[E+31277>>0]=a[2064+B>>0]|0;break}else if((B|0)!=3){C=Nb(b)|0;B=a[E+31268>>0]|0;if((C|0)==4){a[E+31277>>0]=B;break}C=a[2056+C>>0]|0;D=E+31277|0;if(B<<24>>24==C<<24>>24){a[D>>0]=34;break}else{a[D>>0]=C;break}}else{G=0;do{D=G<<1;C=0;do{H=Nb(b)|0;I=C+D|0;a[E+I+31281>>0]=H;B=a[E+I+31268>>0]|0;do if((H|0)!=4){H=a[2056+H>>0]|0;I=E+I+31277|0;if(B<<24>>24==H<<24>>24){a[I>>0]=34;break}else{a[I>>0]=H;break}}else a[E+I+31277>>0]=B;while(0);C=C+1|0}while((C|0)<(F|0));G=G+1|0}while((G|0)<(F|0))}}else{K=c[C>>2]|0;D=c[m>>2]|0;E=c[D+13084>>2]|0;I=l>>E;D=c[D+13156>>2]|0;H=c[(c[b+3488>>2]|0)+16>>2]|0;F=e>>E;E=f>>E;G=(I|0)==0?1:I;if((G|0)>0){L=b+7616|0;J=0;do{aa=($(J+E|0,D)|0)+F|0;ue((c[L>>2]|0)+aa|0,1,G|0)|0;J=J+1|0}while((J|0)<(G|0));if((c[K+31244>>2]|0)==1){I=I>>>0>1?I:1;J=0;do{ue(H+(($(J+E|0,D)|0)+F)|0,0,I|0)|0;J=J+1|0}while((J|0)<(G|0))}}K=c[C>>2]|0;Z=c[b+160>>2]|0;H=c[Z+32>>2]|0;I=$(H,f)|0;M=c[m>>2]|0;D=c[M+56>>2]|0;I=(c[Z>>2]|0)+((e<>2]|0;J=c[M+13184>>2]|0;C=$(f>>J,G)|0;L=c[M+13172>>2]|0;C=(c[Z+4>>2]|0)+((e>>L<>2]|0;aa=c[M+13188>>2]|0;F=$(f>>aa,E)|0;_=c[M+13176>>2]|0;F=(c[Z+8>>2]|0)+((e>>_<>0]|0,l<>_,l>>aa)|0)+($(l>>L,l>>J)|0)|0;D=($(d[M+13045>>0]|0,J)|0)+D|0;J=K+224|0;M=D+7>>3;L=c[K+240>>2]|0;aa=c[J>>2]|0;L=(aa&1|0)==0?L:L+ -1|0;L=(aa&511|0)==0?L:L+ -1|0;K=(c[K+244>>2]|0)-L|0;if((K|0)<(M|0))L=0;else Kd(J,L+M|0,K-M|0);if(!(a[b+3029>>0]|0))Xb(b,e,f,g);aa=D>>>0>2147483639|(L|0)==0;_=aa?0:D;Z=aa?0:L;c[B>>2]=Z;c[B+12>>2]=_;c[B+16>>2]=_+8;c[B+4>>2]=Z+(_+7>>3);c[B+8>>2]=0;if(aa)B=-1094995529;else{_=b+5884|0;aa=c[m>>2]|0;Ga[c[_>>2]&7](I,H,l,l,B,d[aa+13044>>0]|0,c[aa+52>>2]|0);aa=c[m>>2]|0;Ga[c[_>>2]&7](C,G,l>>c[aa+13172>>2],l>>c[aa+13184>>2],B,d[aa+13045>>0]|0,c[aa+52>>2]|0);aa=c[m>>2]|0;Ga[c[_>>2]&7](F,E,l>>c[aa+13176>>2],l>>c[aa+13188>>2],B,d[aa+13045>>0]|0,c[aa+52>>2]|0);B=0}if(a[(c[m>>2]|0)+13056>>0]|0)mc(b,e,f,g);if((B|0)<0){aa=B;i=j;return aa|0}}while(0);do if(!(a[y>>0]|0)){do if((c[x>>2]|0)==1)r=129;else{if((c[z>>2]|0)==0?(a[p+31276>>0]|0)!=0:0){r=129;break}y=(Ob(b)|0)&255;a[A>>0]=y}while(0);if((r|0)==129)y=a[A>>0]|0;if(!(y<<24>>24)){if(a[b+3029>>0]|0)break;Xb(b,e,f,g);break}r=c[m>>2]|0;if((c[x>>2]|0)==1)r=(d[w>>0]|0)+(c[r+13092>>2]|0)|0;else r=c[r+13088>>2]|0;a[p+31255>>0]=r;r=nc(b,e,f,e,f,e,f,g,g,0,0,1936,1936)|0;if((r|0)<0){aa=r;i=j;return aa|0}}while(0);if((a[(c[q>>2]|0)+22>>0]|0)!=0?(a[p+300>>0]|0)==0:0)Wb(b,e,f,g);if(v){q=b+7592|0;g=p+272|0;r=0;while(1){ue((c[q>>2]|0)+u|0,a[g>>0]|0,s|0)|0;r=r+1|0;if((r|0)==(s|0))break;else u=u+h|0}}if((t&k|0)==0?(t&l+f|0)==0:0)c[p+276>>2]=a[p+272>>0];q=c[m>>2]|0;r=c[q+13064>>2]|0;g=l>>r;e=e>>r;r=f>>r;if((g|0)>0?(o=b+7612|0,n=c[p+31232>>2]&255,aa=($(c[q+13140>>2]|0,r)|0)+e|0,ue((c[o>>2]|0)+aa|0,n|0,g|0)|0,(g|0)!=1):0){p=1;do{aa=($(c[(c[m>>2]|0)+13140>>2]|0,p+r|0)|0)+e|0;ue((c[o>>2]|0)+aa|0,n|0,g|0)|0;p=p+1|0}while((p|0)!=(g|0))}e=c[m>>2]|0;m=1<>2];if(((k|0)%(m|0)|0|0)!=0?(k|0)<(c[e+13120>>2]|0):0){aa=1;i=j;return aa|0}aa=l+f|0;if(((aa|0)%(m|0)|0|0)!=0?(aa|0)<(c[e+13124>>2]|0):0){aa=1;i=j;return aa|0}aa=(Bb(b)|0)==0&1;i=j;return aa|0}function mc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;m=1<>2]|0;l=c[n+13084>>2]|0;f=c[n+13156>>2]|0;k=m+d|0;j=c[n+13120>>2]|0;m=m+e|0;n=c[n+13124>>2]|0;h=e>>l;e=((m|0)>(n|0)?n:m)>>l;if((h|0)>=(e|0)){i=g;return}d=d>>l;j=((k|0)>(j|0)?j:k)>>l;k=(d|0)<(j|0);b=b+7624|0;do{if(k){m=$(h,f)|0;l=d;do{a[(c[b>>2]|0)+(l+m)>>0]=2;l=l+1|0}while((l|0)!=(j|0))}h=h+1|0}while((h|0)!=(e|0));i=g;return} +function Ta(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function Ua(){return i|0}function Va(a){a=a|0;i=a}function Wa(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function Xa(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Ya(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Za(a){a=a|0;D=a}function _a(){return D|0}function $a(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function ab(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;g=(c[b+16>>2]|0)==0?1:3;if((g|0)>(e|0)){b=c[b>>2]|0;c[d>>2]=c[b+(e<<2)+32>>2];b=c[b+(e<<2)>>2]|0;i=f;return b|0}if((a[b+20>>0]|0)!=0&(g|0)==(e|0)){b=c[b+4>>2]|0;c[d>>2]=c[b+32>>2];b=c[b>>2]|0;i=f;return b|0}else{c[d>>2]=0;b=0;i=f;return b|0}return 0}function bb(a,b){a=a|0;b=b|0;var e=0,f=0;e=i;if(!(c[a>>2]|0)){f=-1;i=e;return f|0}c[b>>2]=c[a+8>>2];c[b+4>>2]=c[a+12>>2];c[b+8>>2]=c[a+16>>2];f=a+24|0;if(((c[f>>2]|0)+ -3|0)>>>0<2)c[b+12>>2]=0;else c[b+12>>2]=d[a+20>>0];c[b+16>>2]=c[f>>2];c[b+20>>2]=d[a+21>>0];f=0;i=e;return f|0}function cb(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;k=i;h=c[f+8>>2]|0;j=f+40|0;n=c[j>>2]|0;if(n>>>0>=(c[f+12>>2]|0)>>>0){x=-1;i=k;return x|0}o=(c[f+52>>2]|0)+($(c[f+68>>2]|0,n)|0)|0;l=f+36|0;m=(d[l>>0]|0)+3|0;p=c[f+16>>2]|0;do if(!p)if((c[f+192>>2]|0)==8){if((h|0)>0){q=g;p=0}else break;while(1){x=b[o+(p<<1)>>1]&255;a[q>>0]=x;a[q+1>>0]=x;a[q+2>>0]=x;p=p+1|0;if((p|0)==(h|0))break;else q=q+m|0}}else{t=c[f+168>>2]|0;s=c[f+164>>2]|0;r=c[f+160>>2]|0;if((h|0)>0){q=g;p=0}else break;while(1){x=($(e[o+(p<<1)>>1]|0,t)|0)+s>>r&255;a[q>>0]=x;a[q+1>>0]=x;a[q+2>>0]=x;p=p+1|0;if((p|0)==(h|0))break;else q=q+m|0}}else if((p|0)==1){p=n>>1;u=(p|0)%8|0;x=f+84|0;q=c[x>>2]|0;r=f+92|0;v=f+156|0;s=c[v>>2]|0;w=f+21|0;t=d[w>>0]|0;if(!(n&1)){db(q,r,h,u,s,t,0);db(c[f+88>>2]|0,f+124|0,h,u,c[v>>2]|0,d[w>>0]|0,0)}else{db(q,r,h,u,s,t,1);db(c[f+88>>2]|0,f+124|0,h,u,c[v>>2]|0,d[w>>0]|0,1);u=(u+5|0)%8|0;t=p+5|0;v=c[f+48>>2]|0;v=(t|0)<(v|0)?t:v+ -1|0;t=(c[f+56>>2]|0)+($(v,c[f+72>>2]|0)|0)|0;v=(c[f+60>>2]|0)+($(c[f+76>>2]|0,v)|0)|0;w=f+44|0;xe(c[f+(u<<2)+92>>2]|0,t|0,c[w>>2]<<1|0)|0;xe(c[f+(u<<2)+124>>2]|0,v|0,c[w>>2]<<1|0)|0}Ga[c[f+196>>2]&7](f+160|0,g,o,c[x>>2]|0,c[f+88>>2]|0,h,m)}else if((p|0)==2){x=(c[f+56>>2]|0)+($(c[f+72>>2]|0,n)|0)|0;u=(c[f+60>>2]|0)+($(c[f+76>>2]|0,n)|0)|0;w=f+84|0;v=f+21|0;eb(c[w>>2]|0,x,h,d[v>>0]|0);x=f+88|0;eb(c[x>>2]|0,u,h,d[v>>0]|0);Ga[c[f+196>>2]&7](f+160|0,g,o,c[w>>2]|0,c[x>>2]|0,h,m)}else if((p|0)==3){w=(c[f+56>>2]|0)+($(c[f+72>>2]|0,n)|0)|0;x=(c[f+60>>2]|0)+($(c[f+76>>2]|0,n)|0)|0;Ga[c[f+196>>2]&7](f+160|0,g,o,w,x,h,m)}else{x=-1;i=k;return x|0}while(0);a:do if(((c[f+24>>2]|0)+ -3|0)>>>0<2){n=(c[f+64>>2]|0)+($(c[f+80>>2]|0,n)|0)|0;r=c[f+192>>2]|0;q=1<0;if(o){f=g;p=0;while(1){w=e[n+(p<<1)>>1]|0;a[f>>0]=($(d[f>>0]|0,w)|0)+q>>r;x=f+1|0;a[x>>0]=($(d[x>>0]|0,w)|0)+q>>r;x=f+2|0;a[x>>0]=($(d[x>>0]|0,w)|0)+q>>r;p=p+1|0;if((p|0)==(h|0))break;else f=f+m|0}}if(!((a[l>>0]|0)==0|o^1)){l=g+3|0;g=0;while(1){a[l>>0]=-1;g=g+1|0;if((g|0)==(h|0))break;else l=l+4|0}}}else if(a[l>>0]|0){if(!(a[f+20>>0]|0)){if((h|0)<=0)break;g=g+3|0;l=0;while(1){a[g>>0]=-1;l=l+1|0;if((l|0)==(h|0))break a;else g=g+4|0}}l=(c[f+64>>2]|0)+($(c[f+80>>2]|0,n)|0)|0;o=g+3|0;if((c[f+192>>2]|0)==8){if((h|0)>0)g=0;else break;while(1){a[o>>0]=b[l+(g<<1)>>1];g=g+1|0;if((g|0)==(h|0))break;else o=o+4|0}}else{m=c[f+168>>2]|0;g=c[f+164>>2]|0;f=c[f+160>>2]|0;if((h|0)>0)n=0;else break;while(1){a[o>>0]=($(e[l+(n<<1)>>1]|0,m)|0)+g>>f;n=n+1|0;if((n|0)==(h|0))break;else o=o+4|0}}}while(0);c[j>>2]=(c[j>>2]|0)+1;x=0;i=k;return x|0}function db(a,d,f,g,h,j,k){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;l=i;m=c[d+((g+5&7)<<2)>>2]|0;n=c[d+((g+6&7)<<2)>>2]|0;r=c[d+((g+7&7)<<2)>>2]|0;q=c[d+((g&7)<<2)>>2]|0;p=c[d+((g+1&7)<<2)>>2]|0;o=c[d+((g+2&7)<<2)>>2]|0;g=c[d+((g+3&7)<<2)>>2]|0;s=j+ -8|0;d=(f+1|0)/2|0;t=(f|0)>0;if(!k){if(t){k=0;do{y=($(e[n+(k<<1)>>1]|0,-6)|0)+(e[m+(k<<1)>>1]<<1)|0;y=y+((e[r+(k<<1)>>1]|0)*18|0)+((e[q+(k<<1)>>1]|0)*57|0)+($(e[p+(k<<1)>>1]|0,-10)|0)|0;b[h+(k+3<<1)>>1]=y+(e[o+(k<<1)>>1]<<2)-(e[g+(k<<1)>>1]|0)>>s;k=k+1|0}while((k|0)<(d|0))}}else if(t){k=0;do{y=(e[n+(k<<1)>>1]<<2)-(e[m+(k<<1)>>1]|0)+($(e[r+(k<<1)>>1]|0,-10)|0)|0;y=y+((e[q+(k<<1)>>1]|0)*57|0)+((e[p+(k<<1)>>1]|0)*18|0)+($(e[o+(k<<1)>>1]|0,-6)|0)|0;b[h+(k+3<<1)>>1]=y+(e[g+(k<<1)>>1]<<1)>>s;k=k+1|0}while((k|0)<(d|0))}r=h+6|0;m=b[r>>1]|0;b[h>>1]=m;u=h+2|0;b[u>>1]=m;t=h+4|0;b[t>>1]=m;m=b[h+(d+2<<1)>>1]|0;b[h+(d+3<<1)>>1]=m;b[h+(d+4<<1)>>1]=m;b[h+(d+5<<1)>>1]=m;b[h+(d+6<<1)>>1]=m;m=(1<>1]|0;u=b[u>>1]|0;t=b[t>>1]|0;d=b[r>>1]|0;k=b[h+8>>1]|0;g=b[h+10>>1]|0;if((f|0)>1){p=f+ -2|0;o=p>>>1;q=o<<1;w=a;while(1){v=b[r+6>>1]|0;x=d*57|0;y=(g<<2)+n+($(k,-10)|0)+x+(t*18|0)+($(u,-6)|0)+(s<<1)-v>>j;if((y|0)<0)y=0;else y=((y|0)>(m|0)?m:y)&65535;b[w>>1]=y;s=($(g,-6)|0)+n+(k*18|0)+x+($(t,-10)|0)-s+(u<<2)+(v<<1)>>j;if((s|0)<0)s=0;else s=((s|0)>(m|0)?m:s)&65535;b[w+2>>1]=s;f=f+ -2|0;if((f|0)<=1)break;else{A=g;z=k;x=d;y=t;s=u;g=v;w=w+4|0;r=r+2|0;k=A;d=z;t=x;u=y}}s=u;u=t;t=d;d=k;k=g;g=v;a=a+(q+2<<1)|0;f=p-q|0;r=h+(o+4<<1)|0}if(!f){i=l;return}h=(g<<2)+n+($(k,-10)|0)+(d*57|0)+(t*18|0)+($(u,-6)|0)+(s<<1)-(b[r+6>>1]|0)>>j;if((h|0)<0)h=0;else h=((h|0)>(m|0)?m:h)&65535;b[a>>1]=h;i=l;return}function eb(a,c,d,f){a=a|0;c=c|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=i;s=(d+1|0)/2|0;o=s<<1;h=Nd(o+14|0)|0;j=h+6|0;xe(j|0,c|0,o|0)|0;o=b[c>>1]|0;b[h>>1]=o;b[h+2>>1]=o;b[h+4>>1]=o;c=b[c+(s+ -1<<1)>>1]|0;b[h+(s+3<<1)>>1]=c;b[h+(s+4<<1)>>1]=c;b[h+(s+5<<1)>>1]=c;b[h+(s+6<<1)>>1]=c;c=(1<>1]|0;o=e[h+2>>1]|0;q=e[h+4>>1]|0;p=e[j>>1]|0;n=e[h+8>>1]|0;m=e[h+10>>1]|0;if((d|0)>1){k=d+ -2|0;l=k>>>1;f=l+1|0;r=p;p=n;n=m;t=a;u=j;while(1){m=e[u+6>>1]|0;v=r*57|0;w=(n<<2)+32+($(p,-10)|0)+v+(q*18|0)+($(o,-6)|0)+(s<<1)-m>>6;if((w|0)<0)w=0;else w=((w|0)>(c|0)?c:w)&65535;b[t>>1]=w;s=($(n,-6)|0)+32+(p*18|0)+v+($(q,-10)|0)-s+(o<<2)+(m<<1)>>6;if((s|0)<0)s=0;else s=((s|0)>(c|0)?c:s)&65535;b[t+2>>1]=s;d=d+ -2|0;if((d|0)<=1)break;else{y=n;x=p;v=r;w=q;s=o;n=m;t=t+4|0;u=u+2|0;p=y;r=x;q=v;o=w}}d=l<<1;l=o;o=q;q=r;a=a+(d+2<<1)|0;d=k-d|0;j=j+(f<<1)|0}else l=s;if(!d){Pd(h);i=g;return}j=(m<<2)+32+($(n,-10)|0)+(p*57|0)+(q*18|0)+($(o,-6)|0)+(l<<1)-(e[j+6>>1]|0)>>6;if((j|0)<0)j=0;else j=((j|0)>(c|0)?c:j)&65535;b[a>>1]=j;Pd(h);i=g;return}function fb(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;j=i;if(!(c[b>>2]|0)){q=-1;i=j;return q|0}g=b+40|0;if((c[g>>2]|0)>-1|e>>>0>1){q=-1;i=j;return q|0}a[b+36>>0]=(e|0)==1&1;e=b+37|0;a[e>>0]=0;c[b+52>>2]=ab(b,b+68|0,0)|0;k=b+16|0;if(!(c[k>>2]|0))l=1;else{c[b+56>>2]=ab(b,b+72|0,1)|0;c[b+60>>2]=ab(b,b+76|0,2)|0;l=3}if(!(a[b+20>>0]|0))c[b+64>>2]=0;else c[b+64>>2]=ab(b,b+80|0,l)|0;if(((c[k>>2]|0)+ -1|0)>>>0<2?(q=b+8|0,p=c[q>>2]|0,f=b+44|0,c[f>>2]=(p+1|0)/2|0,h=b+48|0,c[h>>2]=((c[b+12>>2]|0)+1|0)/2|0,c[b+84>>2]=Nd(p<<1)|0,c[b+88>>2]=Nd(c[q>>2]<<1)|0,(c[k>>2]|0)==1):0){m=0;l=c[f>>2]<<1;do{c[b+(m<<2)+92>>2]=Nd(l)|0;c[b+(m<<2)+124>>2]=Nd(c[f>>2]<<1)|0;m=m+1|0;l=c[f>>2]<<1}while((m|0)!=8);c[b+156>>2]=Nd(l+14|0)|0;n=b+56|0;o=b+72|0;l=b+60|0;m=b+76|0;p=0;do{q=(p|0)>4?p+ -8|0:p;if((q|0)<0)q=0;else{r=c[h>>2]|0;q=(q|0)<(r|0)?q:r+ -1|0}s=(c[n>>2]|0)+($(c[o>>2]|0,q)|0)|0;r=(c[l>>2]|0)+($(c[m>>2]|0,q)|0)|0;xe(c[b+(p<<2)+92>>2]|0,s|0,c[f>>2]<<1|0)|0;xe(c[b+(p<<2)+124>>2]|0,r|0,c[f>>2]<<1|0)|0;p=p+1|0}while((p|0)!=8)}s=d[b+21>>0]|0;q=(a[e>>0]|0)!=0?16:8;r=30-q|0;t=+((1<>2]=sa(+(t*1.402))|0;c[b+176>>2]=sa(+(t*.3441362862))|0;c[b+180>>2]=sa(+(t*.7141362862))|0;c[b+184>>2]=sa(+(t*1.772))|0;c[b+168>>2]=sa(+t)|0;c[b+160>>2]=r;c[b+164>>2]=1<>2]=1<>2]=s;if(!(c[k>>2]|0))c[b+196>>2]=0;else c[b+196>>2]=c[8+(c[b+24>>2]<<2)>>2];c[g>>2]=0;s=0;i=j;return s|0}function gb(){var a=0,b=0;a=i;b=Td(200)|0;if(!b)b=0;i=a;return b|0}function hb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=i;i=i+48|0;o=g+32|0;m=g;if((f|0)<6){t=-1;i=g;return t|0}if((a[e>>0]|0)!=66){t=-1;i=g;return t|0}if((a[e+1>>0]|0)!=80){t=-1;i=g;return t|0}if((a[e+2>>0]|0)!=71){t=-1;i=g;return t|0}if((a[e+3>>0]|0)!=-5){t=-1;i=g;return t|0}t=a[e+4>>0]|0;h=t&255;p=h>>>5;k=m+8|0;c[k>>2]=p;if(t<<24>>24<0){t=-1;i=g;return t|0}l=h>>>4&1;j=m+12|0;a[j>>0]=l;t=(h&15)+8|0;a[m+13>>0]=t;if((t&255)>>>0>14){t=-1;i=g;return t|0}t=a[e+5>>0]|0;n=t&255;q=n>>>4;h=m+16|0;c[h>>2]=q;if((t&255)>79){t=-1;i=g;return t|0}if(!((p|0)!=0|(q|0)==0)){t=-1;i=g;return t|0}if((q+ -3|0)>>>0<2&l<<24>>24==0){t=-1;i=g;return t|0}l=kb(m,e+6|0,f+ -6|0)|0;if((l|0)<0){t=-1;i=g;return t|0}l=l+6|0;p=m+4|0;q=kb(p,e+l|0,f-l|0)|0;if((q|0)<0){t=-1;i=g;return t|0}r=q+l|0;if(!(c[m>>2]|0)){t=-1;i=g;return t|0}if(!(c[p>>2]|0)){t=-1;i=g;return t|0}l=m+20|0;q=kb(l,e+r|0,f-r|0)|0;if((q|0)<0){t=-1;i=g;return t|0}r=q+r|0;c[o>>2]=0;q=(n&8|0)!=0;do if(q){n=kb(o,e+r|0,f-r|0)|0;if((n|0)<0){t=-1;i=g;return t|0}else{r=n+r|0;break}}while(0);n=m+24|0;c[n>>2]=0;do if(a[j>>0]|0){s=kb(n,e+r|0,f-r|0)|0;if((s|0)<0){t=-1;i=g;return t|0}else{r=s+r|0;break}}while(0);c[m+28>>2]=0;if(q){o=(c[o>>2]|0)+r|0;if((o|0)>(f|0)){t=-1;i=g;return t|0}}else o=r;if((o|0)<0){t=o;i=g;return t|0}m=c[m>>2]|0;p=c[p>>2]|0;k=c[k>>2]|0;j=b[j>>1]|0;q=j&255;t=c[h>>2]|0;h=(j&65535)>>>8;j=h&65535;s=d+8|0;c[s>>2]=m;r=d+12|0;c[r>>2]=p;c[d+16>>2]=k;a[d+20>>0]=q;c[d+24>>2]=t;a[d+21>>0]=h;h=d+32|0;c[h>>2]=0;t=c[l>>2]|0;l=t+o|0;a:do if(l>>>0>f>>>0)e=d;else{o=ib(e+o|0,t,m,p,k,j)|0;c[d>>2]=o;if(!o){e=d;break}if((c[o+64>>2]|0)<(c[s>>2]|0)){e=d;break}if((c[o+68>>2]|0)<(c[r>>2]|0)){e=d;break}switch(c[o+76>>2]|0){case 0:case 54:{if((k|0)!=1){e=d;break a}break};case 4:case 56:{if((k|0)!=2){e=d;break a}break};case 5:case 58:{if((k|0)!=3){e=d;break a}break};case 8:case 32:{if(k){e=d;break a}break};default:{e=d;break a}}if(q<<24>>24){k=c[n>>2]|0;if((k+l|0)>>>0>f>>>0){e=d;break}t=ib(e+l|0,k,m,p,0,j)|0;c[d+4>>2]=t;if(!t){e=d;break}}c[d+40>>2]=-1;t=0;i=g;return t|0}while(0);if(c[e>>2]|0)ge(e);d=d+4|0;if(c[d>>2]|0)ge(d);c[h>>2]=0;t=-1;i=g;return t|0}function ib(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;k=i;i=i+96|0;n=k+88|0;o=k;l=k+84|0;q=k+80|0;p=kb(q,b,d)|0;if((p|0)<0){b=0;i=k;return b|0}r=d-p|0;s=c[q>>2]|0;if(s>>>0>r>>>0){b=0;i=k;return b|0}d=s+10|0;q=Nd(d)|0;a[q>>0]=g;a[q+1>>0]=e>>>24;a[q+2>>0]=e>>>16;a[q+3>>0]=e>>>8;a[q+4>>0]=e;a[q+5>>0]=f>>>24;a[q+6>>0]=f>>>16;a[q+7>>0]=f>>>8;a[q+8>>0]=f;a[q+9>>0]=h+248;xe(q+10|0,b+p|0,s|0)|0;g=b+(s+p)|0;r=r-s|0;p=Nd((d<<1)+10-s+r|0)|0;a[p>>0]=0;a[p+1>>0]=0;a[p+2>>0]=0;a[p+3>>0]=1;a[p+4>>0]=96;a[p+5>>0]=1;if((d|0)>0){f=0;s=6;while(1){e=f+1|0;h=a[q+f>>0]|0;if((e|0)<(d|0)&h<<24>>24==0)if(!(a[q+e>>0]|0)){a[p+s>>0]=0;a[p+(s+1)>>0]=0;a[p+(s+2)>>0]=3;e=f+2|0;s=s+3|0}else{h=0;j=7}else j=7;if((j|0)==7){j=0;a[p+s>>0]=h;s=s+1|0}if((e|0)<(d|0))f=e;else break}if(!s){s=0;j=11}else j=10}else{s=6;j=10}if((j|0)==10)if(!(a[p+(s+ -1)>>0]|0))j=11;if((j|0)==11){a[p+s>>0]=-128;s=s+1|0}Pd(q);a[p+s>>0]=0;a[p+(s+1)>>0]=0;a[p+(s+2)>>0]=0;b=s+4|0;a[p+(s+3)>>0]=1;xe(p+b|0,g|0,r|0)|0;r=b+r|0;Kd(o);g=Bd(1504)|0;if(!g)Aa(1);if(c[380]&8){b=g+84|0;c[b>>2]=c[b>>2]|65536}b=g+688|0;c[b>>2]=c[b>>2]|1;if((vd(g,1504,0)|0)<0)Aa(1);s=fe()|0;c[l>>2]=s;if(!s){b=0;i=k;return b|0}q=o+28|0;c[q>>2]=r;d=o+24|0;c[d>>2]=p;if((r|0)>0){r=s;s=0;while(1){r=Cd(g,r,n,o)|0;if((r|0)<0){j=26;break}m=((c[n>>2]|0)!=0&1)+s|0;s=c[d>>2]|0;e=c[q>>2]|0;if(s){e=e-r|0;c[q>>2]=e;c[d>>2]=s+r}if((e|0)<=0)break;r=c[l>>2]|0;s=m}if((j|0)==26)Aa(1);wd(g)|0;Pd(g);Pd(p);if(m){b=c[l>>2]|0;i=k;return b|0}}else{wd(g)|0;Pd(g);Pd(p)}ge(l);b=0;i=k;return b|0}function jb(a){a=a|0;var b=0,d=0;b=i;Pd(c[a+84>>2]|0);Pd(c[a+88>>2]|0);d=0;do{Pd(c[a+(d<<2)+92>>2]|0);Pd(c[a+(d<<2)+124>>2]|0);d=d+1|0}while((d|0)!=8);Pd(c[a+156>>2]|0);if(c[a>>2]|0)ge(a);d=a+4|0;if(!(c[d>>2]|0)){Pd(a);i=b;return}ge(d);Pd(a);i=b;return}function kb(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;a:do if((f|0)>=1){j=a[e>>0]|0;h=j&255;if(j<<24>>24>-1){c[b>>2]=h;b=1;break}if(j<<24>>24!=-128){j=e+1|0;h=h&127;while(1){if((f|0)<2){b=-1;break a}k=j;j=j+1|0;k=d[k>>0]|0;h=k&127|h<<7;if(!(k&128))break;else f=f+ -1|0}c[b>>2]=h;b=j-e|0}else b=-1}else b=-1;while(0);i=g;return b|0}function lb(b,d,f,g,h,j,k){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;q=i;s=c[b+12>>2]|0;n=c[b+16>>2]|0;o=c[b+20>>2]|0;l=c[b+24>>2]|0;p=c[b+8>>2]|0;r=c[b+4>>2]|0;m=c[b>>2]|0;b=c[b+28>>2]|0;if((j|0)>0)t=0;else{i=q;return}while(1){v=$(e[f+(t<<1)>>1]|0,p)|0;u=(e[g+(t<<1)>>1]|0)-b|0;w=(e[h+(t<<1)>>1]|0)-b|0;v=v+r|0;x=v+($(w,s)|0)>>m;if((x|0)<0)x=0;else x=(x|0)>255?-1:x&255;a[d>>0]=x;w=v-($(u,n)|0)-($(w,o)|0)>>m;if((w|0)<0)w=0;else w=(w|0)>255?-1:w&255;a[d+1>>0]=w;u=v+($(u,l)|0)>>m;if((u|0)<0)u=0;else u=(u|0)>255?-1:u&255;a[d+2>>0]=u;t=t+1|0;if((t|0)==(j|0))break;else d=d+k|0}i=q;return}function mb(d,f,g,h,j,k,l){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;m=i;if((c[d+32>>2]|0)==8){if((k|0)>0)n=0;else{i=m;return}while(1){a[f>>0]=b[j+(n<<1)>>1];a[f+1>>0]=b[g+(n<<1)>>1];a[f+2>>0]=b[h+(n<<1)>>1];n=n+1|0;if((n|0)==(k|0))break;else f=f+l|0}i=m;return}else{n=c[d+8>>2]|0;o=c[d+4>>2]|0;d=c[d>>2]|0;if((k|0)>0){p=f;f=0}else{i=m;return}while(1){a[p>>0]=($(e[j+(f<<1)>>1]|0,n)|0)+o>>d;a[p+1>>0]=($(e[g+(f<<1)>>1]|0,n)|0)+o>>d;a[p+2>>0]=($(e[h+(f<<1)>>1]|0,n)|0)+o>>d;f=f+1|0;if((f|0)==(k|0))break;else p=p+l|0}i=m;return}}function nb(b,d,f,g,h,j,k){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;o=i;l=c[b+8>>2]|0;m=c[b+4>>2]|0;n=c[b>>2]|0;b=c[b+28>>2]|0;if((j|0)>0)p=0;else{i=o;return}while(1){t=e[f+(p<<1)>>1]|0;s=(e[g+(p<<1)>>1]|0)-b|0;r=(e[h+(p<<1)>>1]|0)-b|0;q=t-s|0;u=($(q+r|0,l)|0)+m>>n;if((u|0)<0)u=0;else u=(u|0)>255?-1:u&255;a[d>>0]=u;s=($(s+t|0,l)|0)+m>>n;if((s|0)<0)s=0;else s=(s|0)>255?-1:s&255;a[d+1>>0]=s;q=($(q-r|0,l)|0)+m>>n;if((q|0)<0)q=0;else q=(q|0)>255?-1:q&255;a[d+2>>0]=q;p=p+1|0;if((p|0)==(j|0))break;else d=d+k|0}i=o;return}function ob(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;if(!(a[(c[b+184>>2]|0)+43>>0]|0)){i=e;return}f=c[(c[b+180>>2]|0)+13128>>2]|0;d=(d|0)%(f|0)|0;if((d|0)!=2?!((f|0)==2&(d|0)==0):0){i=e;return}xe(c[b+152>>2]|0,c[b+136>>2]|0,199)|0;i=e;return}function pb(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;g=b+184|0;f=c[g>>2]|0;if((c[(c[f+1668>>2]|0)+(c[b+3468>>2]<<2)>>2]|0)==(d|0)){qb(b);f=b+2417|0;if(a[f>>0]|0){j=c[g>>2]|0;if((a[j+42>>0]|0)!=0?(j=c[j+1676>>2]|0,(c[j+(d<<2)>>2]|0)!=(c[j+(d+ -1<<2)>>2]|0)):0)h=5}else h=5;if((h|0)==5)rb(b);if(a[b+2416>>0]|0){i=e;return}if(!(a[(c[g>>2]|0)+43>>0]|0)){i=e;return}g=c[(c[b+180>>2]|0)+13128>>2]|0;if((d|0)%(g|0)|0){i=e;return}if((g|0)==1){rb(b);i=e;return}if((a[f>>0]|0)!=1){i=e;return}xe(c[b+136>>2]|0,c[b+152>>2]|0,199)|0;i=e;return}if((a[f+42>>0]|0)!=0?(j=c[f+1676>>2]|0,(c[j+(d<<2)>>2]|0)!=(c[j+(d+ -1<<2)>>2]|0)):0){if((a[b+141>>0]|0)==1)sb(c[b+136>>2]|0);else qb(b);rb(b);f=c[g>>2]|0}if(!(a[f+43>>0]|0)){i=e;return}f=b+180|0;if((d|0)%(c[(c[f>>2]|0)+13128>>2]|0)|0){i=e;return}d=b+136|0;tb((c[d>>2]|0)+224|0)|0;if((a[b+141>>0]|0)==1)sb(c[d>>2]|0);else qb(b);if((c[(c[f>>2]|0)+13128>>2]|0)==1){rb(b);i=e;return}else{xe(c[d>>2]|0,c[b+152>>2]|0,199)|0;i=e;return}}function qb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;a=c[a+136>>2]|0;d=a+212|0;f=c[a+220>>2]|0;e=(c[d>>2]|0)+1|0;e=f>>>0>e>>>0?e:f;g=0-e&7;if(g){e=g+e|0;e=f>>>0>e>>>0?e:f}c[d>>2]=e;Ld(a+224|0,(c[a+204>>2]|0)+((e|0)/8|0)|0,(7-e+(c[a+216>>2]|0)|0)/8|0);i=b;return}function rb(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;g=i;f=c[b+2408>>2]|0;e=2-f|0;e=(a[b+3028>>0]|0)==0|(f|0)==2?e:e^3;f=b+3080|0;b=b+136|0;h=0;do{j=d[728+(e*199|0)+h>>0]|0;l=a[f>>0]|0;k=l<<24>>24;if(l<<24>>24<0)k=0;else k=(k|0)>51?51:k;j=((j<<3&120)+ -16+(($(k,((j>>>4)*5|0)+ -45|0)|0)>>4)<<1)+ -127|0;j=j>>31^j;if((j|0)>124)j=j&1|124;a[(c[b>>2]|0)+h>>0]=j;h=h+1|0}while((h|0)!=199);a[(c[b>>2]|0)+199>>0]=0;a[(c[b>>2]|0)+200>>0]=0;a[(c[b>>2]|0)+201>>0]=0;a[(c[b>>2]|0)+202>>0]=0;i=g;return}function sb(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=a+224|0;e=c[a+240>>2]|0;f=c[d>>2]|0;e=(f&1|0)==0?e:e+ -1|0;e=(f&511|0)==0?e:e+ -1|0;a=(c[a+244>>2]|0)-e|0;if((a|0)<0){i=b;return}Ld(d,e,a);i=b;return}function tb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;f=a+4|0;d=c[f>>2]|0;e=d+ -2|0;c[f>>2]=e;g=c[a>>2]|0;if((g|0)>=(e<<17|0)){g=(c[a+16>>2]|0)-(c[a+12>>2]|0)|0;i=b;return g|0}d=(d+ -258|0)>>>31;c[f>>2]=e<>2]=g;if(g&65535){g=0;i=b;return g|0}Wb(a);g=0;i=b;return g|0}function ub(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=vb(a+224|0,a)|0;i=b;return a|0}function vb(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;h=d[e>>0]|0;j=b+4|0;k=c[j>>2]|0;l=d[5544+((k<<1&384)+(h|512))>>0]|0;k=k-l|0;m=k<<17;n=c[b>>2]|0;g=m-n>>31;c[b>>2]=n-(g&m);c[j>>2]=(g&l-k)+k;h=g^h;a[e>>0]=a[h+6696>>0]|0;e=h&1;h=c[j>>2]|0;g=d[5544+h>>0]|0;c[j>>2]=h<>2]<>2]=g;if(g&65535){i=f;return e|0}j=b+16|0;h=c[j>>2]|0;c[b>>2]=(((d[h+1>>0]|0)<<1|(d[h>>0]|0)<<9)+ -65535<<7-(d[5544+((g+ -1^g)>>15)>>0]|0))+g;if(h>>>0>=(c[b+20>>2]|0)>>>0){i=f;return e|0}c[j>>2]=h+2;i=f;return e|0}function wb(a){a=a|0;var b=0,d=0;b=i;a=a+136|0;d=c[a>>2]|0;if(!(vb(d+224|0,d+1|0)|0)){d=0;i=b;return d|0}d=(xb((c[a>>2]|0)+224|0)|0)==0;d=d?1:2;i=b;return d|0}function xb(a){a=a|0;var b=0,d=0,e=0;b=i;d=c[a>>2]<<1;c[a>>2]=d;if(!(d&65534)){Wb(a);d=c[a>>2]|0}e=c[a+4>>2]<<17;if((d|0)<(e|0)){e=0;i=b;return e|0}c[a>>2]=d-e;e=1;i=b;return e|0}function yb(a){a=a|0;var b=0,d=0;b=i;d=a+136|0;a=(xb((c[d>>2]|0)+224|0)|0)<<1;a=(xb((c[d>>2]|0)+224|0)|0|a)<<1;a=(xb((c[d>>2]|0)+224|0)|0|a)<<1;a=(xb((c[d>>2]|0)+224|0)|0|a)<<1;a=xb((c[d>>2]|0)+224|0)|0|a;i=b;return a|0}function zb(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;d=c[(c[a+180>>2]|0)+52>>2]|0;d=(d|0)>10?31:(1<0)a=0;else{f=0;i=b;return f|0}while(1){f=a+1|0;if(!(xb((c[e>>2]|0)+224|0)|0)){d=4;break}if((f|0)<(d|0))a=f;else{a=f;d=4;break}}if((d|0)==4){i=b;return a|0}return 0}function Ab(a){a=a|0;var b=0;b=i;a=xb((c[a+136>>2]|0)+224|0)|0;i=b;return a|0}function Bb(a){a=a|0;var b=0,d=0;b=i;d=a+136|0;a=(xb((c[d>>2]|0)+224|0)|0)<<1;a=xb((c[d>>2]|0)+224|0)|0|a;i=b;return a|0}function Cb(a){a=a|0;var b=0;b=i;a=tb((c[a+136>>2]|0)+224|0)|0;i=b;return a|0}function Db(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=vb(a+224|0,a+5|0)|0;i=b;return a|0}function Eb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+16|0;g=b;e=a+136|0;j=9;f=0;while(1){k=c[e>>2]|0;h=f;f=f+1|0;if(!(vb(k+224|0,k+j|0)|0)){f=h;h=0;d=10;break}if((f|0)>=5){j=0;h=0;break}else j=10}if((d|0)==10){k=h+f|0;i=b;return k|0}while(1){if(!(xb((c[e>>2]|0)+224|0)|0)){d=8;break}h=(1<=31){d=6;break}}if((d|0)==6)if((j|0)==31){a=c[a+4>>2]|0;c[g>>2]=31;$a(a,16,192,g);a=31}else a=j;else if((d|0)==8)if(!j){k=f;j=h;k=j+k|0;i=b;return k|0}else a=j;do{a=a+ -1|0;h=((xb((c[e>>2]|0)+224|0)|0)<>2]|0)+224|0)|0;i=b;return a|0}function Gb(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=vb(a+224|0,a+176|0)|0;i=b;return a|0}function Hb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;e=a[(c[b+184>>2]|0)+1633>>0]|0;e=(e&255)<5?5:e&255;f=b+136|0;if(!e){g=0;i=d;return g|0}else b=0;while(1){h=c[f>>2]|0;g=b+1|0;if(!(vb(h+224|0,h+177|0)|0)){e=4;break}if((g|0)<(e|0))b=g;else{b=g;e=4;break}}if((e|0)==4){i=d;return b|0}return 0}function Ib(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;j=i;k=c[b+180>>2]|0;n=(1<>2])+ -1|0;l=n&g;m=c[k+13064>>2]|0;h=f>>m;m=g>>m;g=c[b+136>>2]|0;if((a[g+308>>0]|0)==0?(n&f|0)==0:0)f=0;else{f=h+ -1+($(c[k+13140>>2]|0,m)|0)|0;f=d[(c[b+7612>>2]|0)+f>>0]|0}if((a[g+309>>0]|0)==0&(l|0)==0){n=0;m=(f|0)>(e|0);m=m&1;n=(n|0)>(e|0);n=n&1;f=g+224|0;m=m|2;n=m+n|0;n=g+n|0;n=vb(f,n)|0;i=j;return n|0}n=($(c[k+13140>>2]|0,m+ -1|0)|0)+h|0;n=d[(c[b+7612>>2]|0)+n>>0]|0;m=(f|0)>(e|0);m=m&1;n=(n|0)>(e|0);n=n&1;f=g+224|0;m=m|2;n=m+n|0;n=g+n|0;n=vb(f,n)|0;i=j;return n|0}function Jb(a,b){a=a|0;b=b|0;var d=0;d=i;b=c[a+136>>2]|0;b=(vb(b+224|0,b+13|0)|0)==0;i=d;return(b?3:0)|0}function Kb(a){a=a|0;var b=0;b=i;a=tb((c[a+136>>2]|0)+224|0)|0;i=b;return a|0}function Lb(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=vb(a+224|0,a+17|0)|0;i=b;return a|0}function Mb(a){a=a|0;var b=0,d=0,e=0;b=i;e=a+136|0;d=0;while(1){a=d+1|0;if(!(xb((c[e>>2]|0)+224|0)|0)){a=d;d=4;break}if((a|0)<2)d=a;else{d=4;break}}if((d|0)==4){i=b;return a|0}return 0}function Nb(a){a=a|0;var b=0,d=0;b=i;d=a+136|0;a=(xb((c[d>>2]|0)+224|0)|0)<<1;a=(xb((c[d>>2]|0)+224|0)|0|a)<<1;a=(xb((c[d>>2]|0)+224|0)|0|a)<<1;a=(xb((c[d>>2]|0)+224|0)|0|a)<<1;a=xb((c[d>>2]|0)+224|0)|0|a;i=b;return a|0}function Ob(a){a=a|0;var b=0,d=0;b=i;a=a+136|0;d=c[a>>2]|0;if(!(vb(d+224|0,d+18|0)|0)){d=4;i=b;return d|0}d=(xb((c[a>>2]|0)+224|0)|0)<<1;d=xb((c[a>>2]|0)+224|0)|0|d;i=b;return d|0}function Pb(a){a=a|0;var b=0;b=i;a=c[a+136>>2]|0;a=vb(a+224|0,a+36|0)|0;i=b;return a|0}function Qb(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+136>>2]|0;a=vb(a+224|0,a+(42-b)|0)|0;i=d;return a|0}function Rb(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+136>>2]|0;a=vb(a+224|0,a+(b+42)|0)|0;i=d;return a|0}function Sb(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+136>>2]|0;a=vb(a+224|0,a+((b|0)==0|40)|0)|0;i=d;return a|0}function Tb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;a=a+136|0;f=(b<<2)+166|0;e=0;while(1){g=c[a>>2]|0;b=e+1|0;if(!(vb(g+224|0,g+(f+e)|0)|0)){b=e;a=4;break}if((b|0)<4)e=b;else{a=4;break}}if((a|0)==4){i=d;return b|0}return 0}function Ub(a,b){a=a|0;b=b|0;var d=0;d=i;a=c[a+136>>2]|0;a=vb(a+224|0,a+(b+174)|0)|0;i=d;return a|0}function Vb(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Na=0,Oa=0;o=i;i=i+96|0;w=o;t=o+32|0;u=o+16|0;s=o+8|0;x=f+136|0;p=c[x>>2]|0;y=c[f+160>>2]|0;n=c[y+(l<<2)+32>>2]|0;m=f+180|0;q=c[m>>2]|0;U=$(h>>c[q+(l<<2)+13180>>2],n)|0;q=(c[y+(l<<2)>>2]|0)+(U+(g>>c[q+(l<<2)+13168>>2]<>2]))|0;U=(l|0)!=0;h=p+320|0;g=U?p+11680|0:h;y=t+0|0;r=y+64|0;do{a[y>>0]=0;y=y+1|0}while((y|0)<(r|0));T=1<>2]|0;r=T<>0]|0)){B=a[p+272>>0]|0;E=f+184|0;Na=c[E>>2]|0;if((a[Na+21>>0]|0)!=0?(d[Na+1629>>0]|0)>=(j|0):0){G=c[x>>2]|0;G=vb(G+224|0,G+(U&1|46)|0)|0}else G=0;if(A){C=c[m>>2]|0;H=C;C=(c[C+13192>>2]|0)+B|0}else{C=c[E>>2]|0;if((l|0)==1)C=(c[f+3040>>2]|0)+(c[C+28>>2]|0)+(a[p+302>>0]|0)|0;else C=(c[f+3044>>2]|0)+(c[C+32>>2]|0)+(a[p+303>>0]|0)|0;F=C+B|0;H=c[m>>2]|0;B=c[H+13192>>2]|0;C=0-B|0;if((F|0)>=(C|0))C=(F|0)>57?57:F;do if((c[H+4>>2]|0)==1){if((C|0)>=30)if((C|0)>43){C=C+ -6|0;break}else{C=c[224+(C+ -30<<2)>>2]|0;break}}else C=(C|0)>51?51:C;while(0);C=B+C|0}B=(c[H+52>>2]|0)+j|0;F=B+ -5|0;B=1<>0]|0)>>0]<>0];if((a[H+634>>0]|0)!=0?!((G|0)!=0&(j|0)>2):0){I=c[E>>2]|0;I=(a[I+68>>0]|0)==0?H+635|0:I+69|0;H=((c[p+31244>>2]|0)!=1?3:0)+l|0;E=I+((j+ -2|0)*384|0)+(H<<6)|0;if((j|0)>3)ka=a[I+((j+ -4|0)*6|0)+H+1536>>0]|0;else ka=16}else{ka=16;E=0}}else{B=0;ka=0;C=0;E=0;F=0;G=0}K=(j<<1)+ -1|0;if(A){H=(j*3|0)+ -6+(j+ -1>>2)|0;J=j+1>>2}else{H=15;J=j+ -2|0}if((K|0)>0){L=H+52|0;I=0;while(1){Na=c[x>>2]|0;M=I+1|0;if(!(vb(Na+224|0,Na+(L+(I>>J))|0)|0))break;if((M|0)<(K|0))I=M;else{I=M;break}}M=H+70|0;H=0;while(1){Na=c[x>>2]|0;L=H+1|0;if(!(vb(Na+224|0,Na+(M+(H>>J))|0)|0))break;if((L|0)<(K|0))H=L;else{H=L;break}}if((I|0)>3){J=(I>>1)+ -1|0;L=xb((c[x>>2]|0)+224|0)|0;if((J|0)>1){K=1;do{L=xb((c[x>>2]|0)+224|0)|0|L<<1;K=K+1|0}while((K|0)!=(J|0))}I=L+((I&1|2)<3){K=(H>>1)+ -1|0;L=xb((c[x>>2]|0)+224|0)|0;if((K|0)>1){J=1;do{L=xb((c[x>>2]|0)+224|0)|0|L<<1;J=J+1|0}while((J|0)!=(K|0))}J=I;M=L+((H&1|2)<>2;P=M>>2;if((k|0)==1){I=J;H=M;Q=d[584+(M<<3)+J>>0]|0;L=536;K=552;M=544;J=568;break}else if(k){K=J;L=M;v=49;break}Q=d[(J&3)+(440+((M&3)<<2))>>0]|0;if((T|0)==8){I=J;H=M;Q=(d[464+(P<<1)+N>>0]<<4)+Q|0;L=544;K=32;M=536;J=48;break}else if((T|0)==16){I=J;H=M;Q=(d[440+(P<<2)+N>>0]<<4)+Q|0;L=32;K=32;M=48;J=48;break}else if((T|0)==4){I=J;H=M;L=456;K=32;M=456;J=48;break}else{I=J;H=M;Q=(d[472+(P<<3)+N>>0]<<4)+Q|0;L=64;K=32;M=128;J=48;break}}else{K=M;L=J;N=M>>2;P=J>>2;v=49}while(0);if((v|0)==49){I=K;H=L;Q=d[584+(K<<3)+L>>0]|0;L=544;K=568;M=536;J=552}O=Q+1|0;Q=Q>>4;if((Q|0)>-1){R=(1<0;l=S?90:88;T=T+ -1>>2;V=U?27:0;W=(j|0)==2;U=V+3|0;X=(j|0)==3;ja=(k|0)==0?9:15;Y=A?0:27;ca=(G|0)==0;fa=A?42:43;aa=A?40:41;ga=A?2:0;k=p+31244|0;ia=y&-17;Z=f+184|0;ba=f+4|0;ea=((C|0)<0)<<31>>31;da=((B|0)<0)<<31>>31;_=(G|0)!=0&(j|0)>2;ha=(j|0)<4;oa=ka&255;la=(A&1)<<1;ka=la|1;sa=1;ma=Q;qa=0;za=16;while(1){pa=ma<<4;ya=a[L+ma>>0]|0;va=ya&255;ua=a[M+ma>>0]|0;wa=ua&255;na=(ma|0)>0;if((ma|0)<(Q|0)&na){if((va|0)<(R|0))ra=d[t+(va+1<<3)+wa>>0]|0;else ra=0;if((wa|0)<(R|0))ra=(d[wa+1+(t+(va<<3))>>0]|0)+ra|0;Aa=c[x>>2]|0;Aa=(vb(Aa+224|0,Aa+(((ra|0)>1?1:ra)+l)|0)|0)&255;a[t+(va<<3)+wa>>0]=Aa;ta=1}else{if(!((va|0)==(N|0)&(wa|0)==(P|0)))if(!(ya<<24>>24))Aa=ua<<24>>24==0&1;else Aa=0;else Aa=1;a[t+(va<<3)+wa>>0]=Aa;ta=0}pa=O-pa|0;ra=(ma|0)==(Q|0);if(ra){a[u>>0]=pa+255;xa=pa+ -2|0;pa=1}else{xa=15;pa=0}if((va|0)<(T|0))Ba=(a[t+(va+1<<3)+wa>>0]|0)!=0&1;else Ba=0;if((wa|0)<(T|0))Ba=((a[wa+1+(t+(va<<3))>>0]|0)!=0&1)<<1|Ba;do if(Aa<<24>>24!=0&(xa|0)>-1){if(!(c[(c[m>>2]|0)+13100>>2]|0))if(W){ua=648;ya=V}else v=73;else if(ca){Aa=(a[z>>0]|0)!=0;if(Aa|W){ua=Aa?712:648;ya=Aa?aa:V}else v=73}else{ua=712;ya=aa}do if((v|0)==73){v=0;Aa=(Ba<<4)+664|0;if(!A){ua=Aa;ya=V+(X?9:12)|0;break}ya=(ua|ya)<<24>>24==0?V:U;if(X){ua=Aa;ya=ya+ja|0;break}else{ua=Aa;ya=ya+21|0;break}}while(0);if((xa|0)>0){Aa=ya+92|0;do{Na=c[x>>2]|0;if(vb(Na+224|0,Na+(Aa+(d[ua+((d[J+xa>>0]<<2)+(d[K+xa>>0]|0))>>0]|0))|0)|0){a[u+(pa&255)>>0]=xa;ta=0;pa=pa+1<<24>>24}xa=xa+ -1|0}while((xa|0)>0)}if(ta){a[u+(pa&255)>>0]=0;ta=pa+1<<24>>24;break}if(c[(c[m>>2]|0)+13100>>2]|0)if(ca?(a[z>>0]|0)==0:0)v=87;else ta=fa;else v=87;if((v|0)==87){v=0;ta=(ma|0)==0?Y:ya+2|0}Na=c[x>>2]|0;if((vb(Na+224|0,Na+(ta+92)|0)|0)==1){a[u+(pa&255)>>0]=0;ta=pa+1<<24>>24}else ta=pa}else ta=pa;while(0);pa=ta&255;a:do if(ta<<24>>24){ta=na?ga:0;if(!(c[(c[m>>2]|0)+13116>>2]|0))Fa=0;else{if(ca?(a[z>>0]|0)==0:0)qa=la;else qa=ka;Fa=(d[p+qa+199>>0]|0)>>>2}ua=ta|(sa|0)==0&(ra^1)&1;Da=a[u>>0]|0;xa=Da&255;ta=pa>>>0>8?8:pa;if(!ta){ra=-1;sa=1}else{Aa=ua<<2;ra=-1;sa=1;ya=0;do{Na=sa+Aa|0;La=c[x>>2]|0;Na=(vb(La+224|0,La+((S?Na+16|0:Na)+136)|0)|0)&255;a[s+ya>>0]=Na;if(!(Na<<24>>24))sa=((sa+ -1|0)>>>0<2&1)+sa|0;else{ra=(ra|0)==-1?ya:ra;sa=0}ya=ya+1|0}while((ya|0)<(ta|0))}ya=pa+ -1|0;ta=a[u+ya>>0]|0;Aa=ta&255;do if(!(a[z>>0]|0)){if((c[k>>2]|0)==1?!((c[(c[m>>2]|0)+13104>>2]|0)==0|ca|(ia|0)!=10):0){xa=0;break}xa=(xa-Aa|0)>3&1}else xa=0;while(0);if((ra|0)!=-1){La=c[x>>2]|0;La=vb(La+224|0,La+((S?ua|4:ua)|160)|0)|0;Na=s+ra|0;a[Na>>0]=(d[Na>>0]|0)+La}ua=(xa|0)==0;if((a[(c[Z>>2]|0)+4>>0]|0)==0|ua){ya=0;xa=0;do{xa=xb((c[x>>2]|0)+224|0)|0|xa<<1;ya=ya+1|0}while((ya|0)<(pa|0));Ba=xa<<16-pa}else{xa=ya&255;if(!((ya&255)<<24>>24))Aa=0;else{ya=0;Aa=0;do{Aa=xb((c[x>>2]|0)+224|0)|0|Aa<<1;ya=ya+1|0}while((ya|0)<(xa|0))}Ba=Aa<<17-pa}va=va<<2;xa=wa<<2;wa=p+qa+199|0;ya=0;Ga=0;Ca=za;Ea=0;while(1){za=Da&255;Aa=(d[K+za>>0]|0)+va|0;za=(d[J+za>>0]|0)+xa|0;b:do if((ya|0)<8){Ha=(d[s+ya>>0]|0)+1|0;Na=(ya|0)==(ra|0);if((Ha|0)==((Na?3:2)|0)&0==((Na?0:0)|0))Ia=0;else{Ia=0;break}while(1){Ka=Ia+1|0;if(!(xb((c[x>>2]|0)+224|0)|0)){v=122;break}if((Ka|0)<31)Ia=Ka;else{v=120;break}}do if((v|0)==120){if((Ka|0)!=31){v=126;break}Ka=c[ba>>2]|0;c[w>>2]=31;$a(Ka,16,192,w);Ka=31;v=126}else if((v|0)==122){v=0;if((Ia|0)>=3){Ka=Ia;v=126;break}if((Fa|0)>0){Ka=0;La=0;do{La=xb((c[x>>2]|0)+224|0)|0|La<<1;Ka=Ka+1|0}while((Ka|0)!=(Fa|0))}else La=0;Ka=La+(Ia<0){La=Fa+ -3+Ka|0;Ka=0;Na=0;do{Na=xb((c[x>>2]|0)+224|0)|0|Na<<1;Ka=Ka+1|0}while((Ka|0)!=(La|0))}else Na=0;Ka=Na+((1<>31|0,Ha|0,0)|0;Ia=D;La=3<>31;Na=c[(c[m>>2]|0)+13116>>2]|0;do if((Ia|0)>(Oa|0)|(Ia|0)==(Oa|0)&Ha>>>0>La>>>0){La=Fa+1|0;if(Na){Fa=La;break}Fa=(Fa|0)>3?4:La;break b}while(0);if(!((Na|0)!=0&(Ga|0)==0))break;Ga=a[wa>>0]|0;La=(Ga&255)>>>2;if((Ka|0)>=(3<>0]=Ga+1<<24>>24;Ga=1;break}if((Ka<<1|0)>=(1<>24==0){Ga=1;break}a[wa>>0]=Ga+ -1<<24>>24;Ga=1}else{Ha=0;while(1){Ia=Ha+1|0;if(!(xb((c[x>>2]|0)+224|0)|0)){v=142;break}if((Ia|0)<31)Ha=Ia;else{v=140;break}}do if((v|0)==140){if((Ia|0)!=31){v=146;break}Ia=c[ba>>2]|0;c[w>>2]=31;$a(Ia,16,192,w);Ia=31;v=146}else if((v|0)==142){v=0;if((Ha|0)>=3){Ia=Ha;v=146;break}if((Fa|0)>0){Ia=0;Ka=0;do{Ka=xb((c[x>>2]|0)+224|0)|0|Ka<<1;Ia=Ia+1|0}while((Ia|0)!=(Fa|0))}else Ka=0;Ka=Ka+(Ha<0){Ia=Fa+ -3+Ia|0;Ka=0;La=0;do{La=xb((c[x>>2]|0)+224|0)|0|La<<1;Ka=Ka+1|0}while((Ka|0)!=(Ia|0))}else La=0;Ka=La+((1<>31;Na=c[(c[m>>2]|0)+13116>>2]|0;do if((Ka|0)>=(3<3?4:La;break b}while(0);if(!((Na|0)!=0&(Ga|0)==0))break;La=a[wa>>0]|0;Ga=(La&255)>>>2;if((Ka|0)>=(3<>0]=La+1<<24>>24;Ga=1;break}if((Ka<<1|0)>=(1<>24==0){Ga=1;break}a[wa>>0]=La+ -1<<24>>24;Ga=1}while(0);do if(!((a[(c[Z>>2]|0)+4>>0]|0)==0|ua)){Ea=ue(Ha|0,Ia|0,Ea|0,0)|0;if(Da<<24>>24!=ta<<24>>24)break;Oa=(Ea&1|0)==0;Na=te(0,0,Ha|0,Ia|0)|0;Ha=Oa?Ha:Na;Ia=Oa?Ia:D}while(0);Oa=(Ba&32768|0)==0;Da=te(0,0,Ha|0,Ia|0)|0;Da=Oa?Ha:Da;Ha=Oa?Ia:D;Ba=Ba<<1&131070;Ia=Da&65535;do if(!(a[z>>0]|0)){do if(!((a[(c[m>>2]|0)+634>>0]|0)==0|_)){if(!((za|Aa|0)!=0|ha)){Ca=oa;break}if((j|0)==3)Ca=(za<<3)+Aa|0;else if((j|0)==4)Ca=(za>>>1<<3)+(Aa>>>1)|0;else if((j|0)==5)Ca=(za>>>2<<3)+(Aa>>>2)|0;else Ca=(za<<2)+Aa|0;Ca=d[E+Ca>>0]|0}while(0);Ha=Ge(Da|0,Ha|0,C|0,ea|0)|0;Ha=Ge(Ha|0,D|0,Ca|0,((Ca|0)<0)<<31>>31|0)|0;Ha=ue(Ha|0,D|0,B|0,da|0)|0;Ha=se(Ha|0,D|0,F|0)|0;Da=D;if((Da|0)<0){Ia=(Ha&-32768|0)==-32768&(Da&268435455|0)==268435455?Ha&65535:-32768;break}else{Ia=Da>>>0>0|(Da|0)==0&Ha>>>0>32767?32767:Ha&65535;break}}while(0);b[g+((za<>1]=Ia;ya=ya+1|0;if((ya|0)>=(pa|0)){za=Ca;break a}Da=a[u+ya>>0]|0}}while(0);if(na)ma=ma+ -1|0;else break}}do if(a[z>>0]|0){if((c[(c[m>>2]|0)+13104>>2]|0)!=0?(y&-17|0)==10:0)Ma[c[f+5908>>2]&7](g,j&65535,(y|0)==26&1)}else{if(G){s=c[m>>2]|0;if((c[s+13096>>2]|0)!=0&(j|0)==2?(c[p+31244>>2]|0)==1:0){t=0;do{La=g+(15-t<<1)|0;Na=b[La>>1]|0;Oa=g+(t<<1)|0;b[La>>1]=b[Oa>>1]|0;b[Oa>>1]=Na;t=t+1|0}while((t|0)!=8)}t=j&65535;Ma[c[f+5904>>2]&7](g,t,c[s+52>>2]|0);if(!(c[(c[m>>2]|0)+13104>>2]|0))break;if((c[p+31244>>2]|0)!=1)break;if((y&-17|0)!=10)break;Ma[c[f+5908>>2]&7](g,t,(y|0)==26&1);break}if(A&(c[p+31244>>2]|0)==1&(j|0)==2){Ja[c[f+5912>>2]&15](g,c[(c[m>>2]|0)+52>>2]|0);break}s=(I|0)>(H|0)?I:H;if(!s){Ja[c[f+(j+ -2<<2)+5932>>2]&15](g,c[(c[m>>2]|0)+52>>2]|0);break}t=H+4+I|0;do if((s|0)>=4){if((s|0)<8){t=(t|0)<8?t:8;break}if((s|0)<12)t=(t|0)<24?t:24}else t=(t|0)<4?t:4;while(0);Ma[c[f+(j+ -2<<2)+5916>>2]&7](g,t,c[(c[m>>2]|0)+52>>2]|0)}while(0);if(!(a[p+304>>0]|0)){Na=j+ -2|0;Na=f+(Na<<2)+5888|0;Na=c[Na>>2]|0;Oa=c[m>>2]|0;Oa=Oa+52|0;Oa=c[Oa>>2]|0;Sa[Na&15](q,g,n,Oa);i=o;return}if((r|0)<=0){Na=j+ -2|0;Na=f+(Na<<2)+5888|0;Na=c[Na>>2]|0;Oa=c[m>>2]|0;Oa=Oa+52|0;Oa=c[Oa>>2]|0;Sa[Na&15](q,g,n,Oa);i=o;return}p=c[p+284>>2]|0;s=0;do{Oa=g+(s<<1)|0;b[Oa>>1]=(($(b[h+(s<<1)>>1]|0,p)|0)>>>3)+(e[Oa>>1]|0);s=s+1|0}while((s|0)!=(r|0));Na=j+ -2|0;Na=f+(Na<<2)+5888|0;Na=c[Na>>2]|0;Oa=c[m>>2]|0;Oa=Oa+52|0;Oa=c[Oa>>2]|0;Sa[Na&15](q,g,n,Oa);i=o;return}function Wb(a){a=a|0;var b=0,e=0,f=0;b=i;f=a+16|0;e=c[f>>2]|0;c[a>>2]=(c[a>>2]|0)+ -65535+((d[e+1>>0]|0)<<1|(d[e>>0]|0)<<9);if(e>>>0>=(c[a+20>>2]|0)>>>0){i=b;return}c[f>>2]=e+2;i=b;return}function Xb(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;h=b+136|0;n=c[h>>2]|0;g=b+180|0;j=c[g>>2]|0;m=c[j+13080>>2]|0;q=(1<>2]|0)+24>>2]|0);o=m&d;p=m&e;k=c[j+13140>>2]|0;j=c[j+13064>>2]|0;l=o>>j;j=p>>j;if(!(q&d))o=0;else o=(o&q|0)!=0;if(!(q&e))p=0;else p=(p&q|0)!=0;q=n+203|0;if((a[q>>0]|0)==0?(m&(e|d)|0)!=0:0)d=c[n+276>>2]|0;else{a[q>>0]=(a[n+300>>0]|0)==0&1;d=a[b+3080>>0]|0}if(o){e=l+ -1+($(j,k)|0)|0;e=a[(c[b+7592>>2]|0)+e>>0]|0}else e=d;if(p){d=($(j+ -1|0,k)|0)+l|0;d=a[(c[b+7592>>2]|0)+d>>0]|0}b=e+1+d>>1;h=c[h>>2]|0;j=c[h+280>>2]|0;if(!j){a[h+272>>0]=b;i=f;return}g=c[(c[g>>2]|0)+13192>>2]|0;b=j+52+b+(g<<1)|0;if((b|0)>0)j=b;else j=-52-g+1+b|0;a[h+272>>0]=b-g-j+((j|0)%(g+52|0)|0);i=f;return}function Yb(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;g=i;s=c[b+136>>2]|0;q=b+3488|0;v=c[q>>2]|0;n=c[v+16>>2]|0;u=b+180|0;w=c[u>>2]|0;p=c[w+13084>>2]|0;l=c[w+13072>>2]|0;k=c[w+13156>>2]|0;m=c[w+13148>>2]|0;r=$(k,e>>p)|0;o=d>>p;j=(a[n+(r+o)>>0]|0)==0;a:do if((e|0)>0&(e&7|0)==0){if(((a[b+3030>>0]|0)==0?(c[s+31312>>2]&4|0)!=0:0)?((e|0)%(1<>2]|0)|0|0)==0:0)break;if((a[(c[b+184>>2]|0)+53>>0]|0)==0?(x=c[s+31312>>2]|0,(x&8|0)!=0):0)if(!((e|0)%(1<>2]|0)|0))break;else w=x;else w=c[s+31312>>2]|0;B=e+ -1|0;if(w&4)Jc(b,v,d,B)|0;A=1<0){y=$(m,B>>l)|0;x=b+7620|0;w=$(m,e>>l)|0;z=b+5820|0;v=b+7596|0;B=$(k,B>>p)|0;C=0;while(1){D=C+d|0;G=D>>p;F=D>>l;H=c[x>>2]|0;E=a[H+(F+y)>>0]|0;F=a[H+(F+w)>>0]|0;if((a[n+(G+r)>>0]|0)!=0?(a[n+(G+B)>>0]|0)!=0:0)if(!((F|E)<<24>>24))break;else E=1;else E=2;H=($(c[z>>2]|0,e)|0)+D>>2;a[(c[v>>2]|0)+H>>0]=E;C=C+4|0;if((C|0)>=(A|0))break a}Zb()}}while(0);b:do if((d|0)>0&(d&7|0)==0){if(((a[b+3030>>0]|0)==0?(c[s+31312>>2]&1|0)!=0:0)?((d|0)%(1<>2]|0)+13080>>2]|0)|0|0)==0:0)break;if((a[(c[b+184>>2]|0)+53>>0]|0)==0?(t=c[s+31312>>2]|0,(t&2|0)!=0):0){if(!((d|0)%(1<>2]|0)+13080>>2]|0)|0))break}else t=c[s+31312>>2]|0;if(!(t&1))r=d+ -1|0;else{r=d+ -1|0;Jc(b,c[q>>2]|0,r,e)|0}q=r>>p;v=r>>l;u=d>>l;t=1<0){r=b+7620|0;s=b+5820|0;w=b+7600|0;b=0;while(1){x=b+e|0;H=$(x>>p,k)|0;y=$(x>>l,m)|0;G=c[r>>2]|0;z=a[G+(y+v)>>0]|0;y=a[G+(y+u)>>0]|0;if((a[n+(H+o)>>0]|0)!=0?(a[n+(H+q)>>0]|0)!=0:0)if(!((y|z)<<24>>24))break;else y=1;else y=2;H=($(c[s>>2]|0,x)|0)+d>>2;a[(c[w>>2]|0)+H>>0]=y;b=b+4|0;if((b|0)>=(t|0))break b}Zb()}}while(0);if((p|0)>=(f|0)|j){i=g;return}j=1<8;if(k)Zb();if((j|0)<=0){i=g;return}if(k)Zb();else h=0;do h=h+4|0;while((h|0)<(j|0));i=g;return}function Zb(){ua()}function _b(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0;j=i;i=i+32|0;o=j+8|0;x=j;n=j+18|0;s=j+16|0;l=e+180|0;K=c[l>>2]|0;v=c[K+13120>>2]|0;k=(v-h|0)<=(f|0);b[n>>1]=0;b[s>>1]=0;w=c[K+13080>>2]|0;u=1<>w,c[K+13128>>2]|0)|0)+(f>>w)|0;t=c[e+3476>>2]|0;m=c[t+(w<<3)+4>>2]|0;y=c[t+(w<<3)>>2]|0;if((c[K+68>>2]|0)!=0?(a[K+13056>>0]|0)!=0:0)p=1;else p=(a[(c[e+184>>2]|0)+40>>0]|0)!=0;r=c[K+52>>2]|0;q=(f|0)!=0;if(q){w=w+ -1|0;z=c[t+(w<<3)>>2]|0;w=c[t+(w<<3)+4>>2]|0}else{z=0;w=0}t=u+f|0;t=(t|0)>(v|0)?v:t;u=u+g|0;A=c[K+13124>>2]|0;u=(u|0)>(A|0)?A:u;A=(t|0)==(v|0)?t:t+ -8|0;v=(u|0)>(g|0);if(v){K=q?f:8;N=(K|0)<(t|0);Q=q?f+ -8|0:0;F=e+5820|0;P=e+7596|0;I=e+7592|0;C=x+4|0;D=e+160|0;E=n+1|0;R=s+1|0;L=e+7576|0;M=e+7560|0;J=e+7600|0;G=e+7580|0;H=e+7564|0;B=(Q|0)>=(A|0);U=y;T=m;O=g;do{if(N){W=O+4|0;X=T+ -2&-2;V=K;do{_=c[F>>2]|0;da=($(_,O)|0)+V>>2;aa=c[J>>2]|0;da=a[aa+da>>0]|0;ca=da&255;_=a[aa+(($(_,W)|0)+V>>2)>>0]|0;aa=_&255;da=da<<24>>24!=0;_=_<<24>>24==0;do if(!(_&(da^1))){S=V+ -1|0;Y=c[l>>2]|0;ba=c[Y+13064>>2]|0;Z=$(O>>ba,c[Y+13140>>2]|0)|0;ea=c[I>>2]|0;ba=(a[ea+(Z+(S>>ba))>>0]|0)+1+(a[ea+(Z+(V>>ba))>>0]|0)>>1;Z=ba+U|0;if((Z|0)<0)Z=0;else Z=(Z|0)>51?51:Z;Z=d[1328+Z>>0]|0;if(da){ca=(ca<<1)+X+ba|0;if((ca|0)<0)ca=0;else ca=(ca|0)>53?53:ca;ca=d[1384+ca>>0]|0}else ca=0;c[x>>2]=ca;if(_)_=0;else{_=(aa<<1)+X+ba|0;if((_|0)<0)_=0;else _=(_|0)>53?53:_;_=d[1384+_>>0]|0}c[C>>2]=_;da=c[D>>2]|0;_=c[da+32>>2]|0;ea=$(_,O)|0;Y=(c[da>>2]|0)+((V<>2])+ea)|0;if(p){a[n>>0]=cc(e,S,O)|0;a[E>>0]=cc(e,S,W)|0;a[s>>0]=cc(e,V,O)|0;a[R>>0]=cc(e,V,W)|0;Ga[c[G>>2]&7](Y,_,Z,x,n,s,r);break}else{Ga[c[H>>2]&7](Y,_,Z,x,n,s,r);break}}while(0);V=V+8|0}while((V|0)<(t|0))}if(!((O|0)==0|B)){S=O+ -1|0;W=T;T=Q;do{Z=$(c[F>>2]|0,O)|0;_=c[P>>2]|0;ba=a[_+(Z+T>>2)>>0]|0;ca=ba&255;V=T+4|0;Z=a[_+(Z+V>>2)>>0]|0;_=Z&255;ba=ba<<24>>24!=0;Z=Z<<24>>24==0;do if(!(Z&(ba^1))){X=c[l>>2]|0;W=c[X+13064>>2]|0;aa=T>>W;U=c[X+13140>>2]|0;ea=($(S>>W,U)|0)+aa|0;Y=c[I>>2]|0;aa=(a[Y+ea>>0]|0)+1+(a[Y+(($(O>>W,U)|0)+aa)>>0]|0)>>1;U=(T|0)>=(f|0);W=U?m:w;U=U?y:z;Y=aa+U|0;if((Y|0)<0)Y=0;else Y=(Y|0)>51?51:Y;Y=d[1328+Y>>0]|0;if(ba){ba=(ca<<1)+(W+ -2&-2)+aa|0;if((ba|0)<0)ba=0;else ba=(ba|0)>53?53:ba;ba=d[1384+ba>>0]|0}else ba=0;c[x>>2]=ba;if(Z)Z=0;else{Z=(_<<1)+(W+ -2&-2)+aa|0;if((Z|0)<0)Z=0;else Z=(Z|0)>53?53:Z;Z=d[1384+Z>>0]|0}c[C>>2]=Z;da=c[D>>2]|0;Z=c[da+32>>2]|0;ea=$(Z,O)|0;X=(c[da>>2]|0)+((T<>2])+ea)|0;if(p){a[n>>0]=cc(e,T,S)|0;a[E>>0]=cc(e,V,S)|0;a[s>>0]=cc(e,T,O)|0;a[R>>0]=cc(e,V,O)|0;Ga[c[L>>2]&7](X,Z,Y,x,n,s,r);break}else{Ga[c[M>>2]&7](X,Z,Y,x,n,s,r);break}}while(0);T=T+8|0}while((T|0)<(A|0));T=W}O=O+8|0}while((O|0)<(u|0));K=c[l>>2]|0}else T=m;if(c[K+4>>2]|0){D=q?w:m;G=e+5820|0;F=e+7596|0;w=e+7592|0;y=o+4|0;x=e+160|0;C=n+1|0;B=s+1|0;E=e+7584|0;H=e+7568|0;I=e+7600|0;A=e+7588|0;z=e+7572|0;J=1;do{P=1<>2];Q=1<>2];if(v){O=P<<3;M=q?f:O;L=(M|0)<(t|0);K=Q<<3;N=q?f-O|0:0;P=P<<2;Q=Q<<2;R=g;do{if(L){S=R+Q|0;U=M;do{X=c[G>>2]|0;Z=($(X,R)|0)+U>>2;ea=c[I>>2]|0;Z=(a[ea+Z>>0]|0)==2;X=(a[ea+(($(X,S)|0)+U>>2)>>0]|0)==2;do if(Z|X){V=U+ -1|0;W=c[l>>2]|0;ea=c[W+13064>>2]|0;_=V>>ea;Y=c[W+13140>>2]|0;ba=$(R>>ea,Y)|0;aa=c[w>>2]|0;ca=U>>ea;Y=$(S>>ea,Y)|0;Y=(a[aa+(Y+_)>>0]|0)+1+(a[aa+(Y+ca)>>0]|0)>>1;if(Z)Z=dc(e,(a[aa+(ba+ca)>>0]|0)+1+(a[aa+(ba+_)>>0]|0)>>1,J,T)|0;else Z=0;c[o>>2]=Z;if(X)X=dc(e,Y,J,T)|0;else X=0;c[y>>2]=X;da=c[x>>2]|0;X=c[da+(J<<2)+32>>2]|0;ea=$(X,R>>c[W+(J<<2)+13180>>2])|0;W=(c[da+(J<<2)>>2]|0)+((U>>c[W+(J<<2)+13168>>2]<>2])+ea)|0;if(p){a[n>>0]=cc(e,V,R)|0;a[C>>0]=cc(e,V,S)|0;a[s>>0]=cc(e,U,R)|0;a[B>>0]=cc(e,U,S)|0;Pa[c[A>>2]&3](W,X,o,n,s,r);break}else{Pa[c[z>>2]&3](W,X,o,n,s,r);break}}while(0);U=U+O|0}while((U|0)<(t|0))}if(R){V=t-((t|0)==(c[(c[l>>2]|0)+13120>>2]|0)?0:O)|0;if((N|0)<(V|0)){U=R+ -1|0;T=N;do{X=$(c[G>>2]|0,R)|0;ea=c[F>>2]|0;S=T+P|0;Y=(a[ea+(X+T>>2)>>0]|0)==2;X=(a[ea+(X+S>>2)>>0]|0)==2;do if(Y|X){if(Y){ea=c[l>>2]|0;da=c[ea+13064>>2]|0;Z=T>>da;ea=c[ea+13140>>2]|0;ba=($(U>>da,ea)|0)+Z|0;ca=c[w>>2]|0;Z=(a[ca+ba>>0]|0)+1+(a[ca+(($(R>>da,ea)|0)+Z)>>0]|0)>>1}else Z=0;if(X){ea=c[l>>2]|0;da=c[ea+13064>>2]|0;W=S>>da;ea=c[ea+13140>>2]|0;ba=($(U>>da,ea)|0)+W|0;ca=c[w>>2]|0;W=(a[ca+ba>>0]|0)+1+(a[ca+(($(R>>da,ea)|0)+W)>>0]|0)>>1}else W=0;if(Y)Y=dc(e,Z,J,D)|0;else Y=0;c[o>>2]=Y;if(X)W=dc(e,W,J,m)|0;else W=0;c[y>>2]=W;ea=c[l>>2]|0;da=c[x>>2]|0;X=c[da+(J<<2)+32>>2]|0;W=$(X,R>>c[ea+13184>>2])|0;W=(c[da+(J<<2)>>2]|0)+((T>>c[ea+13172>>2]<>2])+W)|0;if(p){a[n>>0]=cc(e,T,U)|0;a[C>>0]=cc(e,S,U)|0;a[s>>0]=cc(e,T,R)|0;a[B>>0]=cc(e,S,R)|0;Pa[c[E>>2]&3](W,X,o,n,s,r);break}else{Pa[c[H>>2]&3](W,X,o,n,s,r);break}}while(0);T=T+O|0}while((T|0)<(V|0));T=D}else T=D}R=R+K|0}while((R|0)<(u|0))}J=J+1|0;K=c[l>>2]|0}while((J|0)!=3)}if(!(a[K+12941>>0]|0)){if((a[e+140>>0]&1)==0|k^1){i=j;return}i=j;return}n=(c[K+13124>>2]|0)-h|0;l=(g|0)==0;m=(f|0)==0;if(!(l|m))$b(e,f-h|0,g-h|0);n=(n|0)>(g|0);if(!(m|n))$b(e,f-h|0,g);k=k^1;!(l|k)?($b(e,f,g-h|0),(a[e+140>>0]&1)!=0):0;if(n|k){i=j;return}$b(e,f,g);if(!(a[e+140>>0]&1)){i=j;return}i=j;return}function $b(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;t=i;i=i+32|0;h=t+8|0;s=t+26|0;r=t+24|0;p=t;q=e+180|0;G=c[q>>2]|0;j=c[G+13080>>2]|0;o=f>>j;j=g>>j;z=G+13128|0;m=($(j,c[z>>2]|0)|0)+o|0;J=c[e+184>>2]|0;I=J+1668|0;K=c[(c[I>>2]|0)+(m<<2)>>2]|0;k=e+3472|0;l=c[k>>2]|0;n=l+(m*148|0)|0;b[s>>1]=0;b[r>>1]=0;c[p>>2]=0;y=($(c[z>>2]|0,j)|0)+o|0;y=a[(c[e+7628>>2]|0)+y>>0]|0;if((a[J+42>>0]|0)!=0?(a[J+53>>0]|0)==0:0){L=1;F=1}else{L=0;F=y<<24>>24==0&1}A=(o|0)==0;c[h>>2]=A&1;E=(j|0)==0;w=h+4|0;c[w>>2]=E&1;C=(o|0)==((c[z>>2]|0)+ -1|0);u=h+8|0;c[u>>2]=C&1;B=(j|0)==((c[G+13132>>2]|0)+ -1|0);v=h+12|0;c[v>>2]=B&1;if(F<<24>>24){if(A)D=0;else{if(L){D=c[J+1676>>2]|0;D=(c[D+(K<<2)>>2]|0)!=(c[D+(c[(c[I>>2]|0)+(m+ -1<<2)>>2]<<2)>>2]|0)&1}else D=0;if(y<<24>>24==0?(W=$(c[z>>2]|0,j)|0,V=c[e+7604>>2]|0,(c[V+(W+o<<2)>>2]|0)!=(c[V+(o+ -1+W<<2)>>2]|0)):0)H=1;else H=D;a[s>>0]=H}if(C)H=0;else{if(L){H=c[J+1676>>2]|0;H=(c[H+(K<<2)>>2]|0)!=(c[H+(c[(c[I>>2]|0)+(m+1<<2)>>2]<<2)>>2]|0)&1}else H=0;if(y<<24>>24==0?(W=$(c[z>>2]|0,j)|0,V=c[e+7604>>2]|0,(c[V+(W+o<<2)>>2]|0)!=(c[V+(o+1+W<<2)>>2]|0)):0)M=1;else M=H;a[s+1>>0]=M}if(E)M=0;else{if(L){M=c[J+1676>>2]|0;M=(c[M+(K<<2)>>2]|0)!=(c[M+(c[(c[I>>2]|0)+(m-(c[z>>2]|0)<<2)>>2]<<2)>>2]|0)&1}else M=0;if(y<<24>>24==0?(W=c[z>>2]|0,U=($(W,j)|0)+o|0,V=c[e+7604>>2]|0,(c[V+(U<<2)>>2]|0)!=(c[V+(($(W,j+ -1|0)|0)+o<<2)>>2]|0)):0)N=1;else N=M;a[r>>0]=N}if(B)I=0;else{if(L){W=c[J+1676>>2]|0;I=(c[W+(K<<2)>>2]|0)!=(c[W+(c[(c[I>>2]|0)+((c[z>>2]|0)+m<<2)>>2]<<2)>>2]|0)&1}else I=0;if(y<<24>>24==0?(W=c[z>>2]|0,U=($(W,j)|0)+o|0,V=c[e+7604>>2]|0,(c[V+(U<<2)>>2]|0)!=(c[V+(($(W,j+1|0)|0)+o<<2)>>2]|0)):0)J=1;else J=I;a[r+1>>0]=J}if(!A)if(E)x=47;else{if(!(y<<24>>24)){W=c[z>>2]|0;U=($(W,j)|0)+o|0;V=c[e+7604>>2]|0;if(D<<24>>24==0?(c[V+(U<<2)>>2]|0)==(c[V+(o+ -1+($(W,j+ -1|0)|0)<<2)>>2]|0):0)x=38;else J=1}else if(!(D<<24>>24))x=38;else J=1;if((x|0)==38)J=M<<24>>24!=0&1;a[p>>0]=J;x=40}else x=40;if((x|0)==40)if(!E){if(!C){if(!(y<<24>>24)){W=c[z>>2]|0;U=($(W,j)|0)+o|0;V=c[e+7604>>2]|0;if(H<<24>>24==0?(c[V+(U<<2)>>2]|0)==(c[V+(o+1+($(W,j+ -1|0)|0)<<2)>>2]|0):0)x=45;else E=1}else if(!(H<<24>>24))x=45;else E=1;if((x|0)==45)E=M<<24>>24!=0&1;a[p+1>>0]=E;x=47}}else x=47;if((x|0)==47?!(C|B):0){if(!(y<<24>>24)){W=c[z>>2]|0;U=($(W,j)|0)+o|0;V=c[e+7604>>2]|0;if(H<<24>>24==0?(c[V+(U<<2)>>2]|0)==(c[V+(o+1+($(W,j+1|0)|0)<<2)>>2]|0):0)x=51;else C=1}else if(!(H<<24>>24))x=51;else C=1;if((x|0)==51)C=I<<24>>24!=0&1;a[p+2>>0]=C}if(!(A|B)){if(!(y<<24>>24)){W=c[z>>2]|0;U=($(W,j)|0)+o|0;V=c[e+7604>>2]|0;if(D<<24>>24==0?(c[V+(U<<2)>>2]|0)==(c[V+(o+ -1+($(W,j+1|0)|0)<<2)>>2]|0):0)x=57;else y=1}else if(!(D<<24>>24))x=57;else y=1;if((x|0)==57)y=I<<24>>24!=0&1;a[p+3>>0]=y}}B=(c[G+4>>2]|0)!=0?3:1;D=e+160|0;E=e+164|0;A=e+5948|0;z=o+ -1|0;y=j+ -1|0;x=o+1|0;C=j+1|0;F=e+((F&255)<<2)+5952|0;U=G;M=0;while(1){T=c[U+(M<<2)+13168>>2]|0;I=f>>T;O=c[U+(M<<2)+13180>>2]|0;R=g>>O;P=c[D>>2]|0;L=c[P+(M<<2)+32>>2]|0;Q=c[E>>2]|0;N=c[Q+(M<<2)+32>>2]|0;J=1<>2];H=J>>T;J=J>>O;T=(c[U+13120>>2]>>T)-I|0;H=(H|0)>(T|0)?T:H;O=(c[U+13124>>2]>>O)-R|0;J=(J|0)>(O|0)?O:J;O=$(L,R)|0;T=c[U+56>>2]|0;I=I<>2]|0;G=P+O|0;R=I+($(N,R)|0)|0;Q=c[Q+(M<<2)>>2]|0;I=Q+R|0;K=l+(m*148|0)+M+142|0;S=d[K>>0]|0;if((S|0)==1){O=H<0){P=I;R=0;Q=G;while(1){xe(P|0,Q|0,O|0)|0;R=R+1|0;if((R|0)==(J|0))break;else{P=P+N|0;Q=Q+L|0}}U=c[q>>2]|0}Fa[c[A>>2]&1](G,I,L,N,n,h,H,J,M,c[U+52>>2]|0);bc(e,f,g,H,J,M);a[K>>0]=3}else if((S|0)==2){V=(c[h>>2]|0)==0;if(V){S=z+($(c[U+13128>>2]|0,j)|0)|0;S=(a[(c[k>>2]|0)+(S*148|0)+M+142>>0]|0)!=3&1}else S=0;do if(!(c[w>>2]|0)){if(V){V=z+($(c[U+13128>>2]|0,y)|0)|0;V=(a[(c[k>>2]|0)+(V*148|0)+M+142>>0]|0)!=3&1}else V=0;U=c[U+13128>>2]|0;if(!(c[u>>2]|0)){W=x+($(U,y)|0)|0;W=(a[(c[k>>2]|0)+(W*148|0)+M+142>>0]|0)!=3&1}else W=0;U=($(U,y)|0)+o|0;if(!(a[(c[k>>2]|0)+(U*148|0)+M+142>>0]|0)){V=V&255;U=V<>24){V=1<>24){W=c[(c[q>>2]|0)+56>>2]|0;V=H<>2]|0)){T=c[q>>2]|0;if(!(c[h>>2]|0)){U=z+($(c[T+13128>>2]|0,C)|0)|0;U=(a[(c[k>>2]|0)+(U*148|0)+M+142>>0]|0)!=3&1}else U=0;X=($(J,N)|0)+R|0;W=c[T+56>>2]|0;T=U<>2]|0;X=c[U+56>>2]|0;T=S<0){Q=Q+(R-T)|0;R=0;O=P+(O-T)|0;while(1){xe(Q|0,O|0,S|0)|0;R=R+1|0;if((R|0)==(J|0))break;else{Q=Q+N|0;O=O+L|0}}U=c[q>>2]|0}Ha[c[F>>2]&3](G,I,L,N,n,h,H,J,M,s,r,p,c[U+52>>2]|0);bc(e,f,g,H,J,M);a[K>>0]=3}M=M+1|0;if((M|0)>=(B|0))break;U=c[q>>2]|0}i=t;return}function ac(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;h=c[a+180>>2]|0;k=((c[h+13120>>2]|0)-e|0)>(b|0);h=((c[h+13124>>2]|0)-e|0)>(d|0);j=(d|0)==0;g=(b|0)==0;if(!(j|g))_b(a,b-e|0,d-e|0,e);if(!(j|k))_b(a,b,d-e|0,e);if(g|h){i=f;return}_b(a,b-e|0,d,e);i=f;return}function bc(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;o=i;s=c[b+180>>2]|0;if(!(a[(c[b+184>>2]|0)+40>>0]|0)){if(!(a[s+13056>>0]|0)){i=o;return}if(!(c[s+68>>2]|0)){i=o;return}}p=b+164|0;j=c[(c[p>>2]|0)+(h<<2)+32>>2]|0;k=b+160|0;q=c[(c[k>>2]|0)+(h<<2)+32>>2]|0;l=b+180|0;A=c[s+13084>>2]|0;v=1<>2]|0;t=c[s+(h<<2)+13180>>2]|0;s=d>>A;u=e>>A;f=f+d>>A;g=g+e>>A;d=v>>r;if((u|0)>=(g|0)){i=o;return}e=(s|0)<(f|0);b=b+7624|0;v=v>>t;w=(v|0)>0;do{if(e){x=s;do{y=c[l>>2]|0;A=($(c[y+13156>>2]|0,u)|0)+x|0;if((a[(c[b>>2]|0)+A>>0]|0)!=0?(n=c[y+13084>>2]|0,m=u<>t,n=x<>r<>2],w):0){z=$(m,j)|0;y=$(m,q)|0;z=(c[(c[p>>2]|0)+(h<<2)>>2]|0)+(z+n)|0;A=0;y=(c[(c[k>>2]|0)+(h<<2)>>2]|0)+(y+n)|0;while(1){xe(y|0,z|0,d|0)|0;A=A+1|0;if((A|0)==(v|0))break;else{z=z+j|0;y=y+q|0}}}x=x+1|0}while((x|0)!=(f|0))}u=u+1|0}while((u|0)!=(g|0));i=o;return}function cc(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;f=i;g=c[a+180>>2]|0;h=c[g+13084>>2]|0;if((e|b|0)<0){e=2;i=f;return e|0}b=b>>h;e=e>>h;h=c[g+13156>>2]|0;if((b|0)>=(h|0)){e=2;i=f;return e|0}if((e|0)>=(c[g+13160>>2]|0)){e=2;i=f;return e|0}e=($(h,e)|0)+b|0;e=d[(c[a+7624>>2]|0)+e>>0]|0;i=f;return e|0}function dc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;h=c[b+184>>2]|0;d=(c[((e|0)==1?h+28|0:h+32|0)>>2]|0)+d|0;if((d|0)<0)d=0;else d=(d|0)>57?57:d;do if((c[(c[b+180>>2]|0)+4>>2]|0)==1){if((d|0)>=30)if((d|0)>43){d=d+ -6|0;break}else{d=c[1440+(d+ -30<<2)>>2]|0;break}}else if((d|0)<0)d=0;else d=(d|0)>51?51:d;while(0);f=f+2+d|0;if((f|0)<0){h=0;h=1384+h|0;h=a[h>>0]|0;h=h&255;i=g;return h|0}h=(f|0)>53?53:f;h=1384+h|0;h=a[h>>0]|0;h=h&255;i=g;return h|0}function ec(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;k=b+7652|0;c[k>>2]=0;a:do if((e|0)>1){m=0;while(1){if(!(a[d+m>>0]|0)){if((m|0)>0){l=m+ -1|0;l=(a[d+l>>0]|0)==0?l:m}else l=m;m=l+2|0;if(((m|0)<(e|0)?(a[d+(l+1)>>0]|0)==0:0)?(j=a[d+m>>0]|0,(j&255)<4):0)break}else l=m;m=l+2|0;if((l+3|0)>=(e|0))break a}m=l;e=j<<24>>24==3?e:l}else m=0;while(0);if((m|0)>=(e+ -1|0)){c[f+12>>2]=d;c[f+8>>2]=e;q=e;i=g;return q|0}Ud(f,f+4|0,e+32|0);j=c[f>>2]|0;if(!j){q=-12;i=g;return q|0}xe(j|0,d|0,m|0)|0;o=m+2|0;b:do if((o|0)<(e|0)){l=b+7660|0;b=b+7656|0;n=m;c:while(1){p=d+o|0;q=a[p>>0]|0;do if((q&255)<=3){p=a[d+m>>0]|0;if(!(p<<24>>24))if(!(a[d+(m+1)>>0]|0)){if(q<<24>>24!=3){e=m;break b}o=n+1|0;a[j+n>>0]=0;n=n+2|0;a[j+o>>0]=0;m=m+3|0;q=(c[k>>2]|0)+1|0;c[k>>2]=q;p=c[l>>2]|0;if((p|0)<(q|0)){p=p<<1;c[l>>2]=p;Sd(b,p,4)|0;p=c[b>>2]|0;if(!p){f=-12;break c}}else{p=c[b>>2]|0;if(!p)break}c[p+((c[k>>2]|0)+ -1<<2)>>2]=o}else{p=0;h=26}else h=26}else{a[j+n>>0]=a[d+m>>0]|0;a[j+(n+1)>>0]=a[d+(m+1)>>0]|0;p=a[p>>0]|0;n=n+2|0;m=o;h=26}while(0);if((h|0)==26){h=0;a[j+n>>0]=p;n=n+1|0;m=m+1|0}o=m+2|0;if((o|0)>=(e|0)){h=15;break b}}i=g;return f|0}else{n=m;h=15}while(0);if((h|0)==15)if((m|0)<(e|0)){h=e+n|0;k=m;while(1){a[j+n>>0]=a[d+k>>0]|0;k=k+1|0;if((k|0)==(e|0))break;else n=n+1|0}n=h-m|0}else e=m;h=j+n+0|0;d=h+32|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(d|0));c[f+12>>2]=j;c[f+8>>2]=n;q=e;i=g;return q|0}function fc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;f=b+60|0;e=c[f>>2]|0;Md();Oc();f=c[f>>2]|0;c[f+4>>2]=b;g=Td(31328)|0;c[f+136>>2]=g;a:do if((((g|0)!=0?(c[f+72>>2]=g,c[f+8>>2]=f,j=Nd(199)|0,c[f+152>>2]=j,(j|0)!=0):0)?(j=fe()|0,c[f+168>>2]=j,(j|0)!=0):0)?(j=fe()|0,c[f+172>>2]=j,(j|0)!=0):0){g=f+3492|0;h=0;do{j=fe()|0;c[g+(h*72|0)>>2]=j;if(!j)break a;c[g+(h*72|0)+4>>2]=j;h=h+1|0}while(h>>>0<32);c[f+5816>>2]=2147483647;a[f+7745>>0]=1;c[f+5808>>2]=0;c[e+7644>>2]=0;c[e+7796>>2]=0;f=b+808|0;if(!(c[f>>2]&2))a[e+141>>0]=1;else a[e+141>>0]=c[b+800>>2];if((c[f>>2]&1|0)!=0?(c[b+800>>2]|0)>1:0){a[e+140>>0]=1;j=0;i=d;return j|0}a[e+140>>0]=2;j=0;i=d;return j|0}while(0);hc(b)|0;j=-12;i=d;return j|0}function gc(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0;k=i;i=i+16|0;m=k;p=k+8|0;n=c[f+60>>2]|0;l=j+28|0;I=c[l>>2]|0;if(!I){l=Nc(n,g,1)|0;if((l|0)<0){ib=l;i=k;return ib|0}c[h>>2]=l;ib=0;i=k;return ib|0}o=n+3488|0;c[o>>2]=0;H=c[j+24>>2]|0;c[o>>2]=0;A=n+5808|0;q=n+5812|0;c[q>>2]=c[A>>2];c[A>>2]=0;j=n+7684|0;c[j>>2]=0;a:do if((I|0)>3){B=n+7746|0;F=n+7688|0;u=n+7680|0;w=n+7664|0;E=n+7672|0;s=n+7668|0;G=n+7660|0;t=n+7656|0;v=n+7652|0;y=n+136|0;x=n+3480|0;C=n+7756|0;b:while(1){z=(a[B>>0]|0)==0;if(z){while(1){J=H+1|0;if(((a[H>>0]|0)==0?(a[J>>0]|0)==0:0)?(a[H+2>>0]|0)==1:0)break;if((I|0)<5){A=19;break b}H=J;I=I+ -1|0}H=H+3|0;K=0;I=I+ -3|0}else{J=c[C>>2]|0;if((J|0)>0){L=0;K=0;do{L=d[H+K>>0]|L<<8;K=K+1|0}while((K|0)!=(J|0));K=L}else K=0;I=I-J|0;if((K|0)>(I|0)){A=13;break}H=H+J|0}z=z?I:K;J=c[F>>2]|0;L=c[j>>2]|0;if((J|0)<(L+1|0)){J=J+1|0;K=Rd(c[u>>2]|0,J,16)|0;if(!K){z=-12;break a}c[u>>2]=K;L=c[F>>2]|0;ve(K+(L<<4)|0,0,J-L<<4|0)|0;Sd(w,J,4)|0;Sd(E,J,4)|0;Sd(s,J,4)|0;K=c[E>>2]|0;c[K+(c[F>>2]<<2)>>2]=1024;L=c[F>>2]|0;K=c[K+(L<<2)>>2]|0;if(K>>>0<536870911){K=Nd(K<<2)|0;L=c[F>>2]|0}else K=0;c[(c[s>>2]|0)+(L<<2)>>2]=K;c[F>>2]=J;L=c[j>>2]|0}c[G>>2]=c[(c[E>>2]|0)+(L<<2)>>2];c[t>>2]=c[(c[s>>2]|0)+(L<<2)>>2];K=c[u>>2]|0;J=ec(n,H,z,K+(L<<4)|0)|0;c[(c[w>>2]|0)+(c[j>>2]<<2)>>2]=c[v>>2];c[(c[E>>2]|0)+(c[j>>2]<<2)>>2]=c[G>>2];hb=c[t>>2]|0;ib=c[j>>2]|0;c[j>>2]=ib+1;c[(c[s>>2]|0)+(ib<<2)>>2]=hb;if((J|0)<0){z=J;break a}hb=c[y>>2]|0;fb=c[K+(L<<4)+12>>2]|0;gb=c[K+(L<<4)+8>>2]|0;gb=gb>>>0>268435455?-8:gb<<3;ib=gb>>>0>2147483639|(fb|0)==0;gb=ib?0:gb;fb=ib?0:fb;z=ib?-1094995529:0;c[hb+204>>2]=fb;c[hb+216>>2]=gb;c[hb+220>>2]=gb+8;c[hb+208>>2]=fb+(gb>>3);c[hb+212>>2]=0;if(ib)break a;kc(n)|0;if(((c[x>>2]|0)+ -36|0)>>>0<2)c[A>>2]=1;I=I-J|0;if((I|0)<=3){A=6;break}else H=H+J|0}if((A|0)==6){if((c[j>>2]|0)<=0)break;B=n+4|0;Fa=n+2416|0;Y=n+3014|0;X=n+2396|0;Ea=n+184|0;wa=n+180|0;La=n+2417|0;Ma=n+2400|0;Qa=n+2404|0;Ra=n+5804|0;Ia=n+156|0;ra=n+2408|0;N=n+2418|0;I=n+2588|0;va=n+5796|0;G=n+3484|0;J=n+5800|0;H=n+3024|0;U=n+3025|0;K=n+3026|0;M=n+3020|0;L=n+3016|0;Oa=n+3036|0;P=n+3040|0;O=n+3044|0;Q=n+3048|0;V=n+3029|0;S=n+3052|0;R=n+3056|0;W=n+3030|0;T=n+2419|0;Pa=n+3076|0;Ja=n+3080|0;Na=n+3468|0;Ga=n+5816|0;oa=n+5828|0;qa=n+7692|0;Ha=m+4|0;xa=n+7596|0;za=n+5820|0;ya=n+5824|0;Aa=n+7600|0;Ba=n+7620|0;Ca=n+7624|0;Da=n+7604|0;sa=n+160|0;pa=n+140|0;ta=n+172|0;la=n+3064|0;ma=n+3068|0;na=n+3072|0;E=n+141|0;F=n+7644|0;Z=n+3472|0;_=n+3476|0;aa=n+7608|0;ba=n+7612|0;ca=n+7616|0;ea=n+7628|0;da=n+7592|0;ga=n+1408|0;fa=n+1412|0;ia=n+5832|0;ha=n+5884|0;Sa=n+176|0;Ta=n+7640|0;ka=n+168|0;ja=n+164|0;C=0;c:while(1){c[v>>2]=c[(c[w>>2]|0)+(C<<2)>>2];c[t>>2]=c[(c[s>>2]|0)+(C<<2)>>2];hb=c[u>>2]|0;gb=c[hb+(C<<4)+12>>2]|0;hb=c[hb+(C<<4)+8>>2]|0;ib=c[y>>2]|0;hb=hb>>>0>268435455?-8:hb<<3;Ua=hb>>>0>2147483639|(gb|0)==0;hb=Ua?0:hb;gb=Ua?0:gb;c[ib+204>>2]=gb;c[ib+216>>2]=hb;c[ib+220>>2]=hb+8;c[ib+208>>2]=gb+(hb>>3);c[ib+212>>2]=0;d:do if(Ua){r=Ua?-1094995529:0;A=247}else{Ua=kc(n)|0;e:do if((Ua|0)<0){ib=c[B>>2]|0;c[m>>2]=c[x>>2];$a(ib,16,1728,m)}else{if(!Ua)break d;Ya=c[x>>2]|0;switch(Ya|0){case 48:{Ua=pd(n)|0;if((Ua|0)<0)break e;else break d};case 9:case 8:case 7:case 6:case 21:case 20:case 19:case 18:case 17:case 16:case 5:case 4:case 3:case 2:case 0:case 1:{Va=c[y>>2]|0;Xa=Va+204|0;Ua=Va+212|0;hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;Wa=Va+220|0;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;ib=ib&255;a[Fa>>0]=ib;if(!((Ya+ -16|0)>>>0>4|ib<<24>>24==0)?(b[Ta>>1]=(e[Ta>>1]|0)+1&255,c[Ga>>2]=2147483647,(Ya+ -19|0)>>>0<2):0){Kc(n);Ya=c[x>>2]|0}a[Y>>0]=0;if((Ya+ -16|0)>>>0<8){hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[Y>>0]=ib}Za=qc(Xa)|0;c[X>>2]=Za;if(Za>>>0>255){A=46;break c}Ya=c[n+(Za<<2)+380>>2]|0;if(!Ya){A=46;break c}if(!(a[Fa>>0]|0)){ab=c[Ya+4>>2]|0;if((c[Ea>>2]|0)!=(ab|0)){A=50;break c}}else ab=c[Ya+4>>2]|0;c[Ea>>2]=ab;_a=c[x>>2]|0;Za=(_a|0)==21;if(Za?(c[q>>2]|0)==1:0)a[Y>>0]=1;Ya=c[wa>>2]|0;ab=c[(c[n+(c[ab>>2]<<2)+252>>2]|0)+4>>2]|0;if((Ya|0)!=(ab|0)){c[wa>>2]=ab;f:do if(Ya){if((_a+ -16|0)>>>0>7|Za)break;do if((c[ab+13120>>2]|0)==(c[Ya+13120>>2]|0)){if((c[ab+13124>>2]|0)!=(c[Ya+13124>>2]|0))break;if((c[ab+76+(((c[ab+72>>2]|0)+ -1|0)*12|0)>>2]|0)==(c[Ya+(((c[Ya+72>>2]|0)+ -1|0)*12|0)+76>>2]|0))break f}while(0);a[Y>>0]=0}while(0);Kc(n);Ya=c[wa>>2]|0;jc(n);cb=c[Ya+13064>>2]|0;_a=Ya+13120|0;hb=c[_a>>2]|0;ab=Ya+13124|0;ib=c[ab>>2]|0;cb=$((ib>>cb)+1|0,(hb>>cb)+1|0)|0;Za=$(c[Ya+13132>>2]|0,c[Ya+13128>>2]|0)|0;eb=Ya+13156|0;db=Ya+13160|0;bb=$(c[db>>2]|0,c[eb>>2]|0)|0;c[za>>2]=(hb>>2)+1;c[ya>>2]=(ib>>2)+1;if(Za>>>0>=14510024){c[Z>>2]=0;if(Za>>>0>=268435455){A=64;break c}}else c[Z>>2]=Td(Za*148|0)|0;ib=Td(Za<<3)|0;c[_>>2]=ib;if((c[Z>>2]|0)==0|(ib|0)==0){A=104;break c}fb=Ya+13144|0;gb=Ya+13140|0;c[aa>>2]=Nd($(c[gb>>2]|0,c[fb>>2]|0)|0)|0;fb=c[fb>>2]|0;gb=c[gb>>2]|0;if(!gb){A=68;break c}if((2147483647/(gb>>>0)|0)>>>0<=fb>>>0){A=68;break c}ib=Nd($(gb,fb)|0)|0;c[ba>>2]=ib;if((c[aa>>2]|0)==0|(ib|0)==0){A=104;break c}gb=c[Ya+13148>>2]|0;fb=c[Ya+13152>>2]|0;do if(!fb)fb=0;else{if((2147483647/(fb>>>0)|0)>>>0<=gb>>>0){fb=0;break}fb=Nd($(fb,gb)|0)|0}while(0);c[Ba>>2]=fb;c[ca>>2]=Td(bb)|0;db=Nd($((c[db>>2]|0)+1|0,(c[eb>>2]|0)+1|0)|0)|0;c[Ca>>2]=db;if(!(c[ca>>2]|0)){A=104;break c}if((c[Ba>>2]|0)==0|(db|0)==0){A=104;break c}c[ea>>2]=Nd(Za)|0;if(cb>>>0>=536870911){c[Da>>2]=0;if(cb>>>0>=2147483647){A=78;break c}}else c[Da>>2]=Nd(cb<<2)|0;ib=Nd(cb)|0;c[da>>2]=ib;if(!ib){A=104;break c}if(!(c[ea>>2]|0)){A=104;break c}if(!(c[Da>>2]|0)){A=104;break c}db=c[za>>2]|0;cb=c[ya>>2]|0;if(!cb){A=83;break c}if((2147483647/(cb>>>0)|0)>>>0>db>>>0){ib=Td($(cb,db)|0)|0;db=c[za>>2]|0;cb=c[ya>>2]|0;c[xa>>2]=ib;if(!cb){A=88;break c}}else c[xa>>2]=0;if((2147483647/(cb>>>0)|0)>>>0<=db>>>0){A=88;break c}ib=Td($(cb,db)|0)|0;c[Aa>>2]=ib;if((c[xa>>2]|0)==0|(ib|0)==0){A=104;break c}c[ga>>2]=$d(bb,3)|0;ib=$d(Za*392|0,3)|0;c[fa>>2]=ib;if((c[ga>>2]|0)==0|(ib|0)==0){A=104;break c}ib=c[B>>2]|0;c[ib+124>>2]=c[_a>>2];c[ib+128>>2]=c[ab>>2];c[ib+116>>2]=c[Ya+12>>2];c[ib+120>>2]=c[Ya+16>>2];c[ib+136>>2]=c[Ya+60>>2];c[ib+172>>2]=c[Ya+(((c[Ya+72>>2]|0)+ -1|0)*12|0)+80>>2];ib=Ya+160|0;c[m+0>>2]=c[ib+0>>2];c[m+4>>2]=c[ib+4>>2];if(!(c[Ya+176>>2]|0)){Za=c[B>>2]|0;c[Za+392>>2]=1}else{Za=c[B>>2]|0;c[Za+392>>2]=(c[Ya+184>>2]|0)!=0?2:1}if(!(c[Ya+188>>2]|0)){c[Za+380>>2]=2;c[Za+384>>2]=2;c[Za+388>>2]=2}else{c[Za+380>>2]=d[Ya+192>>0];c[Za+384>>2]=d[Ya+193>>0];c[Za+388>>2]=d[Ya+194>>0]}ib=Ya+52|0;rc(ia,c[ib>>2]|0);Pc(ha,c[ib>>2]|0);if(a[Ya+12941>>0]|0){he(c[ka>>2]|0);ab=c[ka>>2]|0;ib=c[B>>2]|0;Za=ab+64|0;c[Za>>2]=(c[ib+124>>2]|0)+2;bb=ab+68|0;c[bb>>2]=(c[ib+128>>2]|0)+2;if((Fd(ib,ab,1)|0)>=0){eb=c[ab>>2]|0;if(eb){_a=1<>2];cb=ab;db=0;do{c[cb>>2]=eb+((c[ab+(db<<2)+32>>2]|0)+_a);db=db+1|0;cb=ab+(db<<2)|0;eb=c[cb>>2]|0}while((eb|0)!=0)}ib=c[B>>2]|0;c[Za>>2]=c[ib+124>>2];c[bb>>2]=c[ib+128>>2]}c[ja>>2]=c[ka>>2]}c[wa>>2]=Ya;c[Sa>>2]=c[(c[n+(c[Ya>>2]<<2)+188>>2]|0)+4>>2];b[Ta>>1]=(e[Ta>>1]|0)+1&255;c[Ga>>2]=2147483647}ab=c[B>>2]|0;c[ab+832>>2]=d[Ya+302>>0];c[ab+836>>2]=d[Ya+335>>0];a[La>>0]=0;do if(!(a[Fa>>0]|0)){_a=c[Ea>>2]|0;if(a[_a+41>>0]|0){hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[La>>0]=ib}Za=Ya+13128|0;Ya=Ya+13132|0;bb=($(c[Za>>2]<<1,c[Ya>>2]|0)|0)+ -2|0;cb=bb>>>0>65535;bb=cb?bb>>>16:bb;cb=cb?16:0;if(bb&65280){cb=cb|8;bb=bb>>>8}gb=(d[7416+bb>>0]|0)+cb|0;hb=c[Ua>>2]|0;ib=c[Wa>>2]|0;bb=(c[Xa>>2]|0)+(hb>>>3)|0;bb=(ze(d[bb>>0]|d[bb+1>>0]<<8|d[bb+2>>0]<<16|d[bb+3>>0]<<24|0)|0)<<(hb&7)>>>(32-gb|0);hb=gb+hb|0;c[Ua>>2]=ib>>>0>hb>>>0?hb:ib;c[Ma>>2]=bb;if(bb>>>0>=($(c[Ya>>2]|0,c[Za>>2]|0)|0)>>>0){A=112;break c}if(a[La>>0]|0)if(!(a[Ia>>0]|0)){A=171;break c}else break;else{c[Qa>>2]=bb;c[Ra>>2]=(c[Ra>>2]|0)+1;A=116;break}}else{c[Qa>>2]=0;c[Ma>>2]=0;c[Ra>>2]=0;a[Ia>>0]=0;_a=c[Ea>>2]|0;A=116}while(0);g:do if((A|0)==116){A=0;a[Ia>>0]=0;Ya=_a+1624|0;if((c[Ya>>2]|0)>0){ab=c[Wa>>2]|0;Za=c[Ua>>2]|0;_a=0;do{ib=Za+1|0;Za=ab>>>0>ib>>>0?ib:ab;c[Ua>>2]=Za;_a=_a+1|0}while((_a|0)<(c[Ya>>2]|0))}Za=qc(Xa)|0;c[ra>>2]=Za;if(Za>>>0>=3){A=120;break c}Ya=c[x>>2]|0;if(!((Ya+ -16|0)>>>0>7|(Za|0)==2)){A=122;break c}a[N>>0]=1;if(a[(c[Ea>>2]|0)+39>>0]|0){hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[N>>0]=ib}Za=c[wa>>2]|0;if(a[Za+8>>0]|0){gb=c[Ua>>2]|0;hb=c[Wa>>2]|0;ib=(c[Xa>>2]|0)+(gb>>>3)|0;ib=(ze(d[ib>>0]|d[ib+1>>0]<<8|d[ib+2>>0]<<16|d[ib+3>>0]<<24|0)|0)<<(gb&7)>>>30;gb=gb+2|0;c[Ua>>2]=hb>>>0>gb>>>0?gb:hb;a[T>>0]=ib}if((Ya+ -19|0)>>>0>=2){A=128;break c}c[I>>2]=0;c[va>>2]=0;h:do if(!(c[G>>2]|0)){switch(Ya|0){case 9:case 8:case 7:case 6:case 4:case 2:case 0:break h;default:{}}c[J>>2]=0}while(0);do if(a[Za+12941>>0]|0){hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[H>>0]=ib;if(!(c[Za+4>>2]|0)){a[U>>0]=0;a[K>>0]=0;break}else{hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;ib=ib&255;a[K>>0]=ib;a[U>>0]=ib;break}}else{a[H>>0]=0;a[U>>0]=0;a[K>>0]=0}while(0);c[M>>2]=0;c[L>>2]=0;Ya=qc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[Oa>>2]=Ya;_a=c[Ea>>2]|0;if(!(a[_a+36>>0]|0)){c[P>>2]=0;c[O>>2]=0}else{Ya=qc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[P>>2]=Ya;Ya=qc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[O>>2]=Ya;_a=c[Ea>>2]|0}if(!(a[_a+1631>>0]|0))Ya=0;else{ib=c[Ua>>2]|0;Ya=d[(c[Xa>>2]|0)+(ib>>>3)>>0]<<(ib&7)>>>7&1;c[Ua>>2]=((ib|0)<(c[Wa>>2]|0)&1)+ib;Ya=Ya&255}a[Q>>0]=Ya;i:do if(!(a[_a+55>>0]|0)){a[V>>0]=0;c[S>>2]=0;c[R>>2]=0}else{do if(a[_a+56>>0]|0){ib=c[Ua>>2]|0;ab=c[Xa>>2]|0;hb=d[ab+(ib>>>3)>>0]|0;Ya=c[Wa>>2]|0;Za=((ib|0)<(Ya|0)&1)+ib|0;c[Ua>>2]=Za;if(!(hb&128>>>(ib&7)))break;ib=d[ab+(Za>>>3)>>0]<<(Za&7)>>>7&1;c[Ua>>2]=((Za|0)<(Ya|0)&1)+Za;ib=ib&255;a[V>>0]=ib;if(ib<<24>>24)break i;Ya=qc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[S>>2]=Ya<<1;Ya=qc(Xa)|0;if(!(Ya&1))Ya=0-(Ya>>>1)|0;else Ya=(Ya+1|0)>>>1;c[R>>2]=Ya<<1;_a=c[Ea>>2]|0;break i}while(0);a[V>>0]=a[_a+57>>0]|0;c[S>>2]=c[_a+60>>2];c[R>>2]=c[_a+64>>2]}while(0);Ya=a[_a+54>>0]|0;j:do if(Ya<<24>>24){do if(!(a[H>>0]|0)){if(a[U>>0]|0)break;if(a[V>>0]|0)break j}while(0);hb=c[Ua>>2]|0;ib=d[(c[Xa>>2]|0)+(hb>>>3)>>0]<<(hb&7)>>>7&1;c[Ua>>2]=((hb|0)<(c[Wa>>2]|0)&1)+hb;a[W>>0]=ib;break g}while(0);a[W>>0]=Ya}while(0);c[Pa>>2]=0;if(!((a[_a+42>>0]|0)==0?(a[_a+43>>0]|0)==0:0))A=174;k:do if((A|0)==174){A=0;ib=qc(Xa)|0;c[Pa>>2]=ib;if((ib|0)<=0){c[F>>2]=0;break}Ya=(qc(Xa)|0)+1|0;Za=Ya>>4;Ya=Ya&15;Qd(la);Qd(ma);Qd(na);_a=c[Pa>>2]|0;do if(_a>>>0<536870911){ib=Nd(_a<<2)|0;_a=c[Pa>>2]|0;c[la>>2]=ib;if(_a>>>0>=536870911){A=178;break}ib=Nd(_a<<2)|0;_a=c[Pa>>2]|0;c[ma>>2]=ib;if(_a>>>0>=536870911){ab=0;break}ab=Nd(_a<<2)|0}else{c[la>>2]=0;A=178}while(0);if((A|0)==178){A=0;c[ma>>2]=0;ab=0}c[na>>2]=ab;_a=c[la>>2]|0;if(!_a){A=185;break c}if((c[ma>>2]|0)==0|(ab|0)==0){A=185;break c}if((c[Pa>>2]|0)>0){cb=(Za|0)>0;bb=(Ya|0)==0;ab=32-Ya|0;db=0;do{if(cb){eb=c[Wa>>2]|0;fb=c[Xa>>2]|0;gb=c[Ua>>2]|0;hb=0;ib=0;do{jb=fb+(gb>>>3)|0;jb=(ze(d[jb>>0]|d[jb+1>>0]<<8|d[jb+2>>0]<<16|d[jb+3>>0]<<24|0)|0)<<(gb&7)>>>16;kb=gb+16|0;gb=eb>>>0>kb>>>0?kb:eb;c[Ua>>2]=gb;ib=jb|ib<<16;hb=hb+1|0}while((hb|0)!=(Za|0))}else ib=0;if(!bb){hb=c[Ua>>2]|0;jb=c[Wa>>2]|0;kb=(c[Xa>>2]|0)+(hb>>>3)|0;kb=(ze(d[kb>>0]|d[kb+1>>0]<<8|d[kb+2>>0]<<16|d[kb+3>>0]<<24|0)|0)<<(hb&7)>>>ab;hb=hb+Ya|0;c[Ua>>2]=jb>>>0>hb>>>0?hb:jb;ib=kb+(ib<>2]=ib+1;db=db+1|0}while((db|0)<(c[Pa>>2]|0))}do if((d[E>>0]|0)>1){kb=c[Ea>>2]|0;if((c[kb+48>>2]|0)<=1?(c[kb+44>>2]|0)<=1:0)break;c[F>>2]=0;a[E>>0]=1;break k}while(0);c[F>>2]=0}while(0);Ya=c[Ea>>2]|0;if(a[Ya+1628>>0]|0){Xa=qc(Xa)|0;jb=we(Xa|0,0,3)|0;hb=D;Za=c[Ua>>2]|0;kb=(c[Va+216>>2]|0)-Za|0;ib=((kb|0)<0)<<31>>31;if((hb|0)>(ib|0)|(hb|0)==(ib|0)&jb>>>0>kb>>>0){A=202;break c}if(Xa){Wa=c[Wa>>2]|0;Ya=0;do{kb=Za+8|0;Za=Wa>>>0>kb>>>0?kb:Wa;Ya=Ya+1|0}while((Ya|0)!=(Xa|0));c[Ua>>2]=Za}Ya=c[Ea>>2]|0}Wa=(c[Ya+16>>2]|0)+26+(c[Oa>>2]|0)|0;a[Ja>>0]=Wa;Wa=Wa<<24;if((Wa|0)>855638016){A=207;break c}Wa=Wa>>24;Xa=c[(c[wa>>2]|0)+13192>>2]|0;if((Wa|0)<(0-Xa|0)){A=209;break c}kb=c[Ma>>2]|0;c[Na>>2]=kb;if((kb|0)==0?(a[La>>0]|0)!=0:0){A=212;break c}Ua=(c[Va+216>>2]|0)-(c[Ua>>2]|0)|0;if((Ua|0)<0){A=214;break c}a[(c[y>>2]|0)+203>>0]=(a[La>>0]|0)==0&1;if(!(a[(c[Ea>>2]|0)+22>>0]|0))a[(c[y>>2]|0)+272>>0]=a[Ja>>0]|0;a[Ia>>0]=1;a[(c[y>>2]|0)+302>>0]=0;a[(c[y>>2]|0)+303>>0]=0;Va=c[Ga>>2]|0;Ua=c[x>>2]|0;l:do if((Va|0)==2147483647)switch(Ua|0){case 18:case 16:case 17:case 21:{Va=c[va>>2]|0;c[Ga>>2]=Va;break l};case 20:case 19:{c[Ga>>2]=-2147483648;Va=-2147483648;break l};default:{Va=2147483647;break l}}while(0);do if((Ua+ -8|0)>>>0<2){if((c[va>>2]|0)<=(Va|0)){c[oa>>2]=0;break d}if((Ua|0)!=9)break;c[Ga>>2]=-2147483648}while(0);m:do if(a[Fa>>0]|0){Ua=c[y>>2]|0;jb=c[wa>>2]|0;Va=c[jb+13064>>2]|0;kb=c[jb+13120>>2]>>Va;Va=(c[jb+13124>>2]>>Va)+1|0;ve(c[xa>>2]|0,0,$(c[ya>>2]|0,c[za>>2]|0)|0)|0;ve(c[Aa>>2]|0,0,$(c[ya>>2]|0,c[za>>2]|0)|0)|0;jb=c[wa>>2]|0;ve(c[Ba>>2]|0,0,$(c[jb+13152>>2]|0,c[jb+13148>>2]|0)|0)|0;jb=c[wa>>2]|0;ve(c[Ca>>2]|0,0,$((c[jb+13160>>2]|0)+1|0,(c[jb+13156>>2]|0)+1|0)|0)|0;ve(c[Da>>2]|0,-1,$((kb<<2)+4|0,Va)|0)|0;c[oa>>2]=0;c[qa>>2]=c[x>>2];Va=c[Ea>>2]|0;if(a[Va+42>>0]|0)c[Ua+312>>2]=c[c[Va+1648>>2]>>2]<>2]|0)+13080>>2];Ua=Mc(n,sa,c[va>>2]|0)|0;do if((Ua|0)>=0){c[(c[c[o>>2]>>2]|0)+80>>2]=((c[x>>2]|0)+ -16|0)>>>0<8&1;c[(c[sa>>2]|0)+84>>2]=3-(c[ra>>2]|0);he(c[ta>>2]|0);Ua=Nc(n,c[ta>>2]|0,0)|0;if((Ua|0)<0)break;break m}while(0);if(!(c[o>>2]|0)){A=233;break c}c[o>>2]=0;if((Ua|0)<0)break c}else{if(c[o>>2]|0)break;$a(c[B>>2]|0,16,1760,m);Ua=0;break e}while(0);Va=c[x>>2]|0;Ua=c[qa>>2]|0;if((Va|0)!=(Ua|0)){A=240;break c}c[m>>2]=0;c[Ha>>2]=1;Ua=c[B>>2]|0;Ka[c[Ua+816>>2]&1](Ua,1,m,p,1,4)|0;Ua=c[p>>2]|0;kb=c[wa>>2]|0;if((Ua|0)>=($(c[kb+13132>>2]|0,c[kb+13128>>2]|0)|0))c[oa>>2]=1;if((Ua|0)<0)break e;else break d};case 34:{Ua=rd(n)|0;if((Ua|0)<0)break e;else break d};case 40:case 39:{Ua=td(n)|0;if((Ua|0)<0)break e;else break d};case 37:case 36:{b[Ta>>1]=(e[Ta>>1]|0)+1&255;c[Ga>>2]=2147483647;break d};case 38:case 35:break d;default:{kb=c[B>>2]|0;c[m>>2]=Ya;$a(kb,32,1848,m);break d}}}while(0);r=(c[(c[B>>2]|0)+688>>2]&8|0)==0?0:Ua;A=247}while(0);if((A|0)==247?(A=0,(r|0)<0):0)break;C=C+1|0;if((C|0)>=(c[j>>2]|0))break a}switch(A|0){case 46:{kb=c[B>>2]|0;c[m>>2]=Za;$a(kb,16,2104,m);break};case 50:{$a(c[B>>2]|0,16,2136,m);break};case 64:{c[_>>2]=0;A=104;break};case 68:{c[ba>>2]=0;A=104;break};case 78:{c[da>>2]=0;A=104;break};case 83:{c[xa>>2]=0;A=88;break};case 112:{c[m>>2]=bb;$a(ab,16,2168,m);break};case 120:{kb=c[B>>2]|0;c[m>>2]=Za;$a(kb,16,2208,m);break};case 122:{$a(c[B>>2]|0,16,2240,m);break};case 128:{ua();break};case 171:{$a(ab,16,2272,m);break};case 185:{c[Pa>>2]=0;$a(c[B>>2]|0,16,2312,m);break};case 202:{$a(c[B>>2]|0,16,2344,m);break};case 207:{Xa=c[(c[wa>>2]|0)+13192>>2]|0;Wa=Wa>>24;A=209;break};case 212:{$a(c[B>>2]|0,16,2448,m);break};case 214:{kb=c[B>>2]|0;c[m>>2]=0-Ua;$a(kb,16,2480,m);break};case 233:{c[o>>2]=0;break};case 240:{kb=c[B>>2]|0;c[m>>2]=Ua;c[m+4>>2]=Va;$a(kb,16,1800,m);break}}if((A|0)==88){c[Aa>>2]=0;A=104}else if((A|0)==209){kb=c[B>>2]|0;c[m>>2]=Wa;c[m+4>>2]=0-Xa;$a(kb,16,2392,m)}if((A|0)==104){jc(n);jc(n);c[wa>>2]=0}kb=c[B>>2]|0;c[m>>2]=C;$a(kb,24,1696,m);break}else if((A|0)==13){$a(c[n+4>>2]|0,16,1640,m);z=-1094995529;break}else if((A|0)==19){$a(c[n+4>>2]|0,16,1664,m);z=-1094995529;break}}else z=0;while(0);if((z|0)<0){kb=z;i=k;return kb|0}o=n+5828|0;if(c[o>>2]|0){c[m>>2]=c[n+5796>>2];$a(f,48,1608,m);c[o>>2]=0}f=c[n+172>>2]|0;if(c[f+304>>2]|0){ie(g,f);c[h>>2]=1}kb=c[l>>2]|0;i=k;return kb|0}function hc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;e=c[b+60>>2]|0;jc(e);b=e+7688|0;f=e+7668|0;if((c[b>>2]|0)>0){g=0;do{Qd((c[f>>2]|0)+(g<<2)|0);g=g+1|0}while((g|0)<(c[b>>2]|0))}Qd(e+7672|0);Qd(e+7664|0);Qd(f);Qd(e+152|0);ge(e+168|0);ge(e+172|0);g=e+3492|0;f=0;do{l=g+(f*72|0)|0;Ic(e,l,-1);ge(l);f=f+1|0}while((f|0)!=32);g=e+188|0;f=0;do{_d(g+(f<<2)|0);f=f+1|0}while((f|0)!=16);g=e+252|0;f=0;do{_d(g+(f<<2)|0);f=f+1|0}while((f|0)!=32);g=e+380|0;f=0;do{_d(g+(f<<2)|0);f=f+1|0}while((f|0)!=256);c[e+180>>2]=0;c[e+184>>2]=0;c[e+176>>2]=0;_d(e+1404|0);Qd(e+3064|0);Qd(e+3068|0);Qd(e+3072|0);h=e+141|0;l=a[h>>0]|0;f=e+72|0;if((l&255)>1){g=e+8|0;j=1;do{k=f+(j<<2)|0;if(c[k>>2]|0){Qd(k);Qd(g+(j<<2)|0);l=a[h>>0]|0}j=j+1|0}while((j|0)<(l&255|0))}g=e+136|0;if((c[g>>2]|0)==(c[f>>2]|0))c[g>>2]=0;Qd(f);f=e+7680|0;if((c[b>>2]|0)<=0){Qd(f);c[b>>2]=0;i=d;return 0}e=0;do{Qd((c[f>>2]|0)+(e<<4)|0);e=e+1|0}while((e|0)<(c[b>>2]|0));Qd(f);c[b>>2]=0;i=d;return 0}function ic(a){a=a|0;var b=0;b=i;a=c[a+60>>2]|0;Lc(a);c[a+5816>>2]=2147483647;i=b;return}function jc(a){a=a|0;var b=0;b=i;Qd(a+3472|0);Qd(a+3476|0);Qd(a+7608|0);Qd(a+7612|0);Qd(a+7616|0);Qd(a+7620|0);Qd(a+7624|0);Qd(a+7592|0);Qd(a+7604|0);Qd(a+7628|0);Qd(a+7596|0);Qd(a+7600|0);Qd(a+3064|0);Qd(a+3072|0);Qd(a+3068|0);ae(a+1408|0);ae(a+1412|0);i=b;return}function kc(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+16|0;e=b;h=c[a+136>>2]|0;j=h+212|0;f=c[j>>2]|0;g=c[h+204>>2]|0;l=d[g+(f>>>3)>>0]|0;h=c[h+220>>2]|0;k=((f|0)<(h|0)&1)+f|0;c[j>>2]=k;if(l&128>>>(f&7)){l=-1094995529;i=b;return l|0}f=g+(k>>>3)|0;f=(ze(d[f>>0]|d[f+1>>0]<<8|d[f+2>>0]<<16|d[f+3>>0]<<24|0)|0)<<(k&7)>>>26;l=k+6|0;l=h>>>0>l>>>0?l:h;c[j>>2]=l;c[a+3480>>2]=f;k=g+(l>>>3)|0;k=(ze(d[k>>0]|d[k+1>>0]<<8|d[k+2>>0]<<16|d[k+3>>0]<<24|0)|0)<<(l&7)>>>26;l=l+6|0;l=h>>>0>l>>>0?l:h;c[j>>2]=l;g=g+(l>>>3)|0;g=(ze(d[g>>0]|d[g+1>>0]<<8|d[g+2>>0]<<16|d[g+3>>0]<<24|0)|0)<<(l&7)>>>29;l=l+3|0;c[j>>2]=h>>>0>l>>>0?l:h;g=g+ -1|0;c[a+3484>>2]=g;if((g|0)<0){l=-1094995529;i=b;return l|0}l=c[a+4>>2]|0;c[e>>2]=f;c[e+4>>2]=k;c[e+8>>2]=g;$a(l,48,2520,e);l=(k|0)==0&1;i=b;return l|0}function lc(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;f=i;i=i+16|0;n=f;e=c[e+60>>2]|0;k=e+180|0;E=c[k>>2]|0;h=1<>2];l=e+184|0;o=c[l>>2]|0;A=c[(c[o+1668>>2]|0)+(c[e+3468>>2]<<2)>>2]|0;m=(a[e+2417>>0]|0)==0;if(!A)if(m)g=5;else{$a(c[e+4>>2]|0,16,1872,n);W=-1094995529;i=f;return W|0}else if(!m){m=e+7604|0;t=e+2404|0;if((c[(c[m>>2]|0)+(c[(c[o+1672>>2]|0)+(A+ -1<<2)>>2]<<2)>>2]|0)!=(c[t>>2]|0)){$a(c[e+4>>2]|0,16,1904,n);W=-1094995529;i=f;return W|0}}else g=5;if((g|0)==5){m=e+7604|0;t=e+2404|0}s=h+ -1|0;p=e+136|0;y=e+3472|0;o=e+3024|0;n=e+3025|0;w=e+3052|0;x=e+3476|0;v=e+3056|0;u=e+3030|0;r=e+7628|0;z=0;q=0;do{if((A|0)>=(c[E+13136>>2]|0))break;J=c[l>>2]|0;B=c[(c[J+1672>>2]|0)+(A<<2)>>2]|0;H=E+13120|0;I=E+13080|0;G=c[I>>2]|0;q=s+(c[H>>2]|0)>>G;z=((B|0)%(q|0)|0)<>2]|0;G=1<>2]|0;D=B-F|0;c[(c[m>>2]|0)+(B<<2)>>2]=F;do if(!(a[J+43>>0]|0)){if(!(a[J+42>>0]|0)){c[C+312>>2]=c[H>>2];H=E;break}if((A|0)!=0?(W=c[J+1676>>2]|0,(c[W+(A<<2)>>2]|0)!=(c[W+(A+ -1<<2)>>2]|0)):0){H=c[I>>2]|0;c[C+312>>2]=(c[(c[J+1648>>2]|0)+(c[(c[J+1664>>2]|0)+(z>>H<<2)>>2]<<2)>>2]<>0]=1;H=c[k>>2]|0}else H=E}else{if((z|0)==0?(G+ -1&q|0)==0:0){a[C+203>>0]=1;E=c[k>>2]|0}c[C+312>>2]=c[E+13120>>2];H=E}while(0);E=G+q|0;G=c[H+13124>>2]|0;c[C+316>>2]=(E|0)>(G|0)?G:E;E=C+31312|0;c[E>>2]=0;G=c[l>>2]|0;if(!(a[G+42>>0]|0)){if((B|0)==(F|0)){c[E>>2]=1;F=1}else F=0;if((D|0)<(c[H+13128>>2]|0)){F=F|4;c[E>>2]=F}}else{if((z|0)>0){W=c[G+1676>>2]|0;I=B+ -1|0;if((c[W+(A<<2)>>2]|0)==(c[W+(c[(c[G+1668>>2]|0)+(I<<2)>>2]<<2)>>2]|0))F=0;else{c[E>>2]=2;F=2}W=c[m>>2]|0;if((c[W+(B<<2)>>2]|0)!=(c[W+(I<<2)>>2]|0)){F=F|1;c[E>>2]=F}}else F=0;if((q|0)>0){W=c[G+1676>>2]|0;H=H+13128|0;I=c[H>>2]|0;if((c[W+(A<<2)>>2]|0)!=(c[W+(c[(c[G+1668>>2]|0)+(B-I<<2)>>2]<<2)>>2]|0)){F=F|8;c[E>>2]=F;I=c[H>>2]|0}W=c[m>>2]|0;if((c[W+(B<<2)>>2]|0)!=(c[W+(B-I<<2)>>2]|0)){F=F|4;c[E>>2]=F}}}E=(z|0)>0;if(E&(D|0)>0)G=(F>>>1&1^1)&255;else G=0;a[C+308>>0]=G;if((q|0)>0){if((D|0)<(c[(c[k>>2]|0)+13128>>2]|0))F=0;else F=(F>>>3&1^1)&255;a[C+309>>0]=F;F=c[(c[k>>2]|0)+13128>>2]|0;if((D+1|0)<(F|0))F=0;else{W=c[l>>2]|0;V=c[W+1676>>2]|0;F=(c[V+(A<<2)>>2]|0)==(c[V+(c[(c[W+1668>>2]|0)+(B+1-F<<2)>>2]<<2)>>2]|0)&1}a[C+310>>0]=F;if(E?(j=c[(c[k>>2]|0)+13128>>2]|0,(D|0)>(j|0)):0){D=c[l>>2]|0;W=c[D+1676>>2]|0;D=(c[W+(A<<2)>>2]|0)==(c[W+(c[(c[D+1668>>2]|0)+(B+ -1-j<<2)>>2]<<2)>>2]|0)&1}else D=0}else{a[C+309>>0]=0;a[C+310>>0]=0;D=0}a[C+311>>0]=D;pb(e,A);D=c[k>>2]|0;E=c[D+13080>>2]|0;F=z>>E;E=q>>E;G=c[p>>2]|0;D=($(c[D+13128>>2]|0,E)|0)+F|0;C=c[y>>2]|0;if((a[o>>0]|0)==0?(a[n>>0]|0)==0:0){M=0;G=0}else{if((F|0)>0?(a[G+308>>0]|0)!=0:0)M=ub(e)|0;else M=0;if((E|0)>0&(M|0)==0)if(!(a[G+309>>0]|0)){M=0;G=0}else{M=0;G=(ub(e)|0)!=0}else G=0}K=(c[(c[k>>2]|0)+4>>2]|0)!=0?3:1;L=C+(D*148|0)+143|0;J=C+(D*148|0)+144|0;I=C+(D*148|0)+104|0;H=C+(D*148|0)+108|0;R=(M|0)==0;Q=R&(G^1);P=E+ -1|0;N=F+ -1|0;S=0;do{M=c[l>>2]|0;M=d[((S|0)==0?M+1644|0:M+1645|0)>>0]|0;a:do if(a[e+S+3024>>0]|0){T=(S|0)==2;do if(!T){if(Q){U=(wb(e)|0)&255;O=C+(D*148|0)+S+142|0;a[O>>0]=U;break}if(!R){U=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;U=a[(c[y>>2]|0)+(U*148|0)+S+142>>0]|0;O=C+(D*148|0)+S+142|0;a[O>>0]=U;break}if(G){U=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;U=a[(c[y>>2]|0)+(U*148|0)+S+142>>0]|0;O=C+(D*148|0)+S+142|0;a[O>>0]=U;break}else{a[C+(D*148|0)+S+142>>0]=0;break a}}else{U=a[L>>0]|0;a[J>>0]=U;c[H>>2]=c[I>>2];O=J}while(0);if(U<<24>>24){U=0;do{do if(!Q){if(!R){W=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;c[C+(D*148|0)+(S<<4)+(U<<2)>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<4)+(U<<2)>>2];break}if(G){W=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;c[C+(D*148|0)+(S<<4)+(U<<2)>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<4)+(U<<2)>>2];break}else{c[C+(D*148|0)+(S<<4)+(U<<2)>>2]=0;break}}else c[C+(D*148|0)+(S<<4)+(U<<2)>>2]=zb(e)|0;while(0);U=U+1|0}while((U|0)!=4);do if((a[O>>0]|0)==1){T=0;do{do if(c[C+(D*148|0)+(S<<4)+(T<<2)>>2]|0){if(Q){c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=Ab(e)|0;break}if(!R){W=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<4)+(T<<2)+48>>2];break}if(G){W=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<4)+(T<<2)+48>>2];break}else{c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=0;break}}else c[C+(D*148|0)+(S<<4)+(T<<2)+48>>2]=0;while(0);T=T+1|0}while((T|0)!=4);if(Q){a[C+(D*148|0)+S+96>>0]=yb(e)|0;break}if(!R){W=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;a[C+(D*148|0)+S+96>>0]=a[(c[y>>2]|0)+(W*148|0)+S+96>>0]|0;break}if(G){W=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;a[C+(D*148|0)+S+96>>0]=a[(c[y>>2]|0)+(W*148|0)+S+96>>0]|0;break}else{a[C+(D*148|0)+S+96>>0]=0;break}}else if(!T){if(Q){c[C+(D*148|0)+(S<<2)+100>>2]=Bb(e)|0;break}if(!R){W=($(c[(c[k>>2]|0)+13128>>2]|0,E)|0)+N|0;c[C+(D*148|0)+(S<<2)+100>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<2)+100>>2];break}if(G){W=($(c[(c[k>>2]|0)+13128>>2]|0,P)|0)+F|0;c[C+(D*148|0)+(S<<2)+100>>2]=c[(c[y>>2]|0)+(W*148|0)+(S<<2)+100>>2];break}else{c[C+(D*148|0)+(S<<2)+100>>2]=0;break}}while(0);b[C+(D*148|0)+(S*10|0)+112>>1]=0;U=0;do{V=c[C+(D*148|0)+(S<<4)+(U<<2)>>2]|0;W=U;U=U+1|0;T=C+(D*148|0)+(S*10|0)+(U<<1)+112|0;b[T>>1]=V;if((a[O>>0]|0)==2){if((W|0)>1){V=0-V|0;b[T>>1]=V}}else if(c[C+(D*148|0)+(S<<4)+(W<<2)+48>>2]|0){V=0-V|0;b[T>>1]=V}b[T>>1]=V<<16>>16<>0]=0;while(0);S=S+1|0}while((S|0)<(K|0));C=c[x>>2]|0;c[C+(B<<3)>>2]=c[w>>2];c[C+(B<<3)+4>>2]=c[v>>2];a[(c[r>>2]|0)+B>>0]=a[u>>0]|0;C=mc(e,z,q,c[(c[k>>2]|0)+13080>>2]|0,0)|0;if((C|0)<0){g=110;break}A=A+1|0;ob(e,A);ac(e,z,q,h);E=c[k>>2]|0}while((C|0)!=0);if((g|0)==110){c[(c[m>>2]|0)+(B<<2)>>2]=-1;W=C;i=f;return W|0}if((z+h|0)<(c[E+13120>>2]|0)){W=A;i=f;return W|0}if((q+h|0)<(c[E+13124>>2]|0)){W=A;i=f;return W|0}_b(e,z,q,h);W=A;i=f;return W|0}function mc(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0;j=i;i=i+32|0;B=j;D=j+20|0;C=b+136|0;p=c[C>>2]|0;l=1<>2]|0;q=b+184|0;t=c[q>>2]|0;s=(1<<(c[u+13080>>2]|0)-(c[t+24>>2]|0))+ -1|0;c[p+31232>>2]=h;k=l+e|0;if(((k|0)<=(c[u+13120>>2]|0)?(l+f|0)<=(c[u+13124>>2]|0):0)?(c[u+13064>>2]|0)>>>0>>0:0){u=Ib(b,h,e,f)|0;t=c[q>>2]|0}else u=(c[u+13064>>2]|0)>>>0>>0&1;if((a[t+22>>0]|0)!=0?((c[(c[m>>2]|0)+13080>>2]|0)-(c[t+24>>2]|0)|0)>>>0<=g>>>0:0){a[p+300>>0]=0;c[p+280>>2]=0}if((a[b+3048>>0]|0)!=0?((c[(c[m>>2]|0)+13080>>2]|0)-(d[(c[q>>2]|0)+1632>>0]|0)|0)>>>0<=g>>>0:0)a[p+301>>0]=0;if(u){o=l>>1;q=o+e|0;n=o+f|0;g=g+ -1|0;r=h+1|0;h=mc(b,e,f,g,r)|0;if((h|0)<0){aa=h;i=j;return aa|0}if(h){if((q|0)<(c[(c[m>>2]|0)+13120>>2]|0)){h=mc(b,q,f,g,r)|0;if((h|0)<0){aa=h;i=j;return aa|0}}if(h){if((n|0)<(c[(c[m>>2]|0)+13124>>2]|0)){h=mc(b,e,n,g,r)|0;if((h|0)<0){aa=h;i=j;return aa|0}}if(h){aa=c[m>>2]|0;if((q|0)<(c[aa+13120>>2]|0)?(n|0)<(c[aa+13124>>2]|0):0){h=mc(b,q,n,g,r)|0;if((h|0)<0){aa=h;i=j;return aa|0}}}else h=0}else h=0}else h=0;if((s&k|0)==0?(s&l+f|0)==0:0)c[p+276>>2]=a[p+272>>0];if(!h){aa=0;i=j;return aa|0}k=c[m>>2]|0;if((q+o|0)<(c[k+13120>>2]|0))k=1;else k=(n+o|0)<(c[k+13124>>2]|0);aa=k&1;i=j;return aa|0}p=c[C>>2]|0;h=c[m>>2]|0;s=c[h+13064>>2]|0;t=c[h+13140>>2]|0;h=1<<(c[h+13080>>2]|0)-(c[(c[q>>2]|0)+24>>2]|0);c[p+31236>>2]=e;c[p+31240>>2]=f;y=p+31252|0;a[y>>0]=1;w=p+31244|0;c[w>>2]=1;z=p+31248|0;c[z>>2]=0;x=p+31254|0;a[x>>0]=0;A=p+31253|0;a[A>>0]=0;u=($(f>>s,t)|0)+(e>>s)|0;G=b+7608|0;a[(c[G>>2]|0)+u>>0]=0;aa=p+31268|0;a[aa>>0]=1;a[aa+1>>0]=1;a[aa+2>>0]=1;a[aa+3>>0]=1;s=l>>s;h=h+ -1|0;if(a[(c[q>>2]|0)+40>>0]|0){aa=(Db(b)|0)&255;a[p+31256>>0]=aa;if(aa<<24>>24)nc(b,e,f,g)}else a[p+31256>>0]=0;v=(s|0)>0;J=c[G>>2]|0;if(v){H=u;I=0;while(1){ve(J+H|0,0,s|0)|0;I=I+1|0;J=c[G>>2]|0;if((I|0)==(s|0))break;else H=H+t|0}}if(a[J+u>>0]|0)ua();if((c[w>>2]|0)==1?(c[(c[m>>2]|0)+13064>>2]|0)!=(g|0):0)E=c[z>>2]|0;else{G=Jb(b,g)|0;c[z>>2]=G;H=c[w>>2]|0;if((G|0)==3)I=(H|0)==1&1;else I=0;a[x>>0]=I;if((H|0)==1)E=G;else ua()}if((((E|0)==0?(F=c[m>>2]|0,(c[F+68>>2]|0)!=0):0)?(c[F+13048>>2]|0)>>>0<=g>>>0:0)?(c[F+13052>>2]|0)>>>0>=g>>>0:0){E=(Kb(b)|0)&255;a[A>>0]=E}else E=a[A>>0]|0;do if(!(E<<24>>24)){E=c[C>>2]|0;J=(c[E+31248>>2]|0)==3;F=J?2:1;H=0;do{I=H<<1;G=0;do{a[D+(G+I)>>0]=Lb(b)|0;G=G+1|0}while((G|0)<(F|0));H=H+1|0}while((H|0)<(F|0));S=l>>(J&1);R=E+31264|0;T=b+3488|0;U=B+4|0;G=B+8|0;H=b+7616|0;Q=E+31260|0;I=0;do{L=I<<1;M=($(I,S)|0)+f|0;J=0;do{N=J+L|0;Y=(a[D+N>>0]|0)==0;if(Y)c[R>>2]=Nb(b)|0;else c[Q>>2]=Mb(b)|0;V=($(J,S)|0)+e|0;X=c[C>>2]|0;aa=c[m>>2]|0;W=c[aa+13084>>2]|0;O=V>>W;K=M>>W;P=c[aa+13156>>2]|0;W=S>>W;aa=c[aa+13080>>2]|0;_=(1<>0]|0)==0?(_&M|0)==0:0)Z=1;else{Z=($(K+ -1|0,P)|0)+O|0;Z=d[(c[H>>2]|0)+Z>>0]|0}if((a[X+308>>0]|0)==0&(V|0)==0)_=1;else{_=O+ -1+($(K,P)|0)|0;_=d[(c[H>>2]|0)+_>>0]|0}V=c[(c[T>>2]|0)+16>>2]|0;aa=(M>>aa<>>0<2){c[B>>2]=0;c[U>>2]=1;c[G>>2]=26;_=0;aa=1;Z=26;break}else{c[B>>2]=_;aa=(_+29&31)+2|0;c[U>>2]=aa;Z=(_+31&31)+2|0;c[G>>2]=Z;break}else{c[B>>2]=_;c[U>>2]=aa;if(!((_|0)==0|(aa|0)==0)){c[G>>2]=0;Z=0;break}if((_|0)==1|(aa|0)==1){c[G>>2]=26;Z=26;break}else{c[G>>2]=1;Z=1;break}}while(0);if(Y){if((_|0)>(aa|0)){c[U>>2]=_;Y=aa&255;c[B>>2]=Y}else{Y=_;_=aa}if((Y|0)>(Z|0)){c[G>>2]=Y;aa=Z&255;c[B>>2]=aa;Z=Y;Y=aa}if((_|0)>(Z|0)){c[G>>2]=_;aa=Z&255;c[U>>2]=aa;Z=_}else aa=_;X=c[X+31264>>2]|0;X=((X|0)>=(Y|0)&1)+X|0;X=((X|0)>=(aa|0)&1)+X|0;X=((X|0)>=(Z|0)&1)+X|0}else X=c[B+(c[X+31260>>2]<<2)>>2]|0;W=(W|0)==0?1:W;_=X&255;if((W|0)>0){Y=0;do{Z=($(Y+K|0,P)|0)+O|0;ve((c[H>>2]|0)+Z|0,_|0,W|0)|0;Z=Y+O|0;X=0;do{a[V+(Z+($(X+K|0,P)|0))>>0]=0;X=X+1|0}while((X|0)<(W|0));Y=Y+1|0}while((Y|0)<(W|0))}a[E+N+31268>>0]=_;J=J+1|0}while((J|0)<(F|0));I=I+1|0}while((I|0)<(F|0));B=c[(c[m>>2]|0)+4>>2]|0;if((B|0)==3){G=0;do{D=G<<1;C=0;do{H=Ob(b)|0;I=C+D|0;a[E+I+31281>>0]=H;B=a[E+I+31268>>0]|0;do if((H|0)!=4){H=a[2056+H>>0]|0;I=E+I+31277|0;if(B<<24>>24==H<<24>>24){a[I>>0]=34;break}else{a[I>>0]=H;break}}else a[E+I+31277>>0]=B;while(0);C=C+1|0}while((C|0)<(F|0));G=G+1|0}while((G|0)<(F|0))}else if((B|0)==2){C=Ob(b)|0;a[E+31281>>0]=C;B=a[E+31268>>0]|0;if((C|0)==4)B=B&255;else{aa=a[2056+C>>0]|0;B=B<<24>>24==aa<<24>>24?34:aa&255}a[E+31277>>0]=a[2064+B>>0]|0;break}else if(B){C=Ob(b)|0;B=a[E+31268>>0]|0;if((C|0)==4){a[E+31277>>0]=B;break}C=a[2056+C>>0]|0;D=E+31277|0;if(B<<24>>24==C<<24>>24){a[D>>0]=34;break}else{a[D>>0]=C;break}}else break}else{K=c[C>>2]|0;D=c[m>>2]|0;E=c[D+13084>>2]|0;I=l>>E;D=c[D+13156>>2]|0;H=c[(c[b+3488>>2]|0)+16>>2]|0;F=e>>E;E=f>>E;G=(I|0)==0?1:I;if((G|0)>0){L=b+7616|0;J=0;do{aa=($(J+E|0,D)|0)+F|0;ve((c[L>>2]|0)+aa|0,1,G|0)|0;J=J+1|0}while((J|0)<(G|0));if((c[K+31244>>2]|0)==1){J=I>>>0>1?I:1;I=0;do{ve(H+(($(I+E|0,D)|0)+F)|0,0,J|0)|0;I=I+1|0}while((I|0)<(G|0))}}K=c[C>>2]|0;Z=c[b+160>>2]|0;H=c[Z+32>>2]|0;I=$(H,f)|0;M=c[m>>2]|0;D=c[M+56>>2]|0;I=(c[Z>>2]|0)+((e<>2]|0;J=c[M+13184>>2]|0;C=$(f>>J,G)|0;L=c[M+13172>>2]|0;C=(c[Z+4>>2]|0)+((e>>L<>2]|0;aa=c[M+13188>>2]|0;F=$(f>>aa,E)|0;_=c[M+13176>>2]|0;F=(c[Z+8>>2]|0)+((e>>_<>0]|0,l<>_,l>>aa)|0)+($(l>>L,l>>J)|0)|0;D=($(d[M+13045>>0]|0,J)|0)+D|0;J=K+224|0;M=D+7>>3;L=c[K+240>>2]|0;aa=c[J>>2]|0;L=(aa&1|0)==0?L:L+ -1|0;L=(aa&511|0)==0?L:L+ -1|0;K=(c[K+244>>2]|0)-L|0;if((K|0)<(M|0))L=0;else Ld(J,L+M|0,K-M|0);if(!(a[b+3029>>0]|0))Yb(b,e,f,g);aa=D>>>0>2147483639|(L|0)==0;_=aa?0:D;Z=aa?0:L;c[B>>2]=Z;c[B+12>>2]=_;c[B+16>>2]=_+8;c[B+4>>2]=Z+(_+7>>3);c[B+8>>2]=0;if(aa)B=-1094995529;else{_=b+5884|0;aa=c[m>>2]|0;Ga[c[_>>2]&7](I,H,l,l,B,d[aa+13044>>0]|0,c[aa+52>>2]|0);aa=c[m>>2]|0;Ga[c[_>>2]&7](C,G,l>>c[aa+13172>>2],l>>c[aa+13184>>2],B,d[aa+13045>>0]|0,c[aa+52>>2]|0);aa=c[m>>2]|0;Ga[c[_>>2]&7](F,E,l>>c[aa+13176>>2],l>>c[aa+13188>>2],B,d[aa+13045>>0]|0,c[aa+52>>2]|0);B=0}if(a[(c[m>>2]|0)+13056>>0]|0)nc(b,e,f,g);if((B|0)<0){aa=B;i=j;return aa|0}}while(0);do if(!(a[A>>0]|0)){do if((c[w>>2]|0)==1)r=129;else{if((c[z>>2]|0)==0?(a[p+31276>>0]|0)!=0:0){r=129;break}aa=(Pb(b)|0)&255;a[y>>0]=aa;y=aa}while(0);if((r|0)==129)y=a[y>>0]|0;if(!(y<<24>>24)){if(a[b+3029>>0]|0)break;Yb(b,e,f,g);break}r=c[m>>2]|0;if((c[w>>2]|0)==1)r=(d[x>>0]|0)+(c[r+13092>>2]|0)|0;else r=c[r+13088>>2]|0;a[p+31255>>0]=r;r=oc(b,e,f,e,f,e,f,g,g,0,0,1936,1936)|0;if((r|0)<0){aa=r;i=j;return aa|0}}while(0);if((a[(c[q>>2]|0)+22>>0]|0)!=0?(a[p+300>>0]|0)==0:0)Xb(b,e,f,g);if(v){q=b+7592|0;g=p+272|0;r=0;while(1){ve((c[q>>2]|0)+u|0,a[g>>0]|0,s|0)|0;r=r+1|0;if((r|0)==(s|0))break;else u=u+t|0}}if((h&k|0)==0?(h&l+f|0)==0:0)c[p+276>>2]=a[p+272>>0];q=c[m>>2]|0;r=c[q+13064>>2]|0;g=l>>r;e=e>>r;r=f>>r;if((g|0)>0?(n=b+7612|0,o=c[p+31232>>2]&255,aa=($(c[q+13140>>2]|0,r)|0)+e|0,ve((c[n>>2]|0)+aa|0,o|0,g|0)|0,(g|0)!=1):0){p=1;do{aa=($(c[(c[m>>2]|0)+13140>>2]|0,p+r|0)|0)+e|0;ve((c[n>>2]|0)+aa|0,o|0,g|0)|0;p=p+1|0}while((p|0)!=(g|0))}e=c[m>>2]|0;m=1<>2];if(((k|0)%(m|0)|0|0)!=0?(k|0)<(c[e+13120>>2]|0):0){aa=1;i=j;return aa|0}aa=l+f|0;if(((aa|0)%(m|0)|0|0)!=0?(aa|0)<(c[e+13124>>2]|0):0){aa=1;i=j;return aa|0}aa=(Cb(b)|0)==0&1;i=j;return aa|0}function nc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;m=1<>2]|0;l=c[n+13084>>2]|0;f=c[n+13156>>2]|0;k=m+d|0;j=c[n+13120>>2]|0;m=m+e|0;n=c[n+13124>>2]|0;h=e>>l;e=((m|0)>(n|0)?n:m)>>l;if((h|0)>=(e|0)){i=g;return}d=d>>l;j=((k|0)>(j|0)?j:k)>>l;k=(d|0)<(j|0);b=b+7624|0;do{if(k){m=$(h,f)|0;l=d;do{a[(c[b>>2]|0)+(l+m)>>0]=2;l=l+1|0}while((l|0)!=(j|0))}h=h+1|0}while((h|0)!=(e|0));i=g;return} -function ke(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;b=i;do if(a>>>0<245){if(a>>>0<11)a=16;else a=a+11&-8;v=a>>>3;p=c[1942]|0;w=p>>>v;if(w&3){h=(w&1^1)+v|0;g=h<<1;e=7808+(g<<2)|0;g=7808+(g+2<<2)|0;j=c[g>>2]|0;d=j+8|0;f=c[d>>2]|0;do if((e|0)!=(f|0)){if(f>>>0<(c[1946]|0)>>>0)ua();k=f+12|0;if((c[k>>2]|0)==(j|0)){c[k>>2]=e;c[g>>2]=f;break}else ua()}else c[1942]=p&~(1<>2]=H|3;H=j+(H|4)|0;c[H>>2]=c[H>>2]|1;H=d;i=b;return H|0}if(a>>>0>(c[1944]|0)>>>0){if(w){h=2<>>12&16;h=h>>>d;f=h>>>5&8;h=h>>>f;g=h>>>2&4;h=h>>>g;e=h>>>1&2;h=h>>>e;j=h>>>1&1;j=(f|d|g|e|j)+(h>>>j)|0;h=j<<1;e=7808+(h<<2)|0;h=7808+(h+2<<2)|0;g=c[h>>2]|0;d=g+8|0;f=c[d>>2]|0;do if((e|0)!=(f|0)){if(f>>>0<(c[1946]|0)>>>0)ua();k=f+12|0;if((c[k>>2]|0)==(g|0)){c[k>>2]=e;c[h>>2]=f;break}else ua()}else c[1942]=p&~(1<>2]=a|3;e=g+a|0;c[g+(a|4)>>2]=f|1;c[g+h>>2]=f;h=c[1944]|0;if(h){g=c[1947]|0;k=h>>>3;j=k<<1;h=7808+(j<<2)|0;l=c[1942]|0;k=1<>2]|0;if(k>>>0<(c[1946]|0)>>>0)ua();else{D=j;C=k}}else{c[1942]=l|k;D=7808+(j+2<<2)|0;C=h}c[D>>2]=g;c[C+12>>2]=g;c[g+8>>2]=C;c[g+12>>2]=h}c[1944]=f;c[1947]=e;H=d;i=b;return H|0}p=c[1943]|0;if(p){e=(p&0-p)+ -1|0;G=e>>>12&16;e=e>>>G;F=e>>>5&8;e=e>>>F;H=e>>>2&4;e=e>>>H;f=e>>>1&2;e=e>>>f;d=e>>>1&1;d=c[8072+((F|G|H|f|d)+(e>>>d)<<2)>>2]|0;e=(c[d+4>>2]&-8)-a|0;f=d;while(1){g=c[f+16>>2]|0;if(!g){g=c[f+20>>2]|0;if(!g)break}f=(c[g+4>>2]&-8)-a|0;H=f>>>0>>0;e=H?f:e;f=g;d=H?g:d}h=c[1946]|0;if(d>>>0>>0)ua();f=d+a|0;if(d>>>0>=f>>>0)ua();g=c[d+24>>2]|0;k=c[d+12>>2]|0;do if((k|0)==(d|0)){k=d+20|0;j=c[k>>2]|0;if(!j){k=d+16|0;j=c[k>>2]|0;if(!j){B=0;break}}while(1){l=j+20|0;m=c[l>>2]|0;if(m){j=m;k=l;continue}m=j+16|0;l=c[m>>2]|0;if(!l)break;else{j=l;k=m}}if(k>>>0>>0)ua();else{c[k>>2]=0;B=j;break}}else{j=c[d+8>>2]|0;if(j>>>0>>0)ua();h=j+12|0;if((c[h>>2]|0)!=(d|0))ua();l=k+8|0;if((c[l>>2]|0)==(d|0)){c[h>>2]=k;c[l>>2]=j;B=k;break}else ua()}while(0);do if(g){h=c[d+28>>2]|0;j=8072+(h<<2)|0;if((d|0)==(c[j>>2]|0)){c[j>>2]=B;if(!B){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();h=g+16|0;if((c[h>>2]|0)==(d|0))c[h>>2]=B;else c[g+20>>2]=B;if(!B)break}if(B>>>0<(c[1946]|0)>>>0)ua();c[B+24>>2]=g;g=c[d+16>>2]|0;do if(g)if(g>>>0<(c[1946]|0)>>>0)ua();else{c[B+16>>2]=g;c[g+24>>2]=B;break}while(0);g=c[d+20>>2]|0;if(g)if(g>>>0<(c[1946]|0)>>>0)ua();else{c[B+20>>2]=g;c[g+24>>2]=B;break}}while(0);if(e>>>0<16){H=e+a|0;c[d+4>>2]=H|3;H=d+(H+4)|0;c[H>>2]=c[H>>2]|1}else{c[d+4>>2]=a|3;c[d+(a|4)>>2]=e|1;c[d+(e+a)>>2]=e;h=c[1944]|0;if(h){g=c[1947]|0;l=h>>>3;j=l<<1;h=7808+(j<<2)|0;k=c[1942]|0;l=1<>2]|0;if(k>>>0<(c[1946]|0)>>>0)ua();else{A=j;z=k}}else{c[1942]=k|l;A=7808+(j+2<<2)|0;z=h}c[A>>2]=g;c[z+12>>2]=g;c[g+8>>2]=z;c[g+12>>2]=h}c[1944]=e;c[1947]=f}H=d+8|0;i=b;return H|0}}}else if(a>>>0<=4294967231){z=a+11|0;a=z&-8;B=c[1943]|0;if(B){A=0-a|0;z=z>>>8;if(z)if(a>>>0>16777215)C=31;else{G=(z+1048320|0)>>>16&8;H=z<>>16&4;H=H<>>16&2;C=14-(F|G|C)+(H<>>15)|0;C=a>>>(C+7|0)&1|C<<1}else C=0;D=c[8072+(C<<2)>>2]|0;a:do if(!D){F=0;z=0}else{if((C|0)==31)z=0;else z=25-(C>>>1)|0;F=0;E=a<>2]&-8;G=H-a|0;if(G>>>0>>0)if((H|0)==(a|0)){A=G;F=D;z=D;break a}else{A=G;z=D}H=c[D+20>>2]|0;D=c[D+(E>>>31<<2)+16>>2]|0;F=(H|0)==0|(H|0)==(D|0)?F:H;if(!D)break;else E=E<<1}}while(0);if((F|0)==0&(z|0)==0){H=2<>>12&16;H=H>>>D;C=H>>>5&8;H=H>>>C;E=H>>>2&4;H=H>>>E;G=H>>>1&2;H=H>>>G;F=H>>>1&1;F=c[8072+((C|D|E|G|F)+(H>>>F)<<2)>>2]|0}if(F)while(1){H=(c[F+4>>2]&-8)-a|0;B=H>>>0>>0;A=B?H:A;z=B?F:z;B=c[F+16>>2]|0;if(B){F=B;continue}F=c[F+20>>2]|0;if(!F)break}if((z|0)!=0?A>>>0<((c[1944]|0)-a|0)>>>0:0){f=c[1946]|0;if(z>>>0>>0)ua();d=z+a|0;if(z>>>0>=d>>>0)ua();e=c[z+24>>2]|0;h=c[z+12>>2]|0;do if((h|0)==(z|0)){h=z+20|0;g=c[h>>2]|0;if(!g){h=z+16|0;g=c[h>>2]|0;if(!g){x=0;break}}while(1){j=g+20|0;k=c[j>>2]|0;if(k){g=k;h=j;continue}j=g+16|0;k=c[j>>2]|0;if(!k)break;else{g=k;h=j}}if(h>>>0>>0)ua();else{c[h>>2]=0;x=g;break}}else{g=c[z+8>>2]|0;if(g>>>0>>0)ua();f=g+12|0;if((c[f>>2]|0)!=(z|0))ua();j=h+8|0;if((c[j>>2]|0)==(z|0)){c[f>>2]=h;c[j>>2]=g;x=h;break}else ua()}while(0);do if(e){g=c[z+28>>2]|0;f=8072+(g<<2)|0;if((z|0)==(c[f>>2]|0)){c[f>>2]=x;if(!x){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();f=e+16|0;if((c[f>>2]|0)==(z|0))c[f>>2]=x;else c[e+20>>2]=x;if(!x)break}if(x>>>0<(c[1946]|0)>>>0)ua();c[x+24>>2]=e;e=c[z+16>>2]|0;do if(e)if(e>>>0<(c[1946]|0)>>>0)ua();else{c[x+16>>2]=e;c[e+24>>2]=x;break}while(0);e=c[z+20>>2]|0;if(e)if(e>>>0<(c[1946]|0)>>>0)ua();else{c[x+20>>2]=e;c[e+24>>2]=x;break}}while(0);b:do if(A>>>0>=16){c[z+4>>2]=a|3;c[z+(a|4)>>2]=A|1;c[z+(A+a)>>2]=A;f=A>>>3;if(A>>>0<256){h=f<<1;e=7808+(h<<2)|0;g=c[1942]|0;f=1<>2]|0;if(g>>>0>=(c[1946]|0)>>>0){w=f;v=g;break}ua()}while(0);c[w>>2]=d;c[v+12>>2]=d;c[z+(a+8)>>2]=v;c[z+(a+12)>>2]=e;break}e=A>>>8;if(e)if(A>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=A>>>(e+7|0)&1|e<<1}else e=0;f=8072+(e<<2)|0;c[z+(a+28)>>2]=e;c[z+(a+20)>>2]=0;c[z+(a+16)>>2]=0;h=c[1943]|0;g=1<>2]=d;c[z+(a+24)>>2]=f;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break}f=c[f>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;c:do if((c[f+4>>2]&-8|0)!=(A|0)){e=A<>>31<<2)+16|0;h=c[g>>2]|0;if(!h)break;if((c[h+4>>2]&-8|0)==(A|0)){p=h;break c}else{e=e<<1;f=h}}if(g>>>0<(c[1946]|0)>>>0)ua();else{c[g>>2]=d;c[z+(a+24)>>2]=f;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break b}}else p=f;while(0);f=p+8|0;e=c[f>>2]|0;g=c[1946]|0;if(p>>>0>>0)ua();if(e>>>0>>0)ua();else{c[e+12>>2]=d;c[f>>2]=d;c[z+(a+8)>>2]=e;c[z+(a+12)>>2]=p;c[z+(a+24)>>2]=0;break}}else{H=A+a|0;c[z+4>>2]=H|3;H=z+(H+4)|0;c[H>>2]=c[H>>2]|1}while(0);H=z+8|0;i=b;return H|0}}}else a=-1;while(0);p=c[1944]|0;if(a>>>0<=p>>>0){e=p-a|0;d=c[1947]|0;if(e>>>0>15){c[1947]=d+a;c[1944]=e;c[d+(a+4)>>2]=e|1;c[d+p>>2]=e;c[d+4>>2]=a|3}else{c[1944]=0;c[1947]=0;c[d+4>>2]=p|3;H=d+(p+4)|0;c[H>>2]=c[H>>2]|1}H=d+8|0;i=b;return H|0}p=c[1945]|0;if(a>>>0

>>0){G=p-a|0;c[1945]=G;H=c[1948]|0;c[1948]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}do if(!(c[2060]|0)){p=Ba(30)|0;if(!(p+ -1&p)){c[2062]=p;c[2061]=p;c[2063]=-1;c[2064]=-1;c[2065]=0;c[2053]=0;c[2060]=(xa(0)|0)&-16^1431655768;break}else ua()}while(0);w=a+48|0;p=c[2062]|0;x=a+47|0;z=p+x|0;p=0-p|0;v=z&p;if(v>>>0<=a>>>0){H=0;i=b;return H|0}A=c[2052]|0;if((A|0)!=0?(G=c[2050]|0,H=G+v|0,H>>>0<=G>>>0|H>>>0>A>>>0):0){H=0;i=b;return H|0}d:do if(!(c[2053]&4)){B=c[1948]|0;e:do if(B){A=8216|0;while(1){C=c[A>>2]|0;if(C>>>0<=B>>>0?(y=A+4|0,(C+(c[y>>2]|0)|0)>>>0>B>>>0):0)break;A=c[A+8>>2]|0;if(!A){o=182;break e}}if(A){B=z-(c[1945]|0)&p;if(B>>>0<2147483647){p=wa(B|0)|0;A=(p|0)==((c[A>>2]|0)+(c[y>>2]|0)|0);y=p;z=B;p=A?p:-1;A=A?B:0;o=191}else A=0}else o=182}else o=182;while(0);do if((o|0)==182){p=wa(0)|0;if((p|0)!=(-1|0)){z=p;A=c[2061]|0;y=A+ -1|0;if(!(y&z))A=v;else A=v-z+(y+z&0-A)|0;y=c[2050]|0;z=y+A|0;if(A>>>0>a>>>0&A>>>0<2147483647){H=c[2052]|0;if((H|0)!=0?z>>>0<=y>>>0|z>>>0>H>>>0:0){A=0;break}y=wa(A|0)|0;o=(y|0)==(p|0);z=A;p=o?p:-1;A=o?A:0;o=191}else A=0}else A=0}while(0);f:do if((o|0)==191){o=0-z|0;if((p|0)!=(-1|0)){q=A;o=202;break d}do if((y|0)!=(-1|0)&z>>>0<2147483647&z>>>0>>0?(u=c[2062]|0,u=x-z+u&0-u,u>>>0<2147483647):0)if((wa(u|0)|0)==(-1|0)){wa(o|0)|0;break f}else{z=u+z|0;break}while(0);if((y|0)!=(-1|0)){p=y;q=z;o=202;break d}}while(0);c[2053]=c[2053]|4;o=199}else{A=0;o=199}while(0);if((((o|0)==199?v>>>0<2147483647:0)?(t=wa(v|0)|0,s=wa(0)|0,(s|0)!=(-1|0)&(t|0)!=(-1|0)&t>>>0>>0):0)?(r=s-t|0,q=r>>>0>(a+40|0)>>>0,q):0){p=t;q=q?r:A;o=202}if((o|0)==202){r=(c[2050]|0)+q|0;c[2050]=r;if(r>>>0>(c[2051]|0)>>>0)c[2051]=r;r=c[1948]|0;g:do if(r){v=8216|0;while(1){t=c[v>>2]|0;u=v+4|0;s=c[u>>2]|0;if((p|0)==(t+s|0)){o=214;break}w=c[v+8>>2]|0;if(!w)break;else v=w}if(((o|0)==214?(c[v+12>>2]&8|0)==0:0)?r>>>0>=t>>>0&r>>>0

>>0:0){c[u>>2]=s+q;d=(c[1945]|0)+q|0;e=r+8|0;if(!(e&7))e=0;else e=0-e&7;H=d-e|0;c[1948]=r+e;c[1945]=H;c[r+(e+4)>>2]=H|1;c[r+(d+4)>>2]=40;c[1949]=c[2064];break}if(p>>>0<(c[1946]|0)>>>0)c[1946]=p;t=p+q|0;s=8216|0;while(1){if((c[s>>2]|0)==(t|0)){o=224;break}u=c[s+8>>2]|0;if(!u)break;else s=u}if((o|0)==224?(c[s+12>>2]&8|0)==0:0){c[s>>2]=p;h=s+4|0;c[h>>2]=(c[h>>2]|0)+q;h=p+8|0;if(!(h&7))h=0;else h=0-h&7;j=p+(q+8)|0;if(!(j&7))n=0;else n=0-j&7;o=p+(n+q)|0;j=h+a|0;k=p+j|0;m=o-(p+h)-a|0;c[p+(h+4)>>2]=a|3;h:do if((o|0)!=(c[1948]|0)){if((o|0)==(c[1947]|0)){H=(c[1944]|0)+m|0;c[1944]=H;c[1947]=k;c[p+(j+4)>>2]=H|1;c[p+(H+j)>>2]=H;break}r=q+4|0;t=c[p+(r+n)>>2]|0;if((t&3|0)==1){a=t&-8;s=t>>>3;i:do if(t>>>0>=256){l=c[p+((n|24)+q)>>2]|0;u=c[p+(q+12+n)>>2]|0;do if((u|0)==(o|0)){u=n|16;t=p+(r+u)|0;s=c[t>>2]|0;if(!s){t=p+(u+q)|0;s=c[t>>2]|0;if(!s){g=0;break}}while(1){u=s+20|0;v=c[u>>2]|0;if(v){s=v;t=u;continue}u=s+16|0;v=c[u>>2]|0;if(!v)break;else{s=v;t=u}}if(t>>>0<(c[1946]|0)>>>0)ua();else{c[t>>2]=0;g=s;break}}else{t=c[p+((n|8)+q)>>2]|0;if(t>>>0<(c[1946]|0)>>>0)ua();v=t+12|0;if((c[v>>2]|0)!=(o|0))ua();s=u+8|0;if((c[s>>2]|0)==(o|0)){c[v>>2]=u;c[s>>2]=t;g=u;break}else ua()}while(0);if(!l)break;t=c[p+(q+28+n)>>2]|0;s=8072+(t<<2)|0;do if((o|0)!=(c[s>>2]|0)){if(l>>>0<(c[1946]|0)>>>0)ua();s=l+16|0;if((c[s>>2]|0)==(o|0))c[s>>2]=g;else c[l+20>>2]=g;if(!g)break i}else{c[s>>2]=g;if(g)break;c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();c[g+24>>2]=l;l=n|16;o=c[p+(l+q)>>2]|0;do if(o)if(o>>>0<(c[1946]|0)>>>0)ua();else{c[g+16>>2]=o;c[o+24>>2]=g;break}while(0);l=c[p+(r+l)>>2]|0;if(!l)break;if(l>>>0<(c[1946]|0)>>>0)ua();else{c[g+20>>2]=l;c[l+24>>2]=g;break}}else{r=c[p+((n|8)+q)>>2]|0;g=c[p+(q+12+n)>>2]|0;t=7808+(s<<1<<2)|0;do if((r|0)!=(t|0)){if(r>>>0<(c[1946]|0)>>>0)ua();if((c[r+12>>2]|0)==(o|0))break;ua()}while(0);if((g|0)==(r|0)){c[1942]=c[1942]&~(1<>>0<(c[1946]|0)>>>0)ua();s=g+8|0;if((c[s>>2]|0)==(o|0)){l=s;break}ua()}while(0);c[r+12>>2]=g;c[l>>2]=r}while(0);o=p+((a|n)+q)|0;m=a+m|0}g=o+4|0;c[g>>2]=c[g>>2]&-2;c[p+(j+4)>>2]=m|1;c[p+(m+j)>>2]=m;g=m>>>3;if(m>>>0<256){m=g<<1;d=7808+(m<<2)|0;l=c[1942]|0;g=1<>2]|0;if(g>>>0>=(c[1946]|0)>>>0){f=l;e=g;break}ua()}while(0);c[f>>2]=k;c[e+12>>2]=k;c[p+(j+8)>>2]=e;c[p+(j+12)>>2]=d;break}e=m>>>8;do if(!e)e=0;else{if(m>>>0>16777215){e=31;break}G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=m>>>(e+7|0)&1|e<<1}while(0);l=8072+(e<<2)|0;c[p+(j+28)>>2]=e;c[p+(j+20)>>2]=0;c[p+(j+16)>>2]=0;f=c[1943]|0;g=1<>2]=k;c[p+(j+24)>>2]=l;c[p+(j+12)>>2]=k;c[p+(j+8)>>2]=k;break}l=c[l>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;j:do if((c[l+4>>2]&-8|0)!=(m|0)){e=m<>>31<<2)+16|0;f=c[g>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(m|0)){d=f;break j}else{e=e<<1;l=f}}if(g>>>0<(c[1946]|0)>>>0)ua();else{c[g>>2]=k;c[p+(j+24)>>2]=l;c[p+(j+12)>>2]=k;c[p+(j+8)>>2]=k;break h}}else d=l;while(0);f=d+8|0;e=c[f>>2]|0;g=c[1946]|0;if(d>>>0>>0)ua();if(e>>>0>>0)ua();else{c[e+12>>2]=k;c[f>>2]=k;c[p+(j+8)>>2]=e;c[p+(j+12)>>2]=d;c[p+(j+24)>>2]=0;break}}else{H=(c[1945]|0)+m|0;c[1945]=H;c[1948]=k;c[p+(j+4)>>2]=H|1}while(0);H=p+(h|8)|0;i=b;return H|0}e=8216|0;while(1){d=c[e>>2]|0;if(d>>>0<=r>>>0?(n=c[e+4>>2]|0,m=d+n|0,m>>>0>r>>>0):0)break;e=c[e+8>>2]|0}e=d+(n+ -39)|0;if(!(e&7))e=0;else e=0-e&7;d=d+(n+ -47+e)|0;d=d>>>0<(r+16|0)>>>0?r:d;e=d+8|0;f=p+8|0;if(!(f&7))f=0;else f=0-f&7;H=q+ -40-f|0;c[1948]=p+f;c[1945]=H;c[p+(f+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[1949]=c[2064];c[d+4>>2]=27;c[e+0>>2]=c[2054];c[e+4>>2]=c[2055];c[e+8>>2]=c[2056];c[e+12>>2]=c[2057];c[2054]=p;c[2055]=q;c[2057]=0;c[2056]=e;e=d+28|0;c[e>>2]=7;if((d+32|0)>>>0>>0)do{H=e;e=e+4|0;c[e>>2]=7}while((H+8|0)>>>0>>0);if((d|0)!=(r|0)){d=d-r|0;e=r+(d+4)|0;c[e>>2]=c[e>>2]&-2;c[r+4>>2]=d|1;c[r+d>>2]=d;e=d>>>3;if(d>>>0<256){g=e<<1;d=7808+(g<<2)|0;f=c[1942]|0;e=1<>2]|0;if(e>>>0>=(c[1946]|0)>>>0){k=f;j=e;break}ua()}while(0);c[k>>2]=r;c[j+12>>2]=r;c[r+8>>2]=j;c[r+12>>2]=d;break}e=d>>>8;if(e)if(d>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=d>>>(e+7|0)&1|e<<1}else e=0;j=8072+(e<<2)|0;c[r+28>>2]=e;c[r+20>>2]=0;c[r+16>>2]=0;f=c[1943]|0;g=1<>2]=r;c[r+24>>2]=j;c[r+12>>2]=r;c[r+8>>2]=r;break}f=c[j>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;k:do if((c[f+4>>2]&-8|0)!=(d|0)){e=d<>>31<<2)+16|0;g=c[j>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(d|0)){h=g;break k}else{e=e<<1;f=g}}if(j>>>0<(c[1946]|0)>>>0)ua();else{c[j>>2]=r;c[r+24>>2]=f;c[r+12>>2]=r;c[r+8>>2]=r;break g}}else h=f;while(0);f=h+8|0;e=c[f>>2]|0;d=c[1946]|0;if(h>>>0>>0)ua();if(e>>>0>>0)ua();else{c[e+12>>2]=r;c[f>>2]=r;c[r+8>>2]=e;c[r+12>>2]=h;c[r+24>>2]=0;break}}}else{H=c[1946]|0;if((H|0)==0|p>>>0>>0)c[1946]=p;c[2054]=p;c[2055]=q;c[2057]=0;c[1951]=c[2060];c[1950]=-1;d=0;do{H=d<<1;G=7808+(H<<2)|0;c[7808+(H+3<<2)>>2]=G;c[7808+(H+2<<2)>>2]=G;d=d+1|0}while((d|0)!=32);d=p+8|0;if(!(d&7))d=0;else d=0-d&7;H=q+ -40-d|0;c[1948]=p+d;c[1945]=H;c[p+(d+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[1949]=c[2064]}while(0);d=c[1945]|0;if(d>>>0>a>>>0){G=d-a|0;c[1945]=G;H=c[1948]|0;c[1948]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}}c[(Ca()|0)>>2]=12;H=0;i=b;return H|0}function le(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;b=i;if(!a){i=b;return}q=a+ -8|0;r=c[1946]|0;if(q>>>0>>0)ua();o=c[a+ -4>>2]|0;n=o&3;if((n|0)==1)ua();j=o&-8;h=a+(j+ -8)|0;do if(!(o&1)){u=c[q>>2]|0;if(!n){i=b;return}q=-8-u|0;o=a+q|0;n=u+j|0;if(o>>>0>>0)ua();if((o|0)==(c[1947]|0)){d=a+(j+ -4)|0;if((c[d>>2]&3|0)!=3){d=o;m=n;break}c[1944]=n;c[d>>2]=c[d>>2]&-2;c[a+(q+4)>>2]=n|1;c[h>>2]=n;i=b;return}t=u>>>3;if(u>>>0<256){d=c[a+(q+8)>>2]|0;m=c[a+(q+12)>>2]|0;p=7808+(t<<1<<2)|0;if((d|0)!=(p|0)){if(d>>>0>>0)ua();if((c[d+12>>2]|0)!=(o|0))ua()}if((m|0)==(d|0)){c[1942]=c[1942]&~(1<>>0>>0)ua();p=m+8|0;if((c[p>>2]|0)==(o|0))s=p;else ua()}else s=m+8|0;c[d+12>>2]=m;c[s>>2]=d;d=o;m=n;break}s=c[a+(q+24)>>2]|0;t=c[a+(q+12)>>2]|0;do if((t|0)==(o|0)){u=a+(q+20)|0;t=c[u>>2]|0;if(!t){u=a+(q+16)|0;t=c[u>>2]|0;if(!t){p=0;break}}while(1){w=t+20|0;v=c[w>>2]|0;if(v){t=v;u=w;continue}v=t+16|0;w=c[v>>2]|0;if(!w)break;else{t=w;u=v}}if(u>>>0>>0)ua();else{c[u>>2]=0;p=t;break}}else{u=c[a+(q+8)>>2]|0;if(u>>>0>>0)ua();r=u+12|0;if((c[r>>2]|0)!=(o|0))ua();v=t+8|0;if((c[v>>2]|0)==(o|0)){c[r>>2]=t;c[v>>2]=u;p=t;break}else ua()}while(0);if(s){t=c[a+(q+28)>>2]|0;r=8072+(t<<2)|0;if((o|0)==(c[r>>2]|0)){c[r>>2]=p;if(!p){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();r=s+16|0;if((c[r>>2]|0)==(o|0))c[r>>2]=p;else c[s+20>>2]=p;if(!p){d=o;m=n;break}}if(p>>>0<(c[1946]|0)>>>0)ua();c[p+24>>2]=s;r=c[a+(q+16)>>2]|0;do if(r)if(r>>>0<(c[1946]|0)>>>0)ua();else{c[p+16>>2]=r;c[r+24>>2]=p;break}while(0);q=c[a+(q+20)>>2]|0;if(q)if(q>>>0<(c[1946]|0)>>>0)ua();else{c[p+20>>2]=q;c[q+24>>2]=p;d=o;m=n;break}else{d=o;m=n}}else{d=o;m=n}}else{d=q;m=j}while(0);if(d>>>0>=h>>>0)ua();n=a+(j+ -4)|0;o=c[n>>2]|0;if(!(o&1))ua();if(!(o&2)){if((h|0)==(c[1948]|0)){w=(c[1945]|0)+m|0;c[1945]=w;c[1948]=d;c[d+4>>2]=w|1;if((d|0)!=(c[1947]|0)){i=b;return}c[1947]=0;c[1944]=0;i=b;return}if((h|0)==(c[1947]|0)){w=(c[1944]|0)+m|0;c[1944]=w;c[1947]=d;c[d+4>>2]=w|1;c[d+w>>2]=w;i=b;return}m=(o&-8)+m|0;n=o>>>3;do if(o>>>0>=256){l=c[a+(j+16)>>2]|0;q=c[a+(j|4)>>2]|0;do if((q|0)==(h|0)){o=a+(j+12)|0;n=c[o>>2]|0;if(!n){o=a+(j+8)|0;n=c[o>>2]|0;if(!n){k=0;break}}while(1){p=n+20|0;q=c[p>>2]|0;if(q){n=q;o=p;continue}p=n+16|0;q=c[p>>2]|0;if(!q)break;else{n=q;o=p}}if(o>>>0<(c[1946]|0)>>>0)ua();else{c[o>>2]=0;k=n;break}}else{o=c[a+j>>2]|0;if(o>>>0<(c[1946]|0)>>>0)ua();p=o+12|0;if((c[p>>2]|0)!=(h|0))ua();n=q+8|0;if((c[n>>2]|0)==(h|0)){c[p>>2]=q;c[n>>2]=o;k=q;break}else ua()}while(0);if(l){n=c[a+(j+20)>>2]|0;o=8072+(n<<2)|0;if((h|0)==(c[o>>2]|0)){c[o>>2]=k;if(!k){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();n=l+16|0;if((c[n>>2]|0)==(h|0))c[n>>2]=k;else c[l+20>>2]=k;if(!k)break}if(k>>>0<(c[1946]|0)>>>0)ua();c[k+24>>2]=l;h=c[a+(j+8)>>2]|0;do if(h)if(h>>>0<(c[1946]|0)>>>0)ua();else{c[k+16>>2]=h;c[h+24>>2]=k;break}while(0);h=c[a+(j+12)>>2]|0;if(h)if(h>>>0<(c[1946]|0)>>>0)ua();else{c[k+20>>2]=h;c[h+24>>2]=k;break}}}else{k=c[a+j>>2]|0;a=c[a+(j|4)>>2]|0;j=7808+(n<<1<<2)|0;if((k|0)!=(j|0)){if(k>>>0<(c[1946]|0)>>>0)ua();if((c[k+12>>2]|0)!=(h|0))ua()}if((a|0)==(k|0)){c[1942]=c[1942]&~(1<>>0<(c[1946]|0)>>>0)ua();j=a+8|0;if((c[j>>2]|0)==(h|0))l=j;else ua()}else l=a+8|0;c[k+12>>2]=a;c[l>>2]=k}while(0);c[d+4>>2]=m|1;c[d+m>>2]=m;if((d|0)==(c[1947]|0)){c[1944]=m;i=b;return}}else{c[n>>2]=o&-2;c[d+4>>2]=m|1;c[d+m>>2]=m}h=m>>>3;if(m>>>0<256){a=h<<1;e=7808+(a<<2)|0;j=c[1942]|0;h=1<>2]|0;if(a>>>0<(c[1946]|0)>>>0)ua();else{f=h;g=a}}else{c[1942]=j|h;f=7808+(a+2<<2)|0;g=e}c[f>>2]=d;c[g+12>>2]=d;c[d+8>>2]=g;c[d+12>>2]=e;i=b;return}f=m>>>8;if(f)if(m>>>0>16777215)f=31;else{v=(f+1048320|0)>>>16&8;w=f<>>16&4;w=w<>>16&2;f=14-(u|v|f)+(w<>>15)|0;f=m>>>(f+7|0)&1|f<<1}else f=0;g=8072+(f<<2)|0;c[d+28>>2]=f;c[d+20>>2]=0;c[d+16>>2]=0;a=c[1943]|0;h=1<>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;b:do if((c[g+4>>2]&-8|0)!=(m|0)){f=m<>>31<<2)+16|0;g=c[h>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(m|0)){e=g;break b}else{f=f<<1;a=g}}if(h>>>0<(c[1946]|0)>>>0)ua();else{c[h>>2]=d;c[d+24>>2]=a;c[d+12>>2]=d;c[d+8>>2]=d;break a}}else e=g;while(0);g=e+8|0;f=c[g>>2]|0;h=c[1946]|0;if(e>>>0>>0)ua();if(f>>>0>>0)ua();else{c[f+12>>2]=d;c[g>>2]=d;c[d+8>>2]=f;c[d+12>>2]=e;c[d+24>>2]=0;break}}else{c[1943]=a|h;c[g>>2]=d;c[d+24>>2]=g;c[d+12>>2]=d;c[d+8>>2]=d}while(0);w=(c[1950]|0)+ -1|0;c[1950]=w;if(!w)d=8224|0;else{i=b;return}while(1){d=c[d>>2]|0;if(!d)break;else d=d+8|0}c[1950]=-1;i=b;return}function me(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;if(!a){e=ke(b)|0;i=d;return e|0}if(b>>>0>4294967231){c[(Ca()|0)>>2]=12;e=0;i=d;return e|0}if(b>>>0<11)e=16;else e=b+11&-8;e=ne(a+ -8|0,e)|0;if(e){e=e+8|0;i=d;return e|0}e=ke(b)|0;if(!e){e=0;i=d;return e|0}f=c[a+ -4>>2]|0;f=(f&-8)-((f&3|0)==0?8:4)|0;we(e|0,a|0,(f>>>0>>0?f:b)|0)|0;le(a);i=d;return e|0}function ne(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;e=a+4|0;g=c[e>>2]|0;j=g&-8;f=a+j|0;l=c[1946]|0;if(a>>>0>>0)ua();n=g&3;if(!((n|0)!=1&a>>>0>>0))ua();h=a+(j|4)|0;o=c[h>>2]|0;if(!(o&1))ua();if(!n){if(b>>>0<256){q=0;i=d;return q|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[2062]<<1>>>0:0){q=a;i=d;return q|0}q=0;i=d;return q|0}if(j>>>0>=b>>>0){f=j-b|0;if(f>>>0<=15){q=a;i=d;return q|0}c[e>>2]=g&1|b|2;c[a+(b+4)>>2]=f|3;c[h>>2]=c[h>>2]|1;oe(a+b|0,f);q=a;i=d;return q|0}if((f|0)==(c[1948]|0)){f=(c[1945]|0)+j|0;if(f>>>0<=b>>>0){q=0;i=d;return q|0}q=f-b|0;c[e>>2]=g&1|b|2;c[a+(b+4)>>2]=q|1;c[1948]=a+b;c[1945]=q;q=a;i=d;return q|0}if((f|0)==(c[1947]|0)){h=(c[1944]|0)+j|0;if(h>>>0>>0){q=0;i=d;return q|0}f=h-b|0;if(f>>>0>15){c[e>>2]=g&1|b|2;c[a+(b+4)>>2]=f|1;c[a+h>>2]=f;q=a+(h+4)|0;c[q>>2]=c[q>>2]&-2;b=a+b|0}else{c[e>>2]=g&1|h|2;b=a+(h+4)|0;c[b>>2]=c[b>>2]|1;b=0;f=0}c[1944]=f;c[1947]=b;q=a;i=d;return q|0}if(o&2){q=0;i=d;return q|0}h=(o&-8)+j|0;if(h>>>0>>0){q=0;i=d;return q|0}g=h-b|0;n=o>>>3;do if(o>>>0>=256){m=c[a+(j+24)>>2]|0;o=c[a+(j+12)>>2]|0;do if((o|0)==(f|0)){o=a+(j+20)|0;n=c[o>>2]|0;if(!n){o=a+(j+16)|0;n=c[o>>2]|0;if(!n){k=0;break}}while(1){q=n+20|0;p=c[q>>2]|0;if(p){n=p;o=q;continue}q=n+16|0;p=c[q>>2]|0;if(!p)break;else{n=p;o=q}}if(o>>>0>>0)ua();else{c[o>>2]=0;k=n;break}}else{n=c[a+(j+8)>>2]|0;if(n>>>0>>0)ua();p=n+12|0;if((c[p>>2]|0)!=(f|0))ua();l=o+8|0;if((c[l>>2]|0)==(f|0)){c[p>>2]=o;c[l>>2]=n;k=o;break}else ua()}while(0);if(m){l=c[a+(j+28)>>2]|0;n=8072+(l<<2)|0;if((f|0)==(c[n>>2]|0)){c[n>>2]=k;if(!k){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();l=m+16|0;if((c[l>>2]|0)==(f|0))c[l>>2]=k;else c[m+20>>2]=k;if(!k)break}if(k>>>0<(c[1946]|0)>>>0)ua();c[k+24>>2]=m;f=c[a+(j+16)>>2]|0;do if(f)if(f>>>0<(c[1946]|0)>>>0)ua();else{c[k+16>>2]=f;c[f+24>>2]=k;break}while(0);f=c[a+(j+20)>>2]|0;if(f)if(f>>>0<(c[1946]|0)>>>0)ua();else{c[k+20>>2]=f;c[f+24>>2]=k;break}}}else{k=c[a+(j+8)>>2]|0;j=c[a+(j+12)>>2]|0;o=7808+(n<<1<<2)|0;if((k|0)!=(o|0)){if(k>>>0>>0)ua();if((c[k+12>>2]|0)!=(f|0))ua()}if((j|0)==(k|0)){c[1942]=c[1942]&~(1<>>0>>0)ua();l=j+8|0;if((c[l>>2]|0)==(f|0))m=l;else ua()}else m=j+8|0;c[k+12>>2]=j;c[m>>2]=k}while(0);if(g>>>0<16){c[e>>2]=h|c[e>>2]&1|2;q=a+(h|4)|0;c[q>>2]=c[q>>2]|1;q=a;i=d;return q|0}else{c[e>>2]=c[e>>2]&1|b|2;c[a+(b+4)>>2]=g|3;q=a+(h|4)|0;c[q>>2]=c[q>>2]|1;oe(a+b|0,g);q=a;i=d;return q|0}return 0}function oe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=i;h=a+b|0;l=c[a+4>>2]|0;do if(!(l&1)){p=c[a>>2]|0;if(!(l&3)){i=d;return}l=a+(0-p)|0;m=p+b|0;q=c[1946]|0;if(l>>>0>>0)ua();if((l|0)==(c[1947]|0)){e=a+(b+4)|0;if((c[e>>2]&3|0)!=3){e=l;n=m;break}c[1944]=m;c[e>>2]=c[e>>2]&-2;c[a+(4-p)>>2]=m|1;c[h>>2]=m;i=d;return}s=p>>>3;if(p>>>0<256){e=c[a+(8-p)>>2]|0;n=c[a+(12-p)>>2]|0;o=7808+(s<<1<<2)|0;if((e|0)!=(o|0)){if(e>>>0>>0)ua();if((c[e+12>>2]|0)!=(l|0))ua()}if((n|0)==(e|0)){c[1942]=c[1942]&~(1<>>0>>0)ua();o=n+8|0;if((c[o>>2]|0)==(l|0))r=o;else ua()}else r=n+8|0;c[e+12>>2]=n;c[r>>2]=e;e=l;n=m;break}r=c[a+(24-p)>>2]|0;t=c[a+(12-p)>>2]|0;do if((t|0)==(l|0)){u=16-p|0;t=a+(u+4)|0;s=c[t>>2]|0;if(!s){t=a+u|0;s=c[t>>2]|0;if(!s){o=0;break}}while(1){u=s+20|0;v=c[u>>2]|0;if(v){s=v;t=u;continue}v=s+16|0;u=c[v>>2]|0;if(!u)break;else{s=u;t=v}}if(t>>>0>>0)ua();else{c[t>>2]=0;o=s;break}}else{s=c[a+(8-p)>>2]|0;if(s>>>0>>0)ua();u=s+12|0;if((c[u>>2]|0)!=(l|0))ua();q=t+8|0;if((c[q>>2]|0)==(l|0)){c[u>>2]=t;c[q>>2]=s;o=t;break}else ua()}while(0);if(r){q=c[a+(28-p)>>2]|0;s=8072+(q<<2)|0;if((l|0)==(c[s>>2]|0)){c[s>>2]=o;if(!o){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();q=r+16|0;if((c[q>>2]|0)==(l|0))c[q>>2]=o;else c[r+20>>2]=o;if(!o){e=l;n=m;break}}if(o>>>0<(c[1946]|0)>>>0)ua();c[o+24>>2]=r;p=16-p|0;q=c[a+p>>2]|0;do if(q)if(q>>>0<(c[1946]|0)>>>0)ua();else{c[o+16>>2]=q;c[q+24>>2]=o;break}while(0);p=c[a+(p+4)>>2]|0;if(p)if(p>>>0<(c[1946]|0)>>>0)ua();else{c[o+20>>2]=p;c[p+24>>2]=o;e=l;n=m;break}else{e=l;n=m}}else{e=l;n=m}}else{e=a;n=b}while(0);l=c[1946]|0;if(h>>>0>>0)ua();m=a+(b+4)|0;o=c[m>>2]|0;if(!(o&2)){if((h|0)==(c[1948]|0)){v=(c[1945]|0)+n|0;c[1945]=v;c[1948]=e;c[e+4>>2]=v|1;if((e|0)!=(c[1947]|0)){i=d;return}c[1947]=0;c[1944]=0;i=d;return}if((h|0)==(c[1947]|0)){v=(c[1944]|0)+n|0;c[1944]=v;c[1947]=e;c[e+4>>2]=v|1;c[e+v>>2]=v;i=d;return}n=(o&-8)+n|0;m=o>>>3;do if(o>>>0>=256){k=c[a+(b+24)>>2]|0;m=c[a+(b+12)>>2]|0;do if((m|0)==(h|0)){o=a+(b+20)|0;m=c[o>>2]|0;if(!m){o=a+(b+16)|0;m=c[o>>2]|0;if(!m){j=0;break}}while(1){q=m+20|0;p=c[q>>2]|0;if(p){m=p;o=q;continue}p=m+16|0;q=c[p>>2]|0;if(!q)break;else{m=q;o=p}}if(o>>>0>>0)ua();else{c[o>>2]=0;j=m;break}}else{o=c[a+(b+8)>>2]|0;if(o>>>0>>0)ua();l=o+12|0;if((c[l>>2]|0)!=(h|0))ua();p=m+8|0;if((c[p>>2]|0)==(h|0)){c[l>>2]=m;c[p>>2]=o;j=m;break}else ua()}while(0);if(k){l=c[a+(b+28)>>2]|0;m=8072+(l<<2)|0;if((h|0)==(c[m>>2]|0)){c[m>>2]=j;if(!j){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();l=k+16|0;if((c[l>>2]|0)==(h|0))c[l>>2]=j;else c[k+20>>2]=j;if(!j)break}if(j>>>0<(c[1946]|0)>>>0)ua();c[j+24>>2]=k;h=c[a+(b+16)>>2]|0;do if(h)if(h>>>0<(c[1946]|0)>>>0)ua();else{c[j+16>>2]=h;c[h+24>>2]=j;break}while(0);h=c[a+(b+20)>>2]|0;if(h)if(h>>>0<(c[1946]|0)>>>0)ua();else{c[j+20>>2]=h;c[h+24>>2]=j;break}}}else{j=c[a+(b+8)>>2]|0;a=c[a+(b+12)>>2]|0;b=7808+(m<<1<<2)|0;if((j|0)!=(b|0)){if(j>>>0>>0)ua();if((c[j+12>>2]|0)!=(h|0))ua()}if((a|0)==(j|0)){c[1942]=c[1942]&~(1<>>0>>0)ua();b=a+8|0;if((c[b>>2]|0)==(h|0))k=b;else ua()}else k=a+8|0;c[j+12>>2]=a;c[k>>2]=j}while(0);c[e+4>>2]=n|1;c[e+n>>2]=n;if((e|0)==(c[1947]|0)){c[1944]=n;i=d;return}}else{c[m>>2]=o&-2;c[e+4>>2]=n|1;c[e+n>>2]=n}a=n>>>3;if(n>>>0<256){b=a<<1;h=7808+(b<<2)|0;j=c[1942]|0;a=1<>2]|0;if(a>>>0<(c[1946]|0)>>>0)ua();else{g=b;f=a}}else{c[1942]=j|a;g=7808+(b+2<<2)|0;f=h}c[g>>2]=e;c[f+12>>2]=e;c[e+8>>2]=f;c[e+12>>2]=h;i=d;return}f=n>>>8;if(f)if(n>>>0>16777215)f=31;else{u=(f+1048320|0)>>>16&8;v=f<>>16&4;v=v<>>16&2;f=14-(t|u|f)+(v<>>15)|0;f=n>>>(f+7|0)&1|f<<1}else f=0;a=8072+(f<<2)|0;c[e+28>>2]=f;c[e+20>>2]=0;c[e+16>>2]=0;h=c[1943]|0;g=1<>2]=e;c[e+24>>2]=a;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}g=c[a>>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;a:do if((c[g+4>>2]&-8|0)!=(n|0)){f=n<>>31<<2)+16|0;g=c[h>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(n|0))break a;else{f=f<<1;a=g}}if(h>>>0<(c[1946]|0)>>>0)ua();c[h>>2]=e;c[e+24>>2]=a;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}while(0);f=g+8|0;a=c[f>>2]|0;h=c[1946]|0;if(g>>>0>>0)ua();if(a>>>0>>0)ua();c[a+12>>2]=e;c[f>>2]=e;c[e+8>>2]=a;c[e+12>>2]=g;c[e+24>>2]=0;i=d;return}function pe(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;if(!d){h=0;i=f;return h|0}while(1){g=a[b>>0]|0;h=a[c>>0]|0;if(g<<24>>24!=h<<24>>24)break;d=d+ -1|0;if(!d){b=0;e=5;break}else{b=b+1|0;c=c+1|0}}if((e|0)==5){i=f;return b|0}h=(g&255)-(h&255)|0;i=f;return h|0}function qe(){}function re(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>c;return a>>>c|(b&(1<>c-32|0}function se(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=b-d-(c>>>0>a>>>0|0)>>>0;return(D=b,a-c>>>0|0)|0}function te(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return(D=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function ue(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;i=b&3;h=d|d<<8|d<<16|d<<24;g=f&~3;if(i){i=b+4-i|0;while((b|0)<(i|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function ve(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b<>>32-c;return a<=4096)return ya(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function xe(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function ye(a){a=a|0;return(a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function ze(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Ae(b){b=b|0;var c=0;c=a[n+(b>>>24)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[n+(b&255)>>0]|0)+24|0}function Be(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function Ce(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=$(d,f)|0;e=a>>>16;d=(c>>>16)+($(d,e)|0)|0;b=b>>>16;a=$(b,f)|0;return(D=(d>>>16)+($(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function De(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=se(j^a,i^b,j,i)|0;g=D;b=f^j;a=e^i;a=se((Ie(h,g,se(f^c,e^d,f,e)|0,D,0)|0)^b,D^a,b,a)|0;return a|0}function Ee(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;b=se(h^a,g^b,h,g)|0;a=D;Ie(b,a,se(l^d,k^e,l,k)|0,D,j)|0;a=se(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;b=D;i=f;return(D=b,a)|0}function Fe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;a=Ce(e,f)|0;c=D;return(D=($(b,f)|0)+($(d,e)|0)+c|c&0,a|0|0)|0}function Ge(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=Ie(a,b,c,d,0)|0;return a|0}function He(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;Ie(a,b,d,e,f)|0;i=g;return(D=c[f+4>>2]|0,c[f>>2]|0)|0}function Ie(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=a;j=b;i=j;l=d;g=e;k=g;if(!i){g=(f|0)!=0;if(!k){if(g){c[f>>2]=(h>>>0)%(l>>>0);c[f+4>>2]=0}k=0;m=(h>>>0)/(l>>>0)>>>0;return(D=k,m)|0}else{if(!g){l=0;m=0;return(D=l,m)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;l=0;m=0;return(D=l,m)|0}}m=(k|0)==0;do if(l){if(!m){k=(Ae(k|0)|0)-(Ae(i|0)|0)|0;if(k>>>0<=31){m=k+1|0;l=31-k|0;a=k-31>>31;j=m;b=h>>>(m>>>0)&a|i<>>(m>>>0)&a;k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;l=0;m=0;return(D=l,m)|0}k=l-1|0;if(k&l){l=(Ae(l|0)|0)+33-(Ae(i|0)|0)|0;p=64-l|0;m=32-l|0;n=m>>31;o=l-32|0;a=o>>31;j=l;b=m-1>>31&i>>>(o>>>0)|(i<>>(l>>>0))&a;a=a&i>>>(l>>>0);k=h<>>(o>>>0))&n|h<>31;break}if(f){c[f>>2]=k&h;c[f+4>>2]=0}if((l|0)==1){o=j|b&0;p=a|0|0;return(D=o,p)|0}else{p=Be(l|0)|0;o=i>>>(p>>>0)|0;p=i<<32-p|h>>>(p>>>0)|0;return(D=o,p)|0}}else{if(m){if(f){c[f>>2]=(i>>>0)%(l>>>0);c[f+4>>2]=0}o=0;p=(i>>>0)/(l>>>0)>>>0;return(D=o,p)|0}if(!h){if(f){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(k>>>0)}o=0;p=(i>>>0)/(k>>>0)>>>0;return(D=o,p)|0}l=k-1|0;if(!(l&k)){if(f){c[f>>2]=a|0;c[f+4>>2]=l&i|b&0}o=0;p=i>>>((Be(k|0)|0)>>>0);return(D=o,p)|0}k=(Ae(k|0)|0)-(Ae(i|0)|0)|0;if(k>>>0<=30){a=k+1|0;l=31-k|0;j=a;b=i<>>(a>>>0);a=i>>>(a>>>0);k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return(D=o,p)|0}while(0);if(!j){g=l;e=0;i=0}else{h=d|0|0;g=g|e&0;e=te(h,g,-1,-1)|0;d=D;i=0;do{m=l;l=k>>>31|l<<1;k=i|k<<1;m=b<<1|m>>>31|0;n=b>>>31|a<<1|0;se(e,d,m,n)|0;p=D;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;b=se(m,n,o&h,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&g)|0;a=D;j=j-1|0}while((j|0)!=0);g=l;e=0}h=0;if(f){c[f>>2]=b;c[f+4>>2]=a}o=(k|0)>>>31|(g|h)<<1|(h<<1|k>>>31)&0|e;p=(k<<1|0>>>31)&-2|i;return(D=o,p)|0}function Je(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ea[a&1](b|0,c|0,d|0)|0}function Ke(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;Fa[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function Le(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Ga[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function Me(a,b,c,d,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;Ha[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0,n|0)}function Ne(a,b){a=a|0;b=b|0;Ia[a&1](b|0)}function Oe(a,b,c){a=a|0;b=b|0;c=c|0;Ja[a&15](b|0,c|0)}function Pe(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ka[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Qe(a,b){a=a|0;b=b|0;return La[a&7](b|0)|0}function Re(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ma[a&7](b|0,c|0,d|0)}function Se(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;Na[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function Te(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Oa[a&1](b|0,c|0,d|0,e|0)|0}function Ue(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Pa[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Ve(a,b,c){a=a|0;b=b|0;c=c|0;return Qa[a&1](b|0,c|0)|0}function We(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Ra[a&1](b|0,c|0,d|0,e|0,f|0)|0}function Xe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Sa[a&15](b|0,c|0,d|0,e|0)}function Ye(a,b,c){a=a|0;b=b|0;c=c|0;aa(0);return 0}function Ze(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;aa(1)}function _e(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;aa(2)}function $e(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;aa(3)}function af(a){a=a|0;aa(4)}function bf(a,b){a=a|0;b=b|0;aa(5)}function cf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(6);return 0}function df(a){a=a|0;aa(7);return 0}function ef(a,b,c){a=a|0;b=b|0;c=c|0;aa(8)}function ff(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;aa(9)}function gf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(10);return 0}function hf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(11)}function jf(a,b){a=a|0;b=b|0;aa(12);return 0}function kf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;aa(13);return 0}function lf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(14)} +function le(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;b=i;do if(a>>>0<245){if(a>>>0<11)a=16;else a=a+11&-8;v=a>>>3;p=c[1942]|0;w=p>>>v;if(w&3){h=(w&1^1)+v|0;g=h<<1;e=7808+(g<<2)|0;g=7808+(g+2<<2)|0;j=c[g>>2]|0;d=j+8|0;f=c[d>>2]|0;do if((e|0)!=(f|0)){if(f>>>0<(c[1946]|0)>>>0)ua();k=f+12|0;if((c[k>>2]|0)==(j|0)){c[k>>2]=e;c[g>>2]=f;break}else ua()}else c[1942]=p&~(1<>2]=H|3;H=j+(H|4)|0;c[H>>2]=c[H>>2]|1;H=d;i=b;return H|0}if(a>>>0>(c[1944]|0)>>>0){if(w){h=2<>>12&16;h=h>>>d;f=h>>>5&8;h=h>>>f;g=h>>>2&4;h=h>>>g;e=h>>>1&2;h=h>>>e;j=h>>>1&1;j=(f|d|g|e|j)+(h>>>j)|0;h=j<<1;e=7808+(h<<2)|0;h=7808+(h+2<<2)|0;g=c[h>>2]|0;d=g+8|0;f=c[d>>2]|0;do if((e|0)!=(f|0)){if(f>>>0<(c[1946]|0)>>>0)ua();k=f+12|0;if((c[k>>2]|0)==(g|0)){c[k>>2]=e;c[h>>2]=f;break}else ua()}else c[1942]=p&~(1<>2]=a|3;e=g+a|0;c[g+(a|4)>>2]=f|1;c[g+h>>2]=f;h=c[1944]|0;if(h){g=c[1947]|0;k=h>>>3;j=k<<1;h=7808+(j<<2)|0;l=c[1942]|0;k=1<>2]|0;if(k>>>0<(c[1946]|0)>>>0)ua();else{D=j;C=k}}else{c[1942]=l|k;D=7808+(j+2<<2)|0;C=h}c[D>>2]=g;c[C+12>>2]=g;c[g+8>>2]=C;c[g+12>>2]=h}c[1944]=f;c[1947]=e;H=d;i=b;return H|0}p=c[1943]|0;if(p){e=(p&0-p)+ -1|0;G=e>>>12&16;e=e>>>G;F=e>>>5&8;e=e>>>F;H=e>>>2&4;e=e>>>H;f=e>>>1&2;e=e>>>f;d=e>>>1&1;d=c[8072+((F|G|H|f|d)+(e>>>d)<<2)>>2]|0;e=(c[d+4>>2]&-8)-a|0;f=d;while(1){g=c[f+16>>2]|0;if(!g){g=c[f+20>>2]|0;if(!g)break}f=(c[g+4>>2]&-8)-a|0;H=f>>>0>>0;e=H?f:e;f=g;d=H?g:d}h=c[1946]|0;if(d>>>0>>0)ua();f=d+a|0;if(d>>>0>=f>>>0)ua();g=c[d+24>>2]|0;k=c[d+12>>2]|0;do if((k|0)==(d|0)){k=d+20|0;j=c[k>>2]|0;if(!j){k=d+16|0;j=c[k>>2]|0;if(!j){B=0;break}}while(1){l=j+20|0;m=c[l>>2]|0;if(m){j=m;k=l;continue}m=j+16|0;l=c[m>>2]|0;if(!l)break;else{j=l;k=m}}if(k>>>0>>0)ua();else{c[k>>2]=0;B=j;break}}else{j=c[d+8>>2]|0;if(j>>>0>>0)ua();h=j+12|0;if((c[h>>2]|0)!=(d|0))ua();l=k+8|0;if((c[l>>2]|0)==(d|0)){c[h>>2]=k;c[l>>2]=j;B=k;break}else ua()}while(0);do if(g){h=c[d+28>>2]|0;j=8072+(h<<2)|0;if((d|0)==(c[j>>2]|0)){c[j>>2]=B;if(!B){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();h=g+16|0;if((c[h>>2]|0)==(d|0))c[h>>2]=B;else c[g+20>>2]=B;if(!B)break}if(B>>>0<(c[1946]|0)>>>0)ua();c[B+24>>2]=g;g=c[d+16>>2]|0;do if(g)if(g>>>0<(c[1946]|0)>>>0)ua();else{c[B+16>>2]=g;c[g+24>>2]=B;break}while(0);g=c[d+20>>2]|0;if(g)if(g>>>0<(c[1946]|0)>>>0)ua();else{c[B+20>>2]=g;c[g+24>>2]=B;break}}while(0);if(e>>>0<16){H=e+a|0;c[d+4>>2]=H|3;H=d+(H+4)|0;c[H>>2]=c[H>>2]|1}else{c[d+4>>2]=a|3;c[d+(a|4)>>2]=e|1;c[d+(e+a)>>2]=e;h=c[1944]|0;if(h){g=c[1947]|0;l=h>>>3;j=l<<1;h=7808+(j<<2)|0;k=c[1942]|0;l=1<>2]|0;if(k>>>0<(c[1946]|0)>>>0)ua();else{A=j;z=k}}else{c[1942]=k|l;A=7808+(j+2<<2)|0;z=h}c[A>>2]=g;c[z+12>>2]=g;c[g+8>>2]=z;c[g+12>>2]=h}c[1944]=e;c[1947]=f}H=d+8|0;i=b;return H|0}}}else if(a>>>0<=4294967231){z=a+11|0;a=z&-8;B=c[1943]|0;if(B){A=0-a|0;z=z>>>8;if(z)if(a>>>0>16777215)C=31;else{G=(z+1048320|0)>>>16&8;H=z<>>16&4;H=H<>>16&2;C=14-(F|G|C)+(H<>>15)|0;C=a>>>(C+7|0)&1|C<<1}else C=0;D=c[8072+(C<<2)>>2]|0;a:do if(!D){F=0;z=0}else{if((C|0)==31)z=0;else z=25-(C>>>1)|0;F=0;E=a<>2]&-8;G=H-a|0;if(G>>>0>>0)if((H|0)==(a|0)){A=G;F=D;z=D;break a}else{A=G;z=D}H=c[D+20>>2]|0;D=c[D+(E>>>31<<2)+16>>2]|0;F=(H|0)==0|(H|0)==(D|0)?F:H;if(!D)break;else E=E<<1}}while(0);if((F|0)==0&(z|0)==0){H=2<>>12&16;H=H>>>D;C=H>>>5&8;H=H>>>C;E=H>>>2&4;H=H>>>E;G=H>>>1&2;H=H>>>G;F=H>>>1&1;F=c[8072+((C|D|E|G|F)+(H>>>F)<<2)>>2]|0}if(F)while(1){H=(c[F+4>>2]&-8)-a|0;B=H>>>0>>0;A=B?H:A;z=B?F:z;B=c[F+16>>2]|0;if(B){F=B;continue}F=c[F+20>>2]|0;if(!F)break}if((z|0)!=0?A>>>0<((c[1944]|0)-a|0)>>>0:0){f=c[1946]|0;if(z>>>0>>0)ua();d=z+a|0;if(z>>>0>=d>>>0)ua();e=c[z+24>>2]|0;h=c[z+12>>2]|0;do if((h|0)==(z|0)){h=z+20|0;g=c[h>>2]|0;if(!g){h=z+16|0;g=c[h>>2]|0;if(!g){x=0;break}}while(1){j=g+20|0;k=c[j>>2]|0;if(k){g=k;h=j;continue}j=g+16|0;k=c[j>>2]|0;if(!k)break;else{g=k;h=j}}if(h>>>0>>0)ua();else{c[h>>2]=0;x=g;break}}else{g=c[z+8>>2]|0;if(g>>>0>>0)ua();f=g+12|0;if((c[f>>2]|0)!=(z|0))ua();j=h+8|0;if((c[j>>2]|0)==(z|0)){c[f>>2]=h;c[j>>2]=g;x=h;break}else ua()}while(0);do if(e){g=c[z+28>>2]|0;f=8072+(g<<2)|0;if((z|0)==(c[f>>2]|0)){c[f>>2]=x;if(!x){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();f=e+16|0;if((c[f>>2]|0)==(z|0))c[f>>2]=x;else c[e+20>>2]=x;if(!x)break}if(x>>>0<(c[1946]|0)>>>0)ua();c[x+24>>2]=e;e=c[z+16>>2]|0;do if(e)if(e>>>0<(c[1946]|0)>>>0)ua();else{c[x+16>>2]=e;c[e+24>>2]=x;break}while(0);e=c[z+20>>2]|0;if(e)if(e>>>0<(c[1946]|0)>>>0)ua();else{c[x+20>>2]=e;c[e+24>>2]=x;break}}while(0);b:do if(A>>>0>=16){c[z+4>>2]=a|3;c[z+(a|4)>>2]=A|1;c[z+(A+a)>>2]=A;f=A>>>3;if(A>>>0<256){h=f<<1;e=7808+(h<<2)|0;g=c[1942]|0;f=1<>2]|0;if(g>>>0>=(c[1946]|0)>>>0){w=f;v=g;break}ua()}while(0);c[w>>2]=d;c[v+12>>2]=d;c[z+(a+8)>>2]=v;c[z+(a+12)>>2]=e;break}e=A>>>8;if(e)if(A>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=A>>>(e+7|0)&1|e<<1}else e=0;f=8072+(e<<2)|0;c[z+(a+28)>>2]=e;c[z+(a+20)>>2]=0;c[z+(a+16)>>2]=0;h=c[1943]|0;g=1<>2]=d;c[z+(a+24)>>2]=f;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break}f=c[f>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;c:do if((c[f+4>>2]&-8|0)!=(A|0)){e=A<>>31<<2)+16|0;h=c[g>>2]|0;if(!h)break;if((c[h+4>>2]&-8|0)==(A|0)){p=h;break c}else{e=e<<1;f=h}}if(g>>>0<(c[1946]|0)>>>0)ua();else{c[g>>2]=d;c[z+(a+24)>>2]=f;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break b}}else p=f;while(0);f=p+8|0;e=c[f>>2]|0;g=c[1946]|0;if(p>>>0>>0)ua();if(e>>>0>>0)ua();else{c[e+12>>2]=d;c[f>>2]=d;c[z+(a+8)>>2]=e;c[z+(a+12)>>2]=p;c[z+(a+24)>>2]=0;break}}else{H=A+a|0;c[z+4>>2]=H|3;H=z+(H+4)|0;c[H>>2]=c[H>>2]|1}while(0);H=z+8|0;i=b;return H|0}}}else a=-1;while(0);p=c[1944]|0;if(a>>>0<=p>>>0){e=p-a|0;d=c[1947]|0;if(e>>>0>15){c[1947]=d+a;c[1944]=e;c[d+(a+4)>>2]=e|1;c[d+p>>2]=e;c[d+4>>2]=a|3}else{c[1944]=0;c[1947]=0;c[d+4>>2]=p|3;H=d+(p+4)|0;c[H>>2]=c[H>>2]|1}H=d+8|0;i=b;return H|0}p=c[1945]|0;if(a>>>0

>>0){G=p-a|0;c[1945]=G;H=c[1948]|0;c[1948]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}do if(!(c[2060]|0)){p=Ba(30)|0;if(!(p+ -1&p)){c[2062]=p;c[2061]=p;c[2063]=-1;c[2064]=-1;c[2065]=0;c[2053]=0;c[2060]=(xa(0)|0)&-16^1431655768;break}else ua()}while(0);w=a+48|0;p=c[2062]|0;x=a+47|0;z=p+x|0;p=0-p|0;v=z&p;if(v>>>0<=a>>>0){H=0;i=b;return H|0}A=c[2052]|0;if((A|0)!=0?(G=c[2050]|0,H=G+v|0,H>>>0<=G>>>0|H>>>0>A>>>0):0){H=0;i=b;return H|0}d:do if(!(c[2053]&4)){B=c[1948]|0;e:do if(B){A=8216|0;while(1){C=c[A>>2]|0;if(C>>>0<=B>>>0?(y=A+4|0,(C+(c[y>>2]|0)|0)>>>0>B>>>0):0)break;A=c[A+8>>2]|0;if(!A){o=182;break e}}if(A){B=z-(c[1945]|0)&p;if(B>>>0<2147483647){p=wa(B|0)|0;A=(p|0)==((c[A>>2]|0)+(c[y>>2]|0)|0);y=p;z=B;p=A?p:-1;A=A?B:0;o=191}else A=0}else o=182}else o=182;while(0);do if((o|0)==182){p=wa(0)|0;if((p|0)!=(-1|0)){z=p;A=c[2061]|0;y=A+ -1|0;if(!(y&z))A=v;else A=v-z+(y+z&0-A)|0;y=c[2050]|0;z=y+A|0;if(A>>>0>a>>>0&A>>>0<2147483647){H=c[2052]|0;if((H|0)!=0?z>>>0<=y>>>0|z>>>0>H>>>0:0){A=0;break}y=wa(A|0)|0;o=(y|0)==(p|0);z=A;p=o?p:-1;A=o?A:0;o=191}else A=0}else A=0}while(0);f:do if((o|0)==191){o=0-z|0;if((p|0)!=(-1|0)){q=A;o=202;break d}do if((y|0)!=(-1|0)&z>>>0<2147483647&z>>>0>>0?(u=c[2062]|0,u=x-z+u&0-u,u>>>0<2147483647):0)if((wa(u|0)|0)==(-1|0)){wa(o|0)|0;break f}else{z=u+z|0;break}while(0);if((y|0)!=(-1|0)){p=y;q=z;o=202;break d}}while(0);c[2053]=c[2053]|4;o=199}else{A=0;o=199}while(0);if((((o|0)==199?v>>>0<2147483647:0)?(t=wa(v|0)|0,s=wa(0)|0,(s|0)!=(-1|0)&(t|0)!=(-1|0)&t>>>0>>0):0)?(r=s-t|0,q=r>>>0>(a+40|0)>>>0,q):0){p=t;q=q?r:A;o=202}if((o|0)==202){r=(c[2050]|0)+q|0;c[2050]=r;if(r>>>0>(c[2051]|0)>>>0)c[2051]=r;r=c[1948]|0;g:do if(r){v=8216|0;while(1){t=c[v>>2]|0;u=v+4|0;s=c[u>>2]|0;if((p|0)==(t+s|0)){o=214;break}w=c[v+8>>2]|0;if(!w)break;else v=w}if(((o|0)==214?(c[v+12>>2]&8|0)==0:0)?r>>>0>=t>>>0&r>>>0

>>0:0){c[u>>2]=s+q;d=(c[1945]|0)+q|0;e=r+8|0;if(!(e&7))e=0;else e=0-e&7;H=d-e|0;c[1948]=r+e;c[1945]=H;c[r+(e+4)>>2]=H|1;c[r+(d+4)>>2]=40;c[1949]=c[2064];break}if(p>>>0<(c[1946]|0)>>>0)c[1946]=p;t=p+q|0;s=8216|0;while(1){if((c[s>>2]|0)==(t|0)){o=224;break}u=c[s+8>>2]|0;if(!u)break;else s=u}if((o|0)==224?(c[s+12>>2]&8|0)==0:0){c[s>>2]=p;h=s+4|0;c[h>>2]=(c[h>>2]|0)+q;h=p+8|0;if(!(h&7))h=0;else h=0-h&7;j=p+(q+8)|0;if(!(j&7))n=0;else n=0-j&7;o=p+(n+q)|0;j=h+a|0;k=p+j|0;m=o-(p+h)-a|0;c[p+(h+4)>>2]=a|3;h:do if((o|0)!=(c[1948]|0)){if((o|0)==(c[1947]|0)){H=(c[1944]|0)+m|0;c[1944]=H;c[1947]=k;c[p+(j+4)>>2]=H|1;c[p+(H+j)>>2]=H;break}r=q+4|0;t=c[p+(r+n)>>2]|0;if((t&3|0)==1){a=t&-8;s=t>>>3;i:do if(t>>>0>=256){l=c[p+((n|24)+q)>>2]|0;u=c[p+(q+12+n)>>2]|0;do if((u|0)==(o|0)){u=n|16;t=p+(r+u)|0;s=c[t>>2]|0;if(!s){t=p+(u+q)|0;s=c[t>>2]|0;if(!s){g=0;break}}while(1){u=s+20|0;v=c[u>>2]|0;if(v){s=v;t=u;continue}u=s+16|0;v=c[u>>2]|0;if(!v)break;else{s=v;t=u}}if(t>>>0<(c[1946]|0)>>>0)ua();else{c[t>>2]=0;g=s;break}}else{t=c[p+((n|8)+q)>>2]|0;if(t>>>0<(c[1946]|0)>>>0)ua();v=t+12|0;if((c[v>>2]|0)!=(o|0))ua();s=u+8|0;if((c[s>>2]|0)==(o|0)){c[v>>2]=u;c[s>>2]=t;g=u;break}else ua()}while(0);if(!l)break;t=c[p+(q+28+n)>>2]|0;s=8072+(t<<2)|0;do if((o|0)!=(c[s>>2]|0)){if(l>>>0<(c[1946]|0)>>>0)ua();s=l+16|0;if((c[s>>2]|0)==(o|0))c[s>>2]=g;else c[l+20>>2]=g;if(!g)break i}else{c[s>>2]=g;if(g)break;c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();c[g+24>>2]=l;l=n|16;o=c[p+(l+q)>>2]|0;do if(o)if(o>>>0<(c[1946]|0)>>>0)ua();else{c[g+16>>2]=o;c[o+24>>2]=g;break}while(0);l=c[p+(r+l)>>2]|0;if(!l)break;if(l>>>0<(c[1946]|0)>>>0)ua();else{c[g+20>>2]=l;c[l+24>>2]=g;break}}else{r=c[p+((n|8)+q)>>2]|0;g=c[p+(q+12+n)>>2]|0;t=7808+(s<<1<<2)|0;do if((r|0)!=(t|0)){if(r>>>0<(c[1946]|0)>>>0)ua();if((c[r+12>>2]|0)==(o|0))break;ua()}while(0);if((g|0)==(r|0)){c[1942]=c[1942]&~(1<>>0<(c[1946]|0)>>>0)ua();s=g+8|0;if((c[s>>2]|0)==(o|0)){l=s;break}ua()}while(0);c[r+12>>2]=g;c[l>>2]=r}while(0);o=p+((a|n)+q)|0;m=a+m|0}g=o+4|0;c[g>>2]=c[g>>2]&-2;c[p+(j+4)>>2]=m|1;c[p+(m+j)>>2]=m;g=m>>>3;if(m>>>0<256){m=g<<1;d=7808+(m<<2)|0;l=c[1942]|0;g=1<>2]|0;if(g>>>0>=(c[1946]|0)>>>0){f=l;e=g;break}ua()}while(0);c[f>>2]=k;c[e+12>>2]=k;c[p+(j+8)>>2]=e;c[p+(j+12)>>2]=d;break}e=m>>>8;do if(!e)e=0;else{if(m>>>0>16777215){e=31;break}G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=m>>>(e+7|0)&1|e<<1}while(0);l=8072+(e<<2)|0;c[p+(j+28)>>2]=e;c[p+(j+20)>>2]=0;c[p+(j+16)>>2]=0;f=c[1943]|0;g=1<>2]=k;c[p+(j+24)>>2]=l;c[p+(j+12)>>2]=k;c[p+(j+8)>>2]=k;break}l=c[l>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;j:do if((c[l+4>>2]&-8|0)!=(m|0)){e=m<>>31<<2)+16|0;f=c[g>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(m|0)){d=f;break j}else{e=e<<1;l=f}}if(g>>>0<(c[1946]|0)>>>0)ua();else{c[g>>2]=k;c[p+(j+24)>>2]=l;c[p+(j+12)>>2]=k;c[p+(j+8)>>2]=k;break h}}else d=l;while(0);f=d+8|0;e=c[f>>2]|0;g=c[1946]|0;if(d>>>0>>0)ua();if(e>>>0>>0)ua();else{c[e+12>>2]=k;c[f>>2]=k;c[p+(j+8)>>2]=e;c[p+(j+12)>>2]=d;c[p+(j+24)>>2]=0;break}}else{H=(c[1945]|0)+m|0;c[1945]=H;c[1948]=k;c[p+(j+4)>>2]=H|1}while(0);H=p+(h|8)|0;i=b;return H|0}e=8216|0;while(1){d=c[e>>2]|0;if(d>>>0<=r>>>0?(n=c[e+4>>2]|0,m=d+n|0,m>>>0>r>>>0):0)break;e=c[e+8>>2]|0}e=d+(n+ -39)|0;if(!(e&7))e=0;else e=0-e&7;d=d+(n+ -47+e)|0;d=d>>>0<(r+16|0)>>>0?r:d;e=d+8|0;f=p+8|0;if(!(f&7))f=0;else f=0-f&7;H=q+ -40-f|0;c[1948]=p+f;c[1945]=H;c[p+(f+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[1949]=c[2064];c[d+4>>2]=27;c[e+0>>2]=c[2054];c[e+4>>2]=c[2055];c[e+8>>2]=c[2056];c[e+12>>2]=c[2057];c[2054]=p;c[2055]=q;c[2057]=0;c[2056]=e;e=d+28|0;c[e>>2]=7;if((d+32|0)>>>0>>0)do{H=e;e=e+4|0;c[e>>2]=7}while((H+8|0)>>>0>>0);if((d|0)!=(r|0)){d=d-r|0;e=r+(d+4)|0;c[e>>2]=c[e>>2]&-2;c[r+4>>2]=d|1;c[r+d>>2]=d;e=d>>>3;if(d>>>0<256){g=e<<1;d=7808+(g<<2)|0;f=c[1942]|0;e=1<>2]|0;if(e>>>0>=(c[1946]|0)>>>0){k=f;j=e;break}ua()}while(0);c[k>>2]=r;c[j+12>>2]=r;c[r+8>>2]=j;c[r+12>>2]=d;break}e=d>>>8;if(e)if(d>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=d>>>(e+7|0)&1|e<<1}else e=0;j=8072+(e<<2)|0;c[r+28>>2]=e;c[r+20>>2]=0;c[r+16>>2]=0;f=c[1943]|0;g=1<>2]=r;c[r+24>>2]=j;c[r+12>>2]=r;c[r+8>>2]=r;break}f=c[j>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;k:do if((c[f+4>>2]&-8|0)!=(d|0)){e=d<>>31<<2)+16|0;g=c[j>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(d|0)){h=g;break k}else{e=e<<1;f=g}}if(j>>>0<(c[1946]|0)>>>0)ua();else{c[j>>2]=r;c[r+24>>2]=f;c[r+12>>2]=r;c[r+8>>2]=r;break g}}else h=f;while(0);f=h+8|0;e=c[f>>2]|0;d=c[1946]|0;if(h>>>0>>0)ua();if(e>>>0>>0)ua();else{c[e+12>>2]=r;c[f>>2]=r;c[r+8>>2]=e;c[r+12>>2]=h;c[r+24>>2]=0;break}}}else{H=c[1946]|0;if((H|0)==0|p>>>0>>0)c[1946]=p;c[2054]=p;c[2055]=q;c[2057]=0;c[1951]=c[2060];c[1950]=-1;d=0;do{H=d<<1;G=7808+(H<<2)|0;c[7808+(H+3<<2)>>2]=G;c[7808+(H+2<<2)>>2]=G;d=d+1|0}while((d|0)!=32);d=p+8|0;if(!(d&7))d=0;else d=0-d&7;H=q+ -40-d|0;c[1948]=p+d;c[1945]=H;c[p+(d+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[1949]=c[2064]}while(0);d=c[1945]|0;if(d>>>0>a>>>0){G=d-a|0;c[1945]=G;H=c[1948]|0;c[1948]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}}c[(Ca()|0)>>2]=12;H=0;i=b;return H|0}function me(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;b=i;if(!a){i=b;return}q=a+ -8|0;r=c[1946]|0;if(q>>>0>>0)ua();o=c[a+ -4>>2]|0;n=o&3;if((n|0)==1)ua();j=o&-8;h=a+(j+ -8)|0;do if(!(o&1)){u=c[q>>2]|0;if(!n){i=b;return}q=-8-u|0;o=a+q|0;n=u+j|0;if(o>>>0>>0)ua();if((o|0)==(c[1947]|0)){d=a+(j+ -4)|0;if((c[d>>2]&3|0)!=3){d=o;m=n;break}c[1944]=n;c[d>>2]=c[d>>2]&-2;c[a+(q+4)>>2]=n|1;c[h>>2]=n;i=b;return}t=u>>>3;if(u>>>0<256){d=c[a+(q+8)>>2]|0;m=c[a+(q+12)>>2]|0;p=7808+(t<<1<<2)|0;if((d|0)!=(p|0)){if(d>>>0>>0)ua();if((c[d+12>>2]|0)!=(o|0))ua()}if((m|0)==(d|0)){c[1942]=c[1942]&~(1<>>0>>0)ua();p=m+8|0;if((c[p>>2]|0)==(o|0))s=p;else ua()}else s=m+8|0;c[d+12>>2]=m;c[s>>2]=d;d=o;m=n;break}s=c[a+(q+24)>>2]|0;t=c[a+(q+12)>>2]|0;do if((t|0)==(o|0)){u=a+(q+20)|0;t=c[u>>2]|0;if(!t){u=a+(q+16)|0;t=c[u>>2]|0;if(!t){p=0;break}}while(1){w=t+20|0;v=c[w>>2]|0;if(v){t=v;u=w;continue}v=t+16|0;w=c[v>>2]|0;if(!w)break;else{t=w;u=v}}if(u>>>0>>0)ua();else{c[u>>2]=0;p=t;break}}else{u=c[a+(q+8)>>2]|0;if(u>>>0>>0)ua();r=u+12|0;if((c[r>>2]|0)!=(o|0))ua();v=t+8|0;if((c[v>>2]|0)==(o|0)){c[r>>2]=t;c[v>>2]=u;p=t;break}else ua()}while(0);if(s){t=c[a+(q+28)>>2]|0;r=8072+(t<<2)|0;if((o|0)==(c[r>>2]|0)){c[r>>2]=p;if(!p){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();r=s+16|0;if((c[r>>2]|0)==(o|0))c[r>>2]=p;else c[s+20>>2]=p;if(!p){d=o;m=n;break}}if(p>>>0<(c[1946]|0)>>>0)ua();c[p+24>>2]=s;r=c[a+(q+16)>>2]|0;do if(r)if(r>>>0<(c[1946]|0)>>>0)ua();else{c[p+16>>2]=r;c[r+24>>2]=p;break}while(0);q=c[a+(q+20)>>2]|0;if(q)if(q>>>0<(c[1946]|0)>>>0)ua();else{c[p+20>>2]=q;c[q+24>>2]=p;d=o;m=n;break}else{d=o;m=n}}else{d=o;m=n}}else{d=q;m=j}while(0);if(d>>>0>=h>>>0)ua();n=a+(j+ -4)|0;o=c[n>>2]|0;if(!(o&1))ua();if(!(o&2)){if((h|0)==(c[1948]|0)){w=(c[1945]|0)+m|0;c[1945]=w;c[1948]=d;c[d+4>>2]=w|1;if((d|0)!=(c[1947]|0)){i=b;return}c[1947]=0;c[1944]=0;i=b;return}if((h|0)==(c[1947]|0)){w=(c[1944]|0)+m|0;c[1944]=w;c[1947]=d;c[d+4>>2]=w|1;c[d+w>>2]=w;i=b;return}m=(o&-8)+m|0;n=o>>>3;do if(o>>>0>=256){l=c[a+(j+16)>>2]|0;q=c[a+(j|4)>>2]|0;do if((q|0)==(h|0)){o=a+(j+12)|0;n=c[o>>2]|0;if(!n){o=a+(j+8)|0;n=c[o>>2]|0;if(!n){k=0;break}}while(1){p=n+20|0;q=c[p>>2]|0;if(q){n=q;o=p;continue}p=n+16|0;q=c[p>>2]|0;if(!q)break;else{n=q;o=p}}if(o>>>0<(c[1946]|0)>>>0)ua();else{c[o>>2]=0;k=n;break}}else{o=c[a+j>>2]|0;if(o>>>0<(c[1946]|0)>>>0)ua();p=o+12|0;if((c[p>>2]|0)!=(h|0))ua();n=q+8|0;if((c[n>>2]|0)==(h|0)){c[p>>2]=q;c[n>>2]=o;k=q;break}else ua()}while(0);if(l){n=c[a+(j+20)>>2]|0;o=8072+(n<<2)|0;if((h|0)==(c[o>>2]|0)){c[o>>2]=k;if(!k){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();n=l+16|0;if((c[n>>2]|0)==(h|0))c[n>>2]=k;else c[l+20>>2]=k;if(!k)break}if(k>>>0<(c[1946]|0)>>>0)ua();c[k+24>>2]=l;h=c[a+(j+8)>>2]|0;do if(h)if(h>>>0<(c[1946]|0)>>>0)ua();else{c[k+16>>2]=h;c[h+24>>2]=k;break}while(0);h=c[a+(j+12)>>2]|0;if(h)if(h>>>0<(c[1946]|0)>>>0)ua();else{c[k+20>>2]=h;c[h+24>>2]=k;break}}}else{k=c[a+j>>2]|0;a=c[a+(j|4)>>2]|0;j=7808+(n<<1<<2)|0;if((k|0)!=(j|0)){if(k>>>0<(c[1946]|0)>>>0)ua();if((c[k+12>>2]|0)!=(h|0))ua()}if((a|0)==(k|0)){c[1942]=c[1942]&~(1<>>0<(c[1946]|0)>>>0)ua();j=a+8|0;if((c[j>>2]|0)==(h|0))l=j;else ua()}else l=a+8|0;c[k+12>>2]=a;c[l>>2]=k}while(0);c[d+4>>2]=m|1;c[d+m>>2]=m;if((d|0)==(c[1947]|0)){c[1944]=m;i=b;return}}else{c[n>>2]=o&-2;c[d+4>>2]=m|1;c[d+m>>2]=m}h=m>>>3;if(m>>>0<256){a=h<<1;e=7808+(a<<2)|0;j=c[1942]|0;h=1<>2]|0;if(a>>>0<(c[1946]|0)>>>0)ua();else{f=h;g=a}}else{c[1942]=j|h;f=7808+(a+2<<2)|0;g=e}c[f>>2]=d;c[g+12>>2]=d;c[d+8>>2]=g;c[d+12>>2]=e;i=b;return}f=m>>>8;if(f)if(m>>>0>16777215)f=31;else{v=(f+1048320|0)>>>16&8;w=f<>>16&4;w=w<>>16&2;f=14-(u|v|f)+(w<>>15)|0;f=m>>>(f+7|0)&1|f<<1}else f=0;g=8072+(f<<2)|0;c[d+28>>2]=f;c[d+20>>2]=0;c[d+16>>2]=0;a=c[1943]|0;h=1<>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;b:do if((c[g+4>>2]&-8|0)!=(m|0)){f=m<>>31<<2)+16|0;g=c[h>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(m|0)){e=g;break b}else{f=f<<1;a=g}}if(h>>>0<(c[1946]|0)>>>0)ua();else{c[h>>2]=d;c[d+24>>2]=a;c[d+12>>2]=d;c[d+8>>2]=d;break a}}else e=g;while(0);g=e+8|0;f=c[g>>2]|0;h=c[1946]|0;if(e>>>0>>0)ua();if(f>>>0>>0)ua();else{c[f+12>>2]=d;c[g>>2]=d;c[d+8>>2]=f;c[d+12>>2]=e;c[d+24>>2]=0;break}}else{c[1943]=a|h;c[g>>2]=d;c[d+24>>2]=g;c[d+12>>2]=d;c[d+8>>2]=d}while(0);w=(c[1950]|0)+ -1|0;c[1950]=w;if(!w)d=8224|0;else{i=b;return}while(1){d=c[d>>2]|0;if(!d)break;else d=d+8|0}c[1950]=-1;i=b;return}function ne(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;if(!a){e=le(b)|0;i=d;return e|0}if(b>>>0>4294967231){c[(Ca()|0)>>2]=12;e=0;i=d;return e|0}if(b>>>0<11)e=16;else e=b+11&-8;e=oe(a+ -8|0,e)|0;if(e){e=e+8|0;i=d;return e|0}e=le(b)|0;if(!e){e=0;i=d;return e|0}f=c[a+ -4>>2]|0;f=(f&-8)-((f&3|0)==0?8:4)|0;xe(e|0,a|0,(f>>>0>>0?f:b)|0)|0;me(a);i=d;return e|0}function oe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;e=a+4|0;g=c[e>>2]|0;j=g&-8;f=a+j|0;l=c[1946]|0;if(a>>>0>>0)ua();n=g&3;if(!((n|0)!=1&a>>>0>>0))ua();h=a+(j|4)|0;o=c[h>>2]|0;if(!(o&1))ua();if(!n){if(b>>>0<256){q=0;i=d;return q|0}if(j>>>0>=(b+4|0)>>>0?(j-b|0)>>>0<=c[2062]<<1>>>0:0){q=a;i=d;return q|0}q=0;i=d;return q|0}if(j>>>0>=b>>>0){f=j-b|0;if(f>>>0<=15){q=a;i=d;return q|0}c[e>>2]=g&1|b|2;c[a+(b+4)>>2]=f|3;c[h>>2]=c[h>>2]|1;pe(a+b|0,f);q=a;i=d;return q|0}if((f|0)==(c[1948]|0)){f=(c[1945]|0)+j|0;if(f>>>0<=b>>>0){q=0;i=d;return q|0}q=f-b|0;c[e>>2]=g&1|b|2;c[a+(b+4)>>2]=q|1;c[1948]=a+b;c[1945]=q;q=a;i=d;return q|0}if((f|0)==(c[1947]|0)){h=(c[1944]|0)+j|0;if(h>>>0>>0){q=0;i=d;return q|0}f=h-b|0;if(f>>>0>15){c[e>>2]=g&1|b|2;c[a+(b+4)>>2]=f|1;c[a+h>>2]=f;q=a+(h+4)|0;c[q>>2]=c[q>>2]&-2;b=a+b|0}else{c[e>>2]=g&1|h|2;b=a+(h+4)|0;c[b>>2]=c[b>>2]|1;b=0;f=0}c[1944]=f;c[1947]=b;q=a;i=d;return q|0}if(o&2){q=0;i=d;return q|0}h=(o&-8)+j|0;if(h>>>0>>0){q=0;i=d;return q|0}g=h-b|0;n=o>>>3;do if(o>>>0>=256){m=c[a+(j+24)>>2]|0;o=c[a+(j+12)>>2]|0;do if((o|0)==(f|0)){o=a+(j+20)|0;n=c[o>>2]|0;if(!n){o=a+(j+16)|0;n=c[o>>2]|0;if(!n){k=0;break}}while(1){q=n+20|0;p=c[q>>2]|0;if(p){n=p;o=q;continue}q=n+16|0;p=c[q>>2]|0;if(!p)break;else{n=p;o=q}}if(o>>>0>>0)ua();else{c[o>>2]=0;k=n;break}}else{n=c[a+(j+8)>>2]|0;if(n>>>0>>0)ua();p=n+12|0;if((c[p>>2]|0)!=(f|0))ua();l=o+8|0;if((c[l>>2]|0)==(f|0)){c[p>>2]=o;c[l>>2]=n;k=o;break}else ua()}while(0);if(m){l=c[a+(j+28)>>2]|0;n=8072+(l<<2)|0;if((f|0)==(c[n>>2]|0)){c[n>>2]=k;if(!k){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();l=m+16|0;if((c[l>>2]|0)==(f|0))c[l>>2]=k;else c[m+20>>2]=k;if(!k)break}if(k>>>0<(c[1946]|0)>>>0)ua();c[k+24>>2]=m;f=c[a+(j+16)>>2]|0;do if(f)if(f>>>0<(c[1946]|0)>>>0)ua();else{c[k+16>>2]=f;c[f+24>>2]=k;break}while(0);f=c[a+(j+20)>>2]|0;if(f)if(f>>>0<(c[1946]|0)>>>0)ua();else{c[k+20>>2]=f;c[f+24>>2]=k;break}}}else{k=c[a+(j+8)>>2]|0;j=c[a+(j+12)>>2]|0;o=7808+(n<<1<<2)|0;if((k|0)!=(o|0)){if(k>>>0>>0)ua();if((c[k+12>>2]|0)!=(f|0))ua()}if((j|0)==(k|0)){c[1942]=c[1942]&~(1<>>0>>0)ua();l=j+8|0;if((c[l>>2]|0)==(f|0))m=l;else ua()}else m=j+8|0;c[k+12>>2]=j;c[m>>2]=k}while(0);if(g>>>0<16){c[e>>2]=h|c[e>>2]&1|2;q=a+(h|4)|0;c[q>>2]=c[q>>2]|1;q=a;i=d;return q|0}else{c[e>>2]=c[e>>2]&1|b|2;c[a+(b+4)>>2]=g|3;q=a+(h|4)|0;c[q>>2]=c[q>>2]|1;pe(a+b|0,g);q=a;i=d;return q|0}return 0}function pe(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=i;h=a+b|0;l=c[a+4>>2]|0;do if(!(l&1)){p=c[a>>2]|0;if(!(l&3)){i=d;return}l=a+(0-p)|0;m=p+b|0;q=c[1946]|0;if(l>>>0>>0)ua();if((l|0)==(c[1947]|0)){e=a+(b+4)|0;if((c[e>>2]&3|0)!=3){e=l;n=m;break}c[1944]=m;c[e>>2]=c[e>>2]&-2;c[a+(4-p)>>2]=m|1;c[h>>2]=m;i=d;return}s=p>>>3;if(p>>>0<256){e=c[a+(8-p)>>2]|0;n=c[a+(12-p)>>2]|0;o=7808+(s<<1<<2)|0;if((e|0)!=(o|0)){if(e>>>0>>0)ua();if((c[e+12>>2]|0)!=(l|0))ua()}if((n|0)==(e|0)){c[1942]=c[1942]&~(1<>>0>>0)ua();o=n+8|0;if((c[o>>2]|0)==(l|0))r=o;else ua()}else r=n+8|0;c[e+12>>2]=n;c[r>>2]=e;e=l;n=m;break}r=c[a+(24-p)>>2]|0;t=c[a+(12-p)>>2]|0;do if((t|0)==(l|0)){u=16-p|0;t=a+(u+4)|0;s=c[t>>2]|0;if(!s){t=a+u|0;s=c[t>>2]|0;if(!s){o=0;break}}while(1){u=s+20|0;v=c[u>>2]|0;if(v){s=v;t=u;continue}v=s+16|0;u=c[v>>2]|0;if(!u)break;else{s=u;t=v}}if(t>>>0>>0)ua();else{c[t>>2]=0;o=s;break}}else{s=c[a+(8-p)>>2]|0;if(s>>>0>>0)ua();u=s+12|0;if((c[u>>2]|0)!=(l|0))ua();q=t+8|0;if((c[q>>2]|0)==(l|0)){c[u>>2]=t;c[q>>2]=s;o=t;break}else ua()}while(0);if(r){q=c[a+(28-p)>>2]|0;s=8072+(q<<2)|0;if((l|0)==(c[s>>2]|0)){c[s>>2]=o;if(!o){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();q=r+16|0;if((c[q>>2]|0)==(l|0))c[q>>2]=o;else c[r+20>>2]=o;if(!o){e=l;n=m;break}}if(o>>>0<(c[1946]|0)>>>0)ua();c[o+24>>2]=r;p=16-p|0;q=c[a+p>>2]|0;do if(q)if(q>>>0<(c[1946]|0)>>>0)ua();else{c[o+16>>2]=q;c[q+24>>2]=o;break}while(0);p=c[a+(p+4)>>2]|0;if(p)if(p>>>0<(c[1946]|0)>>>0)ua();else{c[o+20>>2]=p;c[p+24>>2]=o;e=l;n=m;break}else{e=l;n=m}}else{e=l;n=m}}else{e=a;n=b}while(0);l=c[1946]|0;if(h>>>0>>0)ua();m=a+(b+4)|0;o=c[m>>2]|0;if(!(o&2)){if((h|0)==(c[1948]|0)){v=(c[1945]|0)+n|0;c[1945]=v;c[1948]=e;c[e+4>>2]=v|1;if((e|0)!=(c[1947]|0)){i=d;return}c[1947]=0;c[1944]=0;i=d;return}if((h|0)==(c[1947]|0)){v=(c[1944]|0)+n|0;c[1944]=v;c[1947]=e;c[e+4>>2]=v|1;c[e+v>>2]=v;i=d;return}n=(o&-8)+n|0;m=o>>>3;do if(o>>>0>=256){k=c[a+(b+24)>>2]|0;m=c[a+(b+12)>>2]|0;do if((m|0)==(h|0)){o=a+(b+20)|0;m=c[o>>2]|0;if(!m){o=a+(b+16)|0;m=c[o>>2]|0;if(!m){j=0;break}}while(1){q=m+20|0;p=c[q>>2]|0;if(p){m=p;o=q;continue}p=m+16|0;q=c[p>>2]|0;if(!q)break;else{m=q;o=p}}if(o>>>0>>0)ua();else{c[o>>2]=0;j=m;break}}else{o=c[a+(b+8)>>2]|0;if(o>>>0>>0)ua();l=o+12|0;if((c[l>>2]|0)!=(h|0))ua();p=m+8|0;if((c[p>>2]|0)==(h|0)){c[l>>2]=m;c[p>>2]=o;j=m;break}else ua()}while(0);if(k){l=c[a+(b+28)>>2]|0;m=8072+(l<<2)|0;if((h|0)==(c[m>>2]|0)){c[m>>2]=j;if(!j){c[1943]=c[1943]&~(1<>>0<(c[1946]|0)>>>0)ua();l=k+16|0;if((c[l>>2]|0)==(h|0))c[l>>2]=j;else c[k+20>>2]=j;if(!j)break}if(j>>>0<(c[1946]|0)>>>0)ua();c[j+24>>2]=k;h=c[a+(b+16)>>2]|0;do if(h)if(h>>>0<(c[1946]|0)>>>0)ua();else{c[j+16>>2]=h;c[h+24>>2]=j;break}while(0);h=c[a+(b+20)>>2]|0;if(h)if(h>>>0<(c[1946]|0)>>>0)ua();else{c[j+20>>2]=h;c[h+24>>2]=j;break}}}else{j=c[a+(b+8)>>2]|0;a=c[a+(b+12)>>2]|0;b=7808+(m<<1<<2)|0;if((j|0)!=(b|0)){if(j>>>0>>0)ua();if((c[j+12>>2]|0)!=(h|0))ua()}if((a|0)==(j|0)){c[1942]=c[1942]&~(1<>>0>>0)ua();b=a+8|0;if((c[b>>2]|0)==(h|0))k=b;else ua()}else k=a+8|0;c[j+12>>2]=a;c[k>>2]=j}while(0);c[e+4>>2]=n|1;c[e+n>>2]=n;if((e|0)==(c[1947]|0)){c[1944]=n;i=d;return}}else{c[m>>2]=o&-2;c[e+4>>2]=n|1;c[e+n>>2]=n}a=n>>>3;if(n>>>0<256){b=a<<1;h=7808+(b<<2)|0;j=c[1942]|0;a=1<>2]|0;if(a>>>0<(c[1946]|0)>>>0)ua();else{g=b;f=a}}else{c[1942]=j|a;g=7808+(b+2<<2)|0;f=h}c[g>>2]=e;c[f+12>>2]=e;c[e+8>>2]=f;c[e+12>>2]=h;i=d;return}f=n>>>8;if(f)if(n>>>0>16777215)f=31;else{u=(f+1048320|0)>>>16&8;v=f<>>16&4;v=v<>>16&2;f=14-(t|u|f)+(v<>>15)|0;f=n>>>(f+7|0)&1|f<<1}else f=0;a=8072+(f<<2)|0;c[e+28>>2]=f;c[e+20>>2]=0;c[e+16>>2]=0;h=c[1943]|0;g=1<>2]=e;c[e+24>>2]=a;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}g=c[a>>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;a:do if((c[g+4>>2]&-8|0)!=(n|0)){f=n<>>31<<2)+16|0;g=c[h>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(n|0))break a;else{f=f<<1;a=g}}if(h>>>0<(c[1946]|0)>>>0)ua();c[h>>2]=e;c[e+24>>2]=a;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}while(0);f=g+8|0;a=c[f>>2]|0;h=c[1946]|0;if(g>>>0>>0)ua();if(a>>>0>>0)ua();c[a+12>>2]=e;c[f>>2]=e;c[e+8>>2]=a;c[e+12>>2]=g;c[e+24>>2]=0;i=d;return}function qe(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;if(!d){h=0;i=f;return h|0}while(1){g=a[b>>0]|0;h=a[c>>0]|0;if(g<<24>>24!=h<<24>>24)break;d=d+ -1|0;if(!d){b=0;e=5;break}else{b=b+1|0;c=c+1|0}}if((e|0)==5){i=f;return b|0}h=(g&255)-(h&255)|0;i=f;return h|0}function re(){}function se(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>c;return a>>>c|(b&(1<>c-32|0}function te(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=b-d-(c>>>0>a>>>0|0)>>>0;return(D=b,a-c>>>0|0)|0}function ue(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return(D=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function ve(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;i=b&3;h=d|d<<8|d<<16|d<<24;g=f&~3;if(i){i=b+4-i|0;while((b|0)<(i|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function we(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b<>>32-c;return a<=4096)return ya(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function ye(b){b=b|0;var c=0;c=b;while(a[c>>0]|0)c=c+1|0;return c-b|0}function ze(a){a=a|0;return(a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function Ae(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Be(b){b=b|0;var c=0;c=a[n+(b>>>24)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[n+(b&255)>>0]|0)+24|0}function Ce(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function De(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=$(d,f)|0;e=a>>>16;d=(c>>>16)+($(d,e)|0)|0;b=b>>>16;a=$(b,f)|0;return(D=(d>>>16)+($(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function Ee(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=te(j^a,i^b,j,i)|0;g=D;b=f^j;a=e^i;a=te((Je(h,g,te(f^c,e^d,f,e)|0,D,0)|0)^b,D^a,b,a)|0;return a|0}function Fe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;b=te(h^a,g^b,h,g)|0;a=D;Je(b,a,te(l^d,k^e,l,k)|0,D,j)|0;a=te(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;b=D;i=f;return(D=b,a)|0}function Ge(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;a=De(e,f)|0;c=D;return(D=($(b,f)|0)+($(d,e)|0)+c|c&0,a|0|0)|0}function He(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=Je(a,b,c,d,0)|0;return a|0}function Ie(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;Je(a,b,d,e,f)|0;i=g;return(D=c[f+4>>2]|0,c[f>>2]|0)|0}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=a;j=b;i=j;l=d;g=e;k=g;if(!i){g=(f|0)!=0;if(!k){if(g){c[f>>2]=(h>>>0)%(l>>>0);c[f+4>>2]=0}k=0;m=(h>>>0)/(l>>>0)>>>0;return(D=k,m)|0}else{if(!g){l=0;m=0;return(D=l,m)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;l=0;m=0;return(D=l,m)|0}}m=(k|0)==0;do if(l){if(!m){k=(Be(k|0)|0)-(Be(i|0)|0)|0;if(k>>>0<=31){m=k+1|0;l=31-k|0;a=k-31>>31;j=m;b=h>>>(m>>>0)&a|i<>>(m>>>0)&a;k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;l=0;m=0;return(D=l,m)|0}k=l-1|0;if(k&l){l=(Be(l|0)|0)+33-(Be(i|0)|0)|0;p=64-l|0;m=32-l|0;n=m>>31;o=l-32|0;a=o>>31;j=l;b=m-1>>31&i>>>(o>>>0)|(i<>>(l>>>0))&a;a=a&i>>>(l>>>0);k=h<>>(o>>>0))&n|h<>31;break}if(f){c[f>>2]=k&h;c[f+4>>2]=0}if((l|0)==1){o=j|b&0;p=a|0|0;return(D=o,p)|0}else{p=Ce(l|0)|0;o=i>>>(p>>>0)|0;p=i<<32-p|h>>>(p>>>0)|0;return(D=o,p)|0}}else{if(m){if(f){c[f>>2]=(i>>>0)%(l>>>0);c[f+4>>2]=0}o=0;p=(i>>>0)/(l>>>0)>>>0;return(D=o,p)|0}if(!h){if(f){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(k>>>0)}o=0;p=(i>>>0)/(k>>>0)>>>0;return(D=o,p)|0}l=k-1|0;if(!(l&k)){if(f){c[f>>2]=a|0;c[f+4>>2]=l&i|b&0}o=0;p=i>>>((Ce(k|0)|0)>>>0);return(D=o,p)|0}k=(Be(k|0)|0)-(Be(i|0)|0)|0;if(k>>>0<=30){a=k+1|0;l=31-k|0;j=a;b=i<>>(a>>>0);a=i>>>(a>>>0);k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return(D=o,p)|0}while(0);if(!j){g=l;e=0;i=0}else{h=d|0|0;g=g|e&0;e=ue(h,g,-1,-1)|0;d=D;i=0;do{m=l;l=k>>>31|l<<1;k=i|k<<1;m=b<<1|m>>>31|0;n=b>>>31|a<<1|0;te(e,d,m,n)|0;p=D;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;b=te(m,n,o&h,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&g)|0;a=D;j=j-1|0}while((j|0)!=0);g=l;e=0}h=0;if(f){c[f>>2]=b;c[f+4>>2]=a}o=(k|0)>>>31|(g|h)<<1|(h<<1|k>>>31)&0|e;p=(k<<1|0>>>31)&-2|i;return(D=o,p)|0}function Ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ea[a&1](b|0,c|0,d|0)|0}function Le(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;Fa[a&1](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function Me(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;Ga[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function Ne(a,b,c,d,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;Ha[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0,n|0)}function Oe(a,b){a=a|0;b=b|0;Ia[a&1](b|0)}function Pe(a,b,c){a=a|0;b=b|0;c=c|0;Ja[a&15](b|0,c|0)}function Qe(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ka[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Re(a,b){a=a|0;b=b|0;return La[a&7](b|0)|0}function Se(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ma[a&7](b|0,c|0,d|0)}function Te(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;Na[a&7](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function Ue(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Oa[a&1](b|0,c|0,d|0,e|0)|0}function Ve(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Pa[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function We(a,b,c){a=a|0;b=b|0;c=c|0;return Qa[a&1](b|0,c|0)|0}function Xe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Ra[a&1](b|0,c|0,d|0,e|0,f|0)|0}function Ye(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Sa[a&15](b|0,c|0,d|0,e|0)}function Ze(a,b,c){a=a|0;b=b|0;c=c|0;aa(0);return 0}function _e(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;aa(1)}function $e(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;aa(2)}function af(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;aa(3)}function bf(a){a=a|0;aa(4)}function cf(a,b){a=a|0;b=b|0;aa(5)}function df(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(6);return 0}function ef(a){a=a|0;aa(7);return 0}function ff(a,b,c){a=a|0;b=b|0;c=c|0;aa(8)}function gf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;aa(9)}function hf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(10);return 0}function jf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(11)}function kf(a,b){a=a|0;b=b|0;aa(12);return 0}function lf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;aa(13);return 0}function mf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(14)} // EMSCRIPTEN_END_FUNCS -var Ea=[Ye,yd];var Fa=[Ze,dd];var Ga=[_e,kb,lb,mb,Pc,gd,hd,_e];var Ha=[$e,ed,fd,$e];var Ia=[af,hc];var Ja=[bf,Wc,$c,ad,bd,cd,rd,Vd,de,bf,bf,bf,bf,bf,bf,bf];var Ka=[cf,wd];var La=[df,ec,gc,Xd,Wd,df,df,df];var Ma=[ef,Uc,Vc,Xc,Yc,Zc,_c,ef];var Na=[ff,Ac,Bc,Cc,Dc,ff,ff,ff];var Oa=[gf,fc];var Pa=[hf,zc,id,jd];var Qa=[jf,kc];var Ra=[kf,xd];var Sa=[lf,rc,sc,tc,uc,vc,wc,xc,yc,Qc,Rc,Sc,Tc,lf,lf,lf];return{_i64Subtract:se,_free:le,_bpg_decoder_start:fb,_realloc:me,_i64Add:te,_bpg_decoder_open:gb,_bitshift64Ashr:re,_memset:ue,_bpg_decoder_close:jb,_strlen:xe,_malloc:ke,_memcpy:we,_bpg_decoder_get_line:cb,_bpg_decoder_get_info:bb,_llvm_bswap_i32:ye,_bitshift64Shl:ve,runPostSets:qe,stackAlloc:Ta,stackSave:Ua,stackRestore:Va,setThrew:Wa,setTempRet0:Za,getTempRet0:_a,dynCall_iiii:Je,dynCall_viiiiiiiiii:Ke,dynCall_viiiiiii:Le,dynCall_viiiiiiiiiiiii:Me,dynCall_vi:Ne,dynCall_vii:Oe,dynCall_iiiiiii:Pe,dynCall_ii:Qe,dynCall_viii:Re,dynCall_viiiiiiii:Se,dynCall_iiiii:Te,dynCall_viiiiii:Ue,dynCall_iii:Ve,dynCall_iiiiii:We,dynCall_viiii:Xe}}) +var Ea=[Ze,zd];var Fa=[_e,ed];var Ga=[$e,lb,mb,nb,Qc,hd,id,$e];var Ha=[af,fd,gd,af];var Ia=[bf,ic];var Ja=[cf,Xc,ad,bd,cd,dd,sd,Wd,ee,cf,cf,cf,cf,cf,cf,cf];var Ka=[df,xd];var La=[ef,fc,hc,Yd,Xd,ef,ef,ef];var Ma=[ff,Vc,Wc,Yc,Zc,_c,$c,ff];var Na=[gf,Bc,Cc,Dc,Ec,gf,gf,gf];var Oa=[hf,gc];var Pa=[jf,Ac,jd,kd];var Qa=[kf,lc];var Ra=[lf,yd];var Sa=[mf,sc,tc,uc,vc,wc,xc,yc,zc,Rc,Sc,Tc,Uc,mf,mf,mf];return{_i64Subtract:te,_free:me,_bpg_decoder_decode:hb,_bpg_decoder_start:fb,_realloc:ne,_i64Add:ue,_bpg_decoder_open:gb,_bitshift64Ashr:se,_memset:ve,_bpg_decoder_close:jb,_strlen:ye,_malloc:le,_memcpy:xe,_bpg_decoder_get_line:cb,_bpg_decoder_get_info:bb,_llvm_bswap_i32:ze,_bitshift64Shl:we,runPostSets:re,stackAlloc:Ta,stackSave:Ua,stackRestore:Va,setThrew:Wa,setTempRet0:Za,getTempRet0:_a,dynCall_iiii:Ke,dynCall_viiiiiiiiii:Le,dynCall_viiiiiii:Me,dynCall_viiiiiiiiiiiii:Ne,dynCall_vi:Oe,dynCall_vii:Pe,dynCall_iiiiiii:Qe,dynCall_ii:Re,dynCall_viii:Se,dynCall_viiiiiiii:Te,dynCall_iiiii:Ue,dynCall_viiiiii:Ve,dynCall_iii:We,dynCall_iiiiii:Xe,dynCall_viiii:Ye}}) // EMSCRIPTEN_END_ASM -(r.Ga,r.Ha,N),cb=r._i64Subtract=T._i64Subtract,Da=r._free=T._free;r._bpg_decoder_start=T._bpg_decoder_start;r._realloc=T._realloc;var db=r._i64Add=T._i64Add;r._bpg_decoder_open=T._bpg_decoder_open;var ab=r._bitshift64Ashr=T._bitshift64Ashr,eb=r._memset=T._memset;r._bpg_decoder_close=T._bpg_decoder_close; -var lb=r._strlen=T._strlen,Ba=r._malloc=T._malloc,hb=r._memcpy=T._memcpy;r._bpg_decoder_get_line=T._bpg_decoder_get_line;r._bpg_decoder_get_info=T._bpg_decoder_get_info;var mb=r._llvm_bswap_i32=T._llvm_bswap_i32,fb=r._bitshift64Shl=T._bitshift64Shl;r.runPostSets=T.runPostSets;r.dynCall_iiii=T.dynCall_iiii;r.dynCall_viiiiiiiiii=T.dynCall_viiiiiiiiii;r.dynCall_viiiiiii=T.dynCall_viiiiiii;r.dynCall_viiiiiiiiiiiii=T.dynCall_viiiiiiiiiiiii;r.dynCall_vi=T.dynCall_vi;r.dynCall_vii=T.dynCall_vii; -r.dynCall_iiiiiii=T.dynCall_iiiiiii;r.dynCall_ii=T.dynCall_ii;r.dynCall_viii=T.dynCall_viii;r.dynCall_viiiiiiii=T.dynCall_viiiiiiii;r.dynCall_iiiii=T.dynCall_iiiii;r.dynCall_viiiiii=T.dynCall_viiiiii;r.dynCall_iii=T.dynCall_iii;r.dynCall_iiiiii=T.dynCall_iiiiii;r.dynCall_viiii=T.dynCall_viiii;y.R=T.stackAlloc;y.fa=T.stackSave;y.xa=T.stackRestore;y.cb=T.setTempRet0;y.Ua=T.getTempRet0;function U(a,c){a!=k&&("number"==typeof a?this.A(a):c==k&&"string"!=typeof a?this.q(a,256):this.q(a,c))} -function V(){return new U(k)}function pb(a,c){var b=qb[a.charCodeAt(c)];return b==k?-1:b}function rb(a){var c=V();c.H(a);return c}function W(a,c){this.n=a|0;this.p=c|0}W.ja={};W.H=function(a){if(-128<=a&&128>a){var c=W.ja[a];if(c)return c}c=new W(a|0,0>a?-1:0);-128<=a&&128>a&&(W.ja[a]=c);return c};W.A=function(a){return isNaN(a)||!isFinite(a)?W.ZERO:a<=-W.la?W.MIN_VALUE:a+1>=W.la?W.MAX_VALUE:0>a?W.A(-a).o():new W(a%W.F|0,a/W.F|0)};W.D=function(a,c){return new W(a,c)}; -W.q=function(a,c){0==a.length&&e(Error("number format error: empty string"));var b=c||10;(2>b||36h?(h=W.A(Math.pow(b,h)),g=g.multiply(h).add(W.A(i))):(g=g.multiply(d),g=g.add(W.A(i)))}return g};W.U=65536; -W.hb=16777216;W.F=W.U*W.U;W.ib=W.F/2;W.jb=W.F*W.U;W.Da=W.F*W.F;W.la=W.Da/2;W.ZERO=W.H(0);W.ONE=W.H(1);W.ka=W.H(-1);W.MAX_VALUE=W.D(-1,2147483647);W.MIN_VALUE=W.D(0,-2147483648);W.Ca=W.H(16777216);m=W.prototype;m.S=function(){return this.p*W.F+this.Sa()}; -m.toString=function(a){a=a||10;(2>a||36f.length;)f="0"+f;d=""+f+d}};m.Sa=function(){return 0<=this.n?this.n:W.F+this.n};m.J=function(){return 0==this.p&&0==this.n}; -m.r=function(){return 0>this.p};m.ua=function(){return 1==(this.n&1)};m.u=function(a){return this.p==a.p&&this.n==a.n};m.wa=function(){return 0>this.$(W.Ca)};m.Va=function(a){return 0>>16,b=this.p&65535,d=this.n>>>16,g=a.p>>>16,f=a.p&65535,h=a.n>>>16,i;i=0+((this.n&65535)+(a.n&65535));a=0+(i>>>16);a+=d+h;d=0+(a>>>16);d+=b+f;b=0+(d>>>16);b=b+(c+g)&65535;return W.D((a&65535)<<16|i&65535,b<<16|d&65535)};m.M=function(a){return this.add(a.o())}; -m.multiply=function(a){if(this.J()||a.J())return W.ZERO;if(this.u(W.MIN_VALUE))return a.ua()?W.MIN_VALUE:W.ZERO;if(a.u(W.MIN_VALUE))return this.ua()?W.MIN_VALUE:W.ZERO;if(this.r())return a.r()?this.o().multiply(a.o()):this.o().multiply(a).o();if(a.r())return this.multiply(a.o()).o();if(this.wa()&&a.wa())return W.A(this.S()*a.S());var c=this.p>>>16,b=this.p&65535,d=this.n>>>16,g=this.n&65535,f=a.p>>>16,h=a.p&65535,i=a.n>>>16,a=a.n&65535,p,n,v,q;q=0+g*a;v=0+(q>>>16);v+=d*a;n=0+(v>>>16);v=(v&65535)+ -g*i;n+=v>>>16;v&=65535;n+=b*a;p=0+(n>>>16);n=(n&65535)+d*i;p+=n>>>16;n&=65535;n+=g*h;p+=n>>>16;n&=65535;p=p+(c*a+b*i+d*h+g*f)&65535;return W.D(v<<16|q&65535,p<<16|n)}; -m.I=function(a){a.J()&&e(Error("division by zero"));if(this.J())return W.ZERO;if(this.u(W.MIN_VALUE)){if(a.u(W.ONE)||a.u(W.ka))return W.MIN_VALUE;if(a.u(W.MIN_VALUE))return W.ONE;var c=this.eb().I(a).shiftLeft(1);if(c.u(W.ZERO))return a.r()?W.ONE:W.ka;var b=this.M(a.multiply(c));return c.add(b.I(a))}if(a.u(W.MIN_VALUE))return W.ZERO;if(this.r())return a.r()?this.o().I(a.o()):this.o().I(a).o();if(a.r())return this.I(a.o()).o();for(var d=W.ZERO,b=this;b.Wa(a);){for(var c=Math.max(1,Math.floor(b.S()/ -a.S())),g=Math.ceil(Math.log(c)/Math.LN2),g=48>=g?1:Math.pow(2,g-48),f=W.A(c),h=f.multiply(a);h.r()||h.Va(b);)c-=g,f=W.A(c),h=f.multiply(a);f.J()&&(f=W.ONE);d=d.add(f);b=b.M(h)}return d};m.Ya=function(){return W.D(~this.n,~this.p)};m.shiftLeft=function(a){a&=63;if(0==a)return this;var c=this.n;return 32>a?W.D(c<>>32-a):W.D(0,c<a?W.D(this.n>>>a|c<<32-a,c>>a):W.D(c>>a-32,0<=c?0:-1)};m=U.prototype; -m.X=function(a,c,b,d){for(var g=0,f=0;0<=--d;){var h=a*this[g++]+c[b]+f,f=Math.floor(h/67108864);c[b++]=h&67108863}return f};m.k=26;m.C=67108863;m.L=67108864;m.Aa=Math.pow(2,52);m.ha=26;m.ia=0;var qb=[],Y,Z;Y=48;for(Z=0;9>=Z;++Z)qb[Y++]=Z;Y=97;for(Z=10;36>Z;++Z)qb[Y++]=Z;Y=65;for(Z=10;36>Z;++Z)qb[Y++]=Z;m=U.prototype;m.copyTo=function(a){for(var c=this.e-1;0<=c;--c)a[c]=this[c];a.e=this.e;a.g=this.g};m.H=function(a){this.e=1;this.g=0>a?-1:0;0a?this[0]=a+DV:this.e=0}; -m.q=function(a,c){var b;if(16==c)b=4;else if(8==c)b=3;else if(256==c)b=8;else if(2==c)b=1;else if(32==c)b=5;else if(4==c)b=2;else{this.Ra(a,c);return}this.g=this.e=0;for(var d=a.length,g=l,f=0;0<=--d;){var h=8==b?a[d]&255:pb(a,d);0>h?"-"==a.charAt(d)&&(g=j):(g=l,0==f?this[this.e++]=h:f+b>this.k?(this[this.e-1]|=(h&(1<>this.k-f):this[this.e-1]|=h<=this.k&&(f-=this.k))}8==b&&0!=(a[0]&128)&&(this.g=-1,0>d|h,h=(this[i]&g)<=this.e)c.e=0;else{var d=a%this.k,g=this.k-d,f=(1<>d;for(var h=b+1;h>d;0>=this.k;if(a.e>=this.k;d+=this.g}else{for(d+=this.g;b>=this.k;d-=a.g}c.g=0>d?-1:0;-1>d?c[b++]=this.L+d:0=d.e)){var g=this.abs();if(g.e>>16))i=n,p+=16;if(0!=(n=i>>8))i=n,p+=8;if(0!=(n=i>>4))i=n,p+=4;if(0!=(n=i>>2))i=n,p+=2;0!=i>>1&&(p+=1);i=this.k-p;0>this.ia:0);p=this.Aa/n;n=(1<h&&U.ZERO.B(b,b)}}}}; -m.toString=function(a){if(0>this.g)return"-"+this.o().toString(a);if(16==a)a=4;else if(8==a)a=3;else if(2==a)a=1;else if(32==a)a=5;else if(4==a)a=2;else return this.fb(a);var c=(1<>h))d=j,g="0123456789abcdefghijklmnopqrstuvwxyz".charAt(b);for(;0<=f;)h>(h+=this.k-a)):(b=this[f]>>(h-=a)&c,0>=h&&(h+=this.k,--f)),0this.g?this.o():this};m.O=function(a){var c=this.g-a.g;if(0!=c)return c;var b=this.e,c=b-a.e;if(0!=c)return 0>this.g?-c:c;for(;0<=--b;)if(0!=(c=this[b]-a[b]))return c;return 0};U.ZERO=rb(0);U.ONE=rb(1);m=U.prototype; -m.Ra=function(a,c){this.H(0);c==k&&(c=10);for(var b=this.na(c),d=Math.pow(c,b),g=l,f=0,h=0,i=0;ip?"-"==a.charAt(i)&&0==this.ea()&&(g=j):(h=c*h+p,++f>=b&&(this.pa(d),this.oa(h),h=f=0))}0this.g?-1:0>=this.e||1==this.e&&0>=this[0]?0:1};m.pa=function(a){this[this.e]=this.X(a-1,this,0,this.e);++this.e;this.G()}; -m.oa=function(a){var c=0;if(0!=a){for(;this.e<=c;)this[this.e++]=0;for(this[c]+=a;this[c]>=this.L;)this[c]-=this.L,++c>=this.e&&(this[this.e++]=0),++this[c]}};m.fb=function(a){a==k&&(a=10);if(0==this.ea()||2>a||36this.g){if(1==this.e)return this[0]-this.L;if(0==this.e)return-1}else{if(1==this.e)return this[0];if(0==this.e)return 0}return(this[1]&(1<<32-this.k)-1)<>=this.k;if(a.e>=this.k;d+=this.g}else{for(d+=this.g;b>=this.k;d+=a.g}c.g=0>d?-1:0;0d&&(c[b++]=this.L+d);c.e=b;c.G()}; -var $={abs:function(a,c){var b=new W(a,c),b=b.r()?b.o():b;J[S>>2]=b.n;J[S+4>>2]=b.p},ra:function(){$.Qa||($.Qa=j,$.za=new U,$.za.q("4294967296",10),$.ga=new U,$.ga.q("18446744073709551616",10),$.Db=new U,$.Eb=new U)},Ab:function(a,c){var b=new U;b.q(c.toString(),10);var d=new U;b.Xa(d);b=new U;b.q(a.toString(),10);var g=new U;b.V(d,g);return g},stringify:function(a,c,b){a=(new W(a,c)).toString();b&&"-"==a[0]&&($.ra(),b=new U,b.q(a,10),a=new U,$.ga.V(b,a),a=a.toString(10));return a},q:function(a,c, -b,d,g){$.ra();var f=new U;f.q(a,c);a=new U;a.q(b,10);b=new U;b.q(d,10);g&&0>f.O(U.ZERO)&&(d=new U,f.V($.ga,d),f=d);d=l;0>f.O(a)?(f=a,d=j):0>2]=f.n;J[S+4>>2]=f.p;d&&e("range error")}};if(R)if("function"===typeof r.locateFile?R=r.locateFile(R):r.memoryInitializerPrefixURL&&(R=r.memoryInitializerPrefixURL+R),ba||ea){var sb=r.readBinary(R);L.set(sb,Ha)}else Za(),Browser.qb(R,function(a){L.set(a,Ha);$a()},function(){e("could not load memory initializer "+R)}); -function ia(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}ia.prototype=Error();var tb,ub=k,Ya=function vb(){!r.calledRun&&wb&&xb();r.calledRun||(Ya=vb)}; -r.callMain=r.rb=function(a){function c(){for(var a=0;3>a;a++)d.push(0)}t(0==Q,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");t(0==Na.length,"cannot call main when preRun functions remain to be called");a=a||[];Ta||(Ta=j,P(Oa));var b=a.length+1,d=[K(Wa(r.thisProgram),"i8",0)];c();for(var g=0;g>2];f=f[h+4>>2];r._free(h);b.Ma(a,1);p=r._malloc(4*g);h=b.Oa.createImageData(g,f);v=h.data;i=0;n=r.HEAPU8;g*=4;for(w=0;wa;a++)e.push(0)}z(0==W,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");z(0==Ia.length,"cannot call main when preRun functions remain to be called");a=a||[];Na||(Na=j,V(Ja));var c=a.length+1,e=[P(Qa(n.thisProgram),"i8",0)];d();for(var f=0;fc.R(f,a,a.length))console.log("could not decode image");else{h=c.I(24);c.S(f,h);a=n.HEAPU32;g=a[h>>2];a=a[h+4>>2];c.G(h);c.V(f,1);q=c.I(4*g);h=c.X.createImageData(g,a);C=h.data;i=0;s=n.HEAPU8;g*=4;for(u=0;uyYVkg_xEyy~y(d9g}Vkh#osk>qlrBUr)9tbkVfwUB`1lSN_n$X54Da z3P%YTBc{(dN)w~9g;E3pGAPCQo^gVE!oD{Y;^JHHYOT`?&X&-AZjFU>ueekFB#s|G zakNpA6Na|el+a`7kUb~_n#g_`1Q>2d5i`kDY~b4&Rw%rK3RQ~veM5xu#tQMchNVOl z&dZI%1Me&t#?Kin9L#Tvr&w}_iCqLHLKLcixhGJO@|e941q)P_Ak!#gd?SV)xT69fq+;ydVV&LAc-2) zT$t||dLi2_tL}~hW3cQvZl%<^l7llFEVlCsVC8sU)ts23*x>lfe1&~A|6I%!#H{ly z%ZZgf3GO_ky~0VyK0H|NjO2S2k1o4q*p_EXthqOVKZ3swZ2W2fm)<><+`{6pk#~m- zS;0jOXhI_t7gJ_v5@TDr(CaZroW=afN3gUd*_VvA`~onge~2LRRa9DcR1azy;pIi- z2*bR{>$pN25AVb(&ITK#OIGw}V9yDTgSC2t&y+sI=fDi;&)xeoOsXV6NX;?G-P*Uo zj=;_hK}DtRrTpENeEugQ9>PhE+j@*Ye*FHKMGal`&*fp6CI?6%{_VfD0|FR{Q-Qr< z&hy3(yn#`UejTErT%Xv|*gu4^H0x0XoIFV^RFlQ;#(l-QV# z`ifGJ9O6M8w!1e1V&m+~S7{Nz%pq-+Rd=7o|BNbU4oae#1{k`yAvPdR;eus74aIk+JumHSjNqFU;f#tk*Q9*s8oRW+Cl6BhjBg2jp!~ffzH;U?()mk zN+L<@&AZSf#**}aF!;~=a8)C^Y?v%86w@BrwMT>o3W9l!{@e|Dn94Hvf`#d_V3ETh zgM1@b$@6uknHX}NO%~9H0Mgds?Sx8IYzfgslA^@7vrX|TFkFFCA=nj08K_paQo!=s zCKbJkK%O|SGz=V7L7glA^kv28u;>2VT1j2D6uCP=aa-Q42GKGxkyz!2bbfoCW%;5T zbP7AWys&e*5Gv!OCOD3UnPDG0-E|U(Qg2RcGKt@5UGCyXRf}ni@0j2C1y`UY{kH~; zKgTFz)Pz=oJ>-NS#Zd}A!zW7eg(mU#i|Dr}FaZ(Zx`7rjxRqnGdz%^6EhCt8tnK2{ zjCa4tt3leH?-is~xs@7gqc{OChj@WL4N@s*ATky;JYUGH^EFCkvp5SSQf}Z6di|76KUAHLU&=@&6f=6 zn?I+RHkdejf1Rxj$gu;_aejcl{B{m_BfAuQMv2Gi0$p>(X<@^5gOIFjA6f_T{mJU6 zh@&i=S(ICx0n#1dlVzJiF@-IAZ0H!dYD7`Ta_nKnZ{jLwDD*KRSYh|x_%Cq*QH{%# zrx3CZdjMNTJvtgB%6G-a*ldp|ETy@0&}#G<)_^EsX2AmXc#KWnVwjoS2Cn()+@6dy zhNNk1Ej_q@G6b4lfyVS{PBN2dnZ*BF{clg@8YhGI6zI|@GRe-?tphid-Q>9!m6bX5 zbGv5bazb4;TIrr&mcOu9m%kqZoubcCZ=FFLJ$R?j#bJaW)@t0#X+nfWT#(7uy%Z9m zDV@9$0eb^|tsZszb@3gjIC#**iD33E=h6)sQk&ex_y2 z4h;*>!PwfyVE|xGmYj0M8!5E;(z)u{-<8119mQZEY184PvXH@%zinj!Y>alsc{(K! zRz(LqBRr#IgK?tQv)cZ;fQ0krR>r`!)G z^_Y^KdYw~zCCQ)>e{294hDv!YW{LWJk;l@24;mGowNBfz7MXhCcp?IyT&J$y#ENwk zEHkad+aIb@T2La|=ekn`{DY3O;R16dn+Zai{3)adMYm@u(=pdujFYk5v|TdSkab)l zKE#k~F1_rK-#T`j(l8_;yDst@!_)9h;IFA=r0~#U@o-@=0fthVPz{;X_k|!4@$WU5 zDVcAK8ef`Gq;Dn@JQW89}_Sv`n`YyHtrtdLK-y3AEjKd z6pQqfdP(b1*HD(?C^9$&_6KAR$Z5#5=sZizD(^edz)k+coLOoEc=a-X;}ZSavWU0(ciu z4t`L&)aSFxf`@36g3Y{(tfPxlw$p$>yHa~LO@GQlsvR_$Vm<76@#&}fGNoRW6@$-2 z(~Xi zM5uXC)k&lk_3n3bu?t-O0=3TnW2pIz7EuN z9X3PC1v`J?xqH%^Gbjs0)_Ia!7AUb62 zzj*%wT1%4d2Y3fuBvH&=kCb6ia!_@G$5I3*5EEjKXh_ReyU;<7J|2Ujh9UX(k2Nx# zS*9#-e*IN{twe(Cw@D{VbhW4+TW*AI|F|Cz<0ekD)@-GFDNTP!7F-)q-8#I2Y_zPGv0-Wh6|`?%hmptb5d*rf)IrnIOlRR zy>fHHUTRi*`9twW+}3nqoO&>WJ*iYhcu={LqD-2z8LS@Ovfw59?*j?#` z{0b1dF(oN%hIN4$VN@-s#DltPR4)>Dv(~4M)BH9`oj0K>2$x>e7zDaWTq>f)rTHYJ?71$;W1}_&?Uji@5OFR_h zZjL0Xw{E6PYXI3ksDA$t(!V^Ot3~AR`uo0M0@)?SqL;!4zb*f6-v$mZ{)rM`75d$v zZZNk4#%cLBsEaOSyIBeWB;G*K#)6P?%4wq(0={D7kVH0Ab0VO#GMQoMvhZN|Wm)#( zElJWhB}1>+1b)AbAplt{mKY{c{{1;`Vs)ChC$cP}+&OfEbBq7lelw`^A0MwmOB%1F zQH);^z}(gBUie-|E=&Mpx%2}Q936%k9TYF? z%=Esx8Pa8M%sjt4rEpMmxS9`b?8>L40~w_q4rdN9Uz~Plp|8&Di>n`Ppm_=iveiBo z%IV=PMbTW$VfWvh*4o8dq8@OQcF~y32s=g*jfiMVJjpM`}k47wQI< zy!EAFg^1d6fJ(qV$ArIizu-AZQAr&&Fb z+S5Xneepo|=d*NuETxX#@Tjr*+ghoA_a42EOTumbT=1^{mYG<^teuGAI8}W~<8Qel z0ZqZ59#3eXJvS`KTkSEw`v6TUzk8{$ifl*T4c@{@Om;~;XR|JD-RggXqDHmb6Z= zx3H%|v48J?his>fCfmoFCuD@A{9-=~lKN#Ymt~VbPuNmpzw~#NfE;UB^E=*-uA%m1 z$P@JdYK}-SgP<=N=Lj|MEE34?-;Z#_)(stQEG-wCEGEEGS zaQHBQp1Jxlj6VkLPGUt*H8u|Ze4uqHS!>t~EBmhZkbFkc>&r-*!N~423OftoqIMSI zcu>8ew2w5*0fmgdhc4hxG0$C-`B4P(}@6X^7=zA-lURN^Bh`^Ej~Wcrk|tZkMT$_KKUD*BuAANoyw zo>19+hoM};Wr)Bu2g;nR8#9k!Y-Zb>^?OvHjlbatepoOp<=xSPI6A`ac9VrBsahJ* z9Rtv@gsdD2xFTH5O1e7-px~p)l-?cV2$0WOKaB=#XfIP+M$PQ7|XQo3$MMgF(9+mXg;IxkfdXXg&;= zK{kFIuZ_i!+7ZfQdlphuWo^j3amizZ3NCJze;fWWhoK>otSM4V)YW!zV$+Cc;mtJu zAgy-8datgj=tn9_;RUnzu??H(?XK$0A=2RXHWd}Elf02=GL31Fioca@J@hUDC5r*? zRW7Qu68W2`Zv=>2NAcwxd~Pj0__M(HbPEk1G+w98j&|KW<-=(v?A)NGxvB8(xDMzj zZebtngyo-06vbe!VtQduAYQp~U6ggrF2J~Op`N)Ndj2^%0Pbu-?g*rd_tu3QbfsTL zcS%|!`U0qPkP{D~ZcOgfV-Gx!v|+Fx=&zp#Jhz>9Z;A!vbY?Q2x~7r%8-4CP8@dz< zC7r-10EC#===&Z*1U?!=pORcY9jotmjj<6yFFRtaF5}IuE{?8RU&r*4FPaG$D~<>q zRE-QW09U0p*P}J_*L*M76h&uxgNTLTPkq?63sRfs$1ZW8yf!_TJxmA5(TA%=yK68E zdb*Hyqs5=0Vra0>J2ql|Fn|KDk9c@gUTC^ z#m+m7hkK>_#JI4UD(@e_P!Q;?O0?pE70tk5NU)^Sa}9p1ol$!P$jK#x$WDFt;5Bf9 zAuYIcPx9Dj2zGR)oB`qeSnW5j7Qq^GS6n`!67ICED`8*U3En=#-4g_Jgv#nmlZ5PFg~20m^~b0>mw2B(CNF$7!u(bZj>GFp|b zJHm?ox7??^5Zu*@1?OHhF8~lZGR7I|fOFb+w1+TJxB*O7b09JuY=$$HKgzN+wD>+rXi(=V-&j<~#bn3v4hR zmmgwW#;-qKomr{+>-rIWc64tJYkpJxT-z<1({Q%-_jc~&`LMB%eUd%uIfnMAS6ul0 z{HujoyFz4s8bBc~ZSft^*+MaY(uP~VeDPMeFS?{6bba@@S-6L@yHMkRAEeK&66s2e z6<{A2{q?m5ZWYfQU9h(f@soNSf*fuKl)|X0_0$VVA6YfXQ9a%PqxGUgc-1#w;%W^^ z`k-Fd@V`=(`uM*cjU z#WV`k#5vo#hQ5P;3n+f``5#Ijlt`>&P2~clpBZbA%lXn^MzU(LR{an(W#($zJn94o6fYi`0UGV!n1^|nKs)NBWnfhC@+bIGwQbPnqKJBjc3tapa zy#ZyTp^ZyP$WZG+c>>?3um7C6U@W1#4|07XI)MF8941E?%BNNN!ES6X34Q;a}B=>EOx zG+W;x=0bF+_$=SW)p)pXE)vB;*qGvx&ZczE6{A(x1s*YWeZZ?P%A41J}R7fK78!TOlcsg zP?d=<9B})s1dq@=Wim#=+lttf^svp0F|0hoODv;QcujinBNJr=9ST?hN}wa zdz@qXqNP7cS@PPZu8;F_+t?})Atf1xcQ6YKT^!GoDEECac1;nJ=^yKq>=YI)TlpsC zg8+lMsZ!5VBDz>N)Zoi6rhj>K9x4!z7N5VY(yjWkBBt6O1>Z4Q!GH^4)8uK1`hO=Z z1b|vt^&1h(sp@?N43w)lu1|*S=33Td>X+V4bR}%BULEQ6q-s*xV_RRouOM%&Y%?$4 zY|jJb<2tY+oUO!nPihh?CYJ^;N!I}^hm*R6QYja7Y>`=dCK0L+?&mVxf5+-BkgdyH zcmeK4h2}N-5NCN8ORv3|x_n-alzcwJpCNr=hyvg9*uRk5D;0}Tib9MnjVkOMY&F?y zdk@2zUHW{8mW+sUw5u&>lvD$)p8f!8LwnfvWV-Xwyc%#hVE(4(gZD&=4b5%@rydUc z>qKlGAgt=v#eY(=i5t|_8qHPBV{2No0Pe1kUY~lp(;{r_Dnv#Zex0<$(3Yyp@#J!F zqY~u!Me2A`rgY~JR?Gs-_)!>466My&-bE)7*(jRaCus{C?Qj8zYK2j_gDhktWx(|O z!wWD3XL5JVfEM`^?@sD3QV&<-%!|5<*nJyW&EdOH=1pBpQs2wXlii0!y2FWUnFrQu z>*~mJB_meU?pL<1S6Z(NY zE9BIx%G4UNJeL!W8y*f$Om5?r#a$IIJT|--6DrI^^dSq43_sv=b5VFICfH1Xy>Ep4 zNa3-e@f#(u{iWUw^Zta68m&Ihpsb&A{n<+$1$P_@M?;lKk9;zrO|S(vRWQEAX}J5x zez)wL%^(Sqnttj2#A3iBX!z!{Xt(;80MgbaHn>cg^OGMU9COrto5O}?3(CE|qh(v0 z0rY-N`$~Ku;e-$z5yf*6{y1MNy{Hro1SLi%rhZW{vdAS|DAM(kE`cBf5paKND7WO6 zv8MTdaAz4x_AnOQ9NazDf1@Y~N`&@uD6==iU1{U>9&c%j4Pq{7XUE=x5oWB)7-kkn zrU?5wGpd+9fV;SBLKw6^&;xQfOOF>%^2a82r)=mLyJ4sUDmVhO*{OXh>-sw5N>J*@ z+~WivDkG523J$;yMlicNIntjlH2x!ms+#?@<3T6A4HB=loDI>;jn{kK~5sVt*7r8!6G+1lIQBR{a zV-f(QkcR>iJY&goA8~w^hX>=NSYae*@j)kGEDyBgm8=lg3AB0*0~0^Te5s1toZqR- z5TI14sZEZ$m7tAdi1W+#_Jw$ct<{1A$@Rlrv0*3;coVe4%zF^NXROY|`7lH9tiISz z1PI^V*C%K4|0K9)7pLKz>AeC{D))E|nr1PZf~*_ytTVzSwV9V$?vh+zx~s56OBs-u zzK#1e-zv~?X1hZnk9bcO%(J9h-1iqkgOhBrRLH+-W2}cdZgV-PsXP>DpM`4z#hIYO z$d(bkPN_8$aKy3cQ3vMfukCd0#!Ggz$E+n8*&F~uM9~);X`uogmf_-i-l8+IJX=p}mU+_P(gT$APc( z&8%F|pS9HVSv4tevm77rSzig5NtD&9=ByNrITg|%(Qmub2f;`Mv=pN}0OOS8FxA1; z2R?L1mHqzh^?O68{tA7U0FQQbqPgnL?(m_#%78Hl>x_Zu7V5OrVV`K}Weo(lqK#+2 z&MO=yDzv>uYn>%D0eF;tt?M-6F6hp0Qts~N4$SFODbrz@Vwm>Ud3Wr);MMhfg8Z3Y z*+cu#MvfCVldL}1T9nk_@mAs(T~i1Uxof--{}$(xMuu4)a}7=-Naq*e{?DD+sxyOZ z(KA|XNfdzfrThV@t~@A(`3HDS4G9x>8Hl#gS99OErA{N8p3WH!0|Hhs(y-f`h#ashGSE(kg(fYAv^7A{*L= zCRHLPb-b3c{n>htMV^Ia4J#BXPdge|$(v$G6@Nntox41D=@tnX&A4Oj)hv8z@x@!` z25o{z7ke@`0p2hk@z!W$)Gl91&b~PNlvU@YbmN@-lzBLgwJW}j1&}QZ16Gre-Q6Wd z&62f+pX(I1-YcpUs$&jsI0*UXkXZ3dZmS^`&bSR{U}vvPZ=y3k-p9`HKI(+QU_1q+RWnMf# zhs;~(1q26V$H7R{ZVsZ;(GRX}g-l#sE2I|a{Ip}dxsR6d1r-g7(7QUcc1C^XI&j9`-^c8{u7-zPU(^4y^gBcE&3jHe>c<~u?ZpS@M@hN8^oS#Yutba{ z6H)DoQRsIKezxYROfels04H3rDo1(2-jk#9?se{#)Jk?A?#*^rC*0h>S`hy{-#_}7 zVNDuCLY=zm(Ew3ff<6@i@5$z)lclM}oSBZLYv$FF*xRLkle!)_vFZt4F_@1MZ*E&h zJIJdLm?{D}-M=A(4LaJe5xn*jIvw`-!eU^FWO#xs5-VzpyK6Lh_m(QKgbVywupuoZ zdt0tgEIp+HMK4dNYKieqhL zU$HxD7PWePDR4xP_Dn+HcnBw&eA!(o#4L3mIOUfOHE>k1ka8d^MU*^OquyKUR;aFB z#X{0~gy&2fGSP~LwGcLyT91(+KIn45df;r*aj^h^j)~NF*9 zaVahNfy)L&G3N1FOPbA-Ua%`%U9g5+C=T(#&vdgU6(&;r$bl$F=GUZ?9i)-1?%};b zfl_hx7uY@dmCNUmO$H~wODh}-@qfxo*}S3o)Q!Ux+yIU%aI!rd8P9V*XP0kl|Ek`ez%(0CjUBrA zV;4ius;fZpIuan2$=382ZPgF(1OF0*``ynY9YsT#~X&U@mN>>m`NManNv|&ppHH znv4{~=ejB~jhqigbT%;88s}NxO|C&*Fnl`&FEaXkcY=cPf&Msj3Suvbj*Ea;LM*l) zMsspbo1iH%REhVwh4BvtYQm?GzYanb!UjfZpZy7S|aE*1MS4e%OJgxUK%2I zzVHrSo>N8}{)g$2ly$4V+6EZ>7TkF9+ayFyrfOUi_{_%PGPdx+GmW zEjK!6A(C!-XoPOB?t03uorrpRN|Y}`A(?_5%Wk)>zlFT$>#~4ccQeUCHzd_0c5{YX zdD;eCX@U%f@z9h}WyDe}|CBbWu)}}rEY4_IDn5iPipr=eJyGg=(^7|U6c$VDv)b6j zh$^>`IU_Ym=!bchrd`0{vzLSyQC}=h5BGiSPe~fNYZkt^_!J^CD0@yMSHtveeH#xi;*=(v`LTn6OS_k29v;kM0 zmhKtuW+0)IHL^$;G_8U6yVx|!Xxc7?YVRYHc;1|8sEJu;$}tLFuF^YRme9U)(a1;K??s0f_+UB(4lh=&ysaRnx8a(kG`MQ0>H^et1%?mr{9&!+l5Ldf=^Jl#I{nWek;+Y()Ia3dBp_x$HjkaN>Vy&&jIO_St9>_FlsD)LGNwn% z%PJPk0^VnxnYa$Ne4mH`p3)3$b(ZK91Z)DPOt>@%3!C;Il znYw%1t3!09YB#!n4%Db4ey|02LVRk}5dP|Tx9_-f_zULP|K`Pi`B@B>{qdQS_^*k~ z60oX2UPfNp(nt~B9s}4x+@z!EBv{iQI5Mg|j`KPIhn{^3{V_)e9}PcLH&@%N#7=={HTNclmW17V|GLB;L=O3)e`_TKVzn04*6W}$O4wXP-z!*(4{SO z%3}>l=+v!VN(j{V#550V9EchVi=a*78gj89u03YE;RGrk?OVindA3G5GKIR%R`Ld@ z3Yq&n_~b_FJwAyz#6w{p$xfa}k~mTVNb)IEqxb(CjW9WT)Sm2@O43c76USy0Uh~+_ zbFi{3(ubHgm04R~a_?~a!OO8Ms%bmOTa^4~G!4C!>{LvTw)HhD&qa%DC^#X>RW8xz z2_QAY4P}F$0Q_S5=wQvzx&L7VTDbkMe_P}cx$|Uo+fGJ3*ynqTM2}QZiGYzPZ3Y*= zG4q@(VJ^jNUIoqjBVwY~nU=MJ$c};4Om|RQ%O(b^y8q%R;zdQ6z$LtyMN?cQx`kaP zB&uL&>^>`v%da5JJlM(e%gro4Hyl}>YwQn~II$&1 zgU<-9%%pawoOVQjjrK zG%6W&BLv;Vz!MYe5}Gmxk-70|K6)Ia@O66+D*m;}jN}Erl(#9r>Q@nuplb|XIL9dO z!_?qcD2eBBhJvH-u!W;y;v&IKR8->aOkHs=;rsk#>a>}_4icUV+D9W3C;LmEua$Rg zIAl6;umzA8tAM?}Ql=#o#Dhk3m)PWTaEzS`TbpFw4mo@RqY~#P>PHpIwn;}`1RFWZ zF-@0oK~Rs#7vx)S{KLB*o{%nz+~c(?8V8bZ&P-4cVlJ7)x|5ksg2v#Y{?7y;Htn8% zS*YQ&n9<$~AFHw7a<>~WG$c)*Q0;Sv%?q2A*5bqbFfzaTpZZOIrje$Dh_FP(KTW|w zk%lZcx|2RL$zmc5r=lSg@Rf@UtvMvudjj$Iz8^egc5EUF>}pG4_RqmuG$oPj=vUwkA0 zJACjO!@B@sau?`aPMs#DLl_6H!jhuxRGZGoTEy~W;%v9zRa6zs$;)kSavWGc2F@$D z=&T`!0^kc-uMY72($+EkR!BlW(J#pJUInV_$6B@1Qu2u|>t;Xu76jR@bgD+uVQ8>| zA$`CQ<~oA)1p2Cto;j!%Phe+EyN&i-kq3M?1Ziyz&m5NKL^u67rW~mWW zPCBQfX71F@B1?Xs%mXq31o!b1HfRuxy(86?wqcJ_Z~imy29(`0SvLfFpIM~}WI4EL zJS=v<$flU{bM zm5CCana;TKReeZNy5%FWcQyHKSQ|1JksSw`6XA+@ zq*y__#)RHu-||zJp~lQ&$8WMhaY1{V$e&Ms%H=&RGPz%+u;BLN+OmflrfnBxkKuMq z^&Y+)(fF(BML)Cl9!MZRhA3@|#0{OLFpH=#@ zJ`H}FjQjd(Q^V15i`v`Fg5~yewhriqh{((+IKJH+xjlagt|K`&ObgWUph57E`ys0f zIC4_82}*qN0R@6n3edIq3l1S0@<6+K92_!#))7!oNns5<$W#l{Nx(z7yir=>0p7W! zTPYk8uDEw}VJUt}cOP`jc0O-D0Dl%SZvppJXshj;=@r0U{c3?fB1nfy z`9Xrn0$rlF^PWPm`Nm+|7Z#CX{bbp3h)t^`)vd~ZHhInQ2AJ%6ss0h{t_BwaS~7|u zA^(E%ZD)X3Eom{Tc0jd3Q<$eH*!a(+B%sAkXV9b@dR6~lrW!UdC{_+I0>oqCQ*P20 zSPYMf5PsO03#;TVSDJy!+0k;0mKOledz@XRg}!z-@Kzv)>_^^ix*jzz3k%i}P0u`# zv3;8ybjp{`a0m5$)lujYS-8z^NWik~l>lFPzzFL+>Z%Ww$Ko88?k>i#TxD{sCOF7O z9iFp7V+htZ22BSP;auNCiq#Q&`&zX3Fbbkzn&PA?3(V)E+N!)Ek6g6h@kIz~YYdMM zW!y)Gb<+3!&N8SPx&?e4;Gg+T*0cO-&3m#ZQ!LBcRL584FtGNv^{z;GG0>*4jDUSuVY4Zbr! z#2z(}lFbKb8Py2qY8)O)DC(A4l(;_E;t`TyZY*<3DGg}A)KI!=Lk1IdPmq->nRy-( zVw)DC*JC!|O@*sq7W$sl&0!pcktalv_cKGMo5&b}mQ6jp!i~Tli%(Hg3PdtB+Um>n zTbJXX2Xr^?_{!93>o^VdV|qMimMG&YTr=G?zsFjY{=lr6H97xAxz+Nd7*mfJ3PfsB z`v!F7uZN_!F%>NI{f?A3Y3=m9MaA_x+Ev6xX>4z)s%z{U^mzj}(N-n2d_`FIWb*)k z4OJJhl!NtwJ}ckGQ&XlaAq0j(;^1)Ah#6Wi!2nyk48af%duSrW#N9LJK+9tMNPT)u zh+V~gh3JE&6dn8b^yiy1*X}TA(x$L*y1rvFs;2TJXnx{H@4wSs(DY7yf#uH<*`A$n zS^&#rj`nSG3?m>3B@rgtv`%!}-`v&7nmlfj#un*4W%=f`^}>NjiAijtkFZJ)6>!-q74%ST&7vIsRc=j_PC*4H8Jd4Q5*uo4Wzx8T{=cKy90Q!z3y3HX`qq@L7aO8*xvP zC{<7yw@xXv_1{8MFB0Z$kH;!)YCgxYG#FwJ_xNBj?)1Y(G%d=utyP-~*-m2MB_G3t zvD|RH>Hf!Qco)&$sG&&O&P-%%KDB!JFTHWU17mF9n`dcLEn4R5F^C64a3c#VM#Dg33hATRu~bdte=}v46}aD7|lf zIeq}7)gCVeeR1>t{{C1COc!!1Z_q?(dtiynz}?>hJ+q2N+!Es#FbP|LtF41nWRSP* z0};yBB~SJC7D2M+OFR1+ezd<Mr~d)B@+bRJ;UcEOw7mm} z@*A|v^_B)o8vOu~G*2EuC^k-Q+e$EaXlBGXSMnD>?ywc-4M%f4F!ey6rvh#oeio+R zSy3L5(3XDh>hzm$7MKer{%=-ayu85u0ya|~o$4(~f{{?o+dC|~t~{le*FWMT z83q2|w1nus!`1BaygS1cwu2oHF713EoAL2Hz1eJtH-dI@562D#>KAYvFa9UW73AZj z9Gnq>mGy05J72+_0mwl~8X#}W(PN_zRIT4QqRppCMu*Ek(v=G#=#}l%L38W@ZY4qQ z!^O{TUu253$okvt3!!0UZ!4}E(A>eFh%)4_PjaAK>iDMGEN?|X=wj{`eRo5L1l*Se ja3>>z!H2WtqllpU;%FBJYz-&pwrjmM@)uYX*x%=Jof0k? zT=rPbI{m2Ss5O;A-?>7}OBr6|d4Ueew%z4yS?|LV+`vni#kIxQcmNfbjRj~6!moaD zt4$)uuNaP-JmDx#j>;8C5D3OY7v_1!3GWK{)cEDZx7>456Qc8_o{9Tts$0^&_m(`8 zIKb1wf@Cs6aMs$ymqz*|4>8gE^>V5p&;_k0lBn6iwmG7AF)SK<&PH%ykNKZ)Pz0`x zS8R<*l@>e8rWl7}-4YYON1K@ViQvB0Gu>lawJ4sPnU zVxRWR!D!YIknI=)7KDQcYv8Pp!7}(d{xJbooT1^m`m^iWrWzS9TcQz+e6U3nq9dlT zvmbgcZ*VEpuD1h-fa@obm^_mA7W8t!AlzIRmf2Lp16vN}(IT)RO& z@wXGQLSWB%KS=&Oh2zs)4rcujInA^G)XAM@33`)ihndQX$m;0?v~LMG($N5Z+fnvo z9uptm;13*4CLyC)bb3c?FfwOLK`8KRO6jg4DFMWPysm{3V(#u5IT}4QXeke-7(qa8 z&;~~m4=IhS0V7>zSL-|+T_tprr*lL^M8E2&ZlKXXh_ePvUPv)C2~=VmM)UBmyW?0) z!dkv?(9$tXXTmzpo(tb;c~hbqq>{FC4%ZyU&;!r;L&gK5&Gwsj%#8~$WNF3fK@6a0 zCka@47^$e7Uud5p$7g=A<_vRUgv^T98b+r0jW5f-gLRPVaUpF6Y6fX0VO`@|8>pQ8 zMy5oiTAyzmoVB@R)XL7B;mxIRn^CR)^qFo~1`M+cIPY>MqB=zn-Bp=!$x(P^T!WUIA|1nZ!~+Ur9q zx>z)M%7ZA)clRS%Mv%`%pxI7{=8$7|g@D%6&&?d8Dgsu|RHT&9qp@AV6|oAhFUXGL zTO)gyu=%*3)F>{3sb>3xWC+reW~-D5Zn)G=qeFy8BW#i^sfXlIQ${^WS-M&$o7dUd z2x939e4d{z_Kb6(UEz;?p<6Eo~g`NUqsf$)H4k*jXZVo z2l+dqQ7gqSgy|=}mHK5X6H{P0Vb_KqIcRd!4DNd5uJNedLat%LamL}{NZJ?NDD@5) z6-$KF7Q1iC|=*A0w(li@x%xXVRb4QOZz_9QbbTKqMCW?BBKQiMCr8e z+Z7Q986G0ik-DUtu;44|0O@m`8pGB_**I|xmDB_j$b61L!bO&s}aYxnMB{z#P|+);XvYsU^L8P=D&S! z{Rr{jAYJ*mbzcB=NH|bZnk$Ke?j!oe$)+b56En2?d-r>dqZoWNr4p+++K|`MDz|82 zMQJ1WMPf))OZTIlE30l|`vlnGfbIQQ1b--QiYOcsW&gqhCVV?J=tv&YK~$`PdR?n7$0Gbw=0ce!LfGd z3)C}Dilnf>2K?~pS!)$M)kwSAE~8ER>5bAp0k?RhksSc0$5^|rtFZnd2)msv))e>w zt&hpLiz8}JMY7eEF@{GnD_adxw~bD5M439N!NU@LJrl>J|74 z&@_9c^lSE^PRxY>SJ!T0O7Lt`?0d35sPnN{jZ|}cQJ->DOK`I`TTC+C(`RzQCH+yzIP*uXLpqum~0?D=r25>nMtIa*rhA2r8 zYnrjVdBqkpw>wV^w%m7qeUcOP-+=@~gK53?tje94c+c={bBXYDi^ry}@*d zT|=W`uaDFJrqChszExDCb44((tl{YZSI@JUt*R+eG6EH+y16ohjL`_1FgXua!tgT5 zp%(hX$=RPXi6b-epyXSl7CJ?AC>kWJeTzxPWsA7dq>@G5cnRP%$R2bv5469lCQe#P zlPz}}*j?Wz!_QAZvD2f(+}v~VH)nhq`nE6EzAu$Y6=-qaD9lqx;OW)ltg&(n{i1v? zDdSduys_{ufZsv9FWO;`vuESKQ63hDK``0mZ4ag6Zk$SfqBGLd4tefbYgz;mw>Dpj zcXWNbSoWV{%q#x7<{-5vOL(r|Ncq;Up}{}qQoc7G_K@&+yg9XAekMw~dN?Uxr9g(d zUM62k#^&(Ln1LPAwn<-}@*v6wYzqsGc3Im*X9?J7UG`f z6TtY#pa>56@0^R}`OKm?V+iND_H!KD(Q7C!PEmx(w6Is!u^JG;(}U6W4&2M4ZL97v za20@Gm6*yu*2d6$9w6h?;}8_s`$Elk%PTTez~SY*(=$f821(dy(ZO%R<=$! zv3@b24EjrF_pF?>uu4Fncz4Ug5}(gHP% zDcwn(34#-l2SkCrG6a?(_6;uHb_I&romt!^Ab&}GXz1mDW1Ze0=p#LTX-0QtvtMqo zj;ob;@N!=}0z805dEwW(^@ge{Qi$7SO~2KJy7F6&#ht0o=!%sQ`oiW{J`#AVR5?Ej zSeh#dX^Br;Sm0gnHnUMhmQ1S>UE$zg93#kT#cZQktfBEaFnGm<*BQ?JQQ4E4Pj`+; zUGm}sX43m1BTzOrXr9aAaBM#b`yUoyAgxCsBX2*WiY?VQnRC?}mQ@KVH22u==TFgB zsb=Q+9^DEy$13k213YIcSEzeE#MH0>^q#H`5@2ai_?H))cG>5kSjm4hY1&nu$E$G6 zT5e~27*J`+$~shPVlQwJ^88P5A48E-#S;xvK_ysfE0J(Jz0(J1Eu#zvc#ixpo*k^HgE=-LD@ZjQ^}fo39i4L7OKp>5diz)?6H6nM7S18B;;{Yw z8tTu<-f}s0G;w!Qj;9?0TBP}}POaEzH;0=QF(E)qFLs3>9)hm!;mHaZSvcOm36b2n zZ`p$*yahMNAh@&-7;(t&AjQhBJ?Tu4j1Ta^+4==X9C&~V!ABoK3bjy5GJ#oG8Vk;O z-Xq&x*PGgRVq^hDR-hzLVVd$IUi;L3Yc#^(-+P4G%{+k1EqUzyH1|>}-DOBiUHeAm ze;Ax~NVn;}Y`jD^py1g%nj)g)Eq1+V384j@0Ixjo7w+s(EIdUVHxUga8{(2ljEaTj zA|}rX4AdQ6EzXqX*@zwGNNlZ5D*o74^Tl=W`$ocE(e3pw$(o^ zZAC}*Q_3PWTSvT&Bw(S-SLllLK31Uaa~L9#$7M{Yn433`YklQHkk(~KzBCFZqHt?6 zdiMG+NqbJnaNC1aW65}j(@5~HAn+E-1t}TiPiVmEKijTrbub9|!1@gGi(aLapuha` zkfNt!vkC|+6o@Iu40s^r$V|Cpeds$2pYzoBF=$(F`q3$pE!%rF^aas8{7*TfMbw<@ z>5U`r4r+*4m(Kt26r^MA2X$8lf@{Wqf>m*ib4@cTKG&$n^>&=xb(5T4$9 z;*i1B6Rt&ns>0Kqpl|qzHR*_zyevh^YSw{DOSrH=JST%1@_%9ETK)BMP7NxTh5 zPf~cQWNzn{Xy#7c8=-S|%RHw9v_u$yu9b&6NT%^^bW^I7EAcWrWU}PRgt)j5uqn^g zVPR+;xTH^}YjNd9g@#eu|M}5YyBkr=no+cRY8h7dxOx!DIlX`QW@9+Uy@-e;W9% zKY*;g`&zI$8!SE6X=_EsE3?FttL8xbPJhC=f7+}rBF z-u6@_b zUHO?ZOUr_FZfLgr=Mp{~hh4NlDx?qPE|1;;ei*Dp3+M(S^wT>r$tS~y_@~^&@Ps<4 z5Asg&PB48vz;cRkT$7ojwd>)4k?dIoz>pOrdeaV%HEeZ6632|J3eJV&HMqhn!)F8q zKWl7{r{3kO%n2q1P#kMFG$d?5)=ufWqgc5FGsJQa!bf;+6l)8hPF_t_(601&IaA*C zq#yC@8%^{`8STvhWi#hM%FX-ry!vD|*H@C21R=q69^kmnW%jp$?0eetXbZEe9gW*H z1k|V`A|CIzH_R=($m*ZDuGo>Ai?vdbnvvj@d#HPpTt3XloWA_G81x1%@0oP_k5fJQ zlAjBchxX$Y)^Y+3$!|r4c=HayR}7A4M*+RyNThB+0I%upN}9IfGrAU(SJ|5%vY+0eqB#mw2`;8r4ga#Rf zQV+x~=Q#Sd>>o*ODtt(&46o1pi6N@w0Nl^5-Cp3i%w9#Z+tA?TI4 z2wY3+_M$)>aO88E1U2w#*wk<8`U-Gx`}@bq+Je`|XFjAXSFDBaytduRi<7^>sL0sk z-RnSGyO?rLxnsw3uI09;on z@^EK2kJWTLOHv;L#qX|z-Smd5vb(oyHZ3;R_(@<;6fFm3LIN1h#It$sD(K8_fDPz* zZq`2G_|y=Ex>Nz{kdS_U%7(M!h){G*WCYilGn;DVE#;#X^Vk~=w?(_`R#rH5HocC- zsD$+Hd25^oYMfsex{&=+iBASA4{4{cwUzF|Re*s{yrgi=L=9pt+d9vP!=UrqkJN8) zQgyZ_qC1(S{C=sTVbc=g6q(S5xIHf=$iI~fGvN&ZAlWbz8UyAiRDwTw$2Y$SLAEXw zN=w?}nYgtNcT^f2blu8UUd)w-HD3)UQ^-tJ9$Q zEfw7^VF78p55%}^2~TN4>z^KjcUEjx3lO^;(^ZGH--3pwP;@E!-JoU;sJZ&`B`>+B z4tAkRi_WMBtf%eA$B@atjt=_)tJf-?P%S+^YZX9khBa5Z4)A;tXoDk6mrTPD@Qkt` z_EZAk;FcMsqd@oe@PB0?UR~DueiU}m#!h_G;7eyAE^58ofH&U?__Ly!x$EoRX>lvCQseGjDh4T&?1FkWSN$UkC5eT>nW^Gr@TTKtzHw221i-Ll+1V zNvebPxru-sax8N5_!(LqijiL=@<646;!6W<1jjy;vFeQtThP2tE-D-YxnvQqw2Mf| zit)gZO|cDDkCyMGJP?Rw=8=dAP-y`7S3z0iX@iS$sdl%kFc4m~R z(G)QrDoobhF4D12QW&*+i<(B$WNf$HN<*NSijZumx)a0GI**yj{{sUD!5s2=$ax&u z1kbQxTRJQCh`2a^*QT~A{mYG|#G+AZ(bWv!fUeBd>w3={d9SsjPF&jVM}zsF#5D@d zk~_HSh{8ryNw_ZfYQ-!WK#h|N7|@MlGb8)epPba&9l@b_vP&3F`wznm&|IWfEWQ{~ z8a+es2HwG=1ZhUbtgyp%?!(~Sa#;U~0hm35LdeEIHq^dDipd{W)75QJLw!i(RuS4ZE)oh?IhTTNh(TlOwo2` zJU1~2r|8S6gV1!np9t>-*39!y!`P0|F6hn|-XcDlJBX5z$h_@Tq&L}xfimRguwiD2 zXvgnsX6P~C*2PU@AR>m1Op{CPjp!45Yr1kQa&Mq==U8p2G5+gU0Rq8*2YxVoYuV`F z-Fbqdtmsdco4(j*W_I!&AT;r@)uC(S2===ZtV_6B1JDRO>iW>zZnbHy!get#--4ro zzX&2zh%XE(Nx(HdidCQj4(?Udz9R(BL!|Amj^(A{lT3Q{dQ%A3&q|s>S0I0b!zD7i zA-Ci8p@)6PIB*RK@*G6yG4uiOoHquqPT2B&VTmZp=)XgLez$S)&tn^L$HhQ!^TxZe zSHvOz;vy`Nw27YHYjat;j86jZZw^sjUAo+)oBJuQ0en@C{Z`hOd>nKoT;k%;?1!h6 zwkp}Ey^>y~#h1;QY#?sdF;aZe&Yy3aNvH|9vhm#R)Bu-%lh?cucJd{49K9a;HX?CZ zW7SNqS~Kx(_JAFu?DV^t;&@x3(O;;#ERg#9kc)?6aqQ#ovgTJmOs1eh^!M5SNmtKE zW~ILQ=5*(wfeyiywZn}X+0w!;rua7QvGXOMQnq`~v}20mj;TV7qR(}pB+1irJ|=QG zTt&b`YP)(hT>$GbGIcd>8@rM}e;5B2?~8AaILe2M-Z0BzI=_R5W;u`sQF+OyXJ;J~ zkWXqqST$!GH6D9)J4N;>IP7E2zCveL<5QgCWUuq6N!yNkwyTv{b!^oXrXsq!8_bnj zms0V*%KE}3y_7ii`>N~VbO1Hfy(W0qq7s3(A{ z;lVgLPhgvZvAL{RDAu%twZAMuU=;*4`e`Wp*$%*70$YQ4k2<)u!VybGVFLb(Me#yS z1aK;!R8)<}d7@pkCSzuo95evTva7Ah=Vwz*=iJHa%?H|Uey12*rQ&1k7Tng&Q}cgY z=NQgHG@huBj!kH1&Hpj+{!2bp%CL87E0xBFC*;1TGwy+nWfz$60fKJ8uUE zQUHnMOZ$sU5)F^iZNWT4W&C$|VCE=0!qA`lfw+2Wqek*v@AgzPb{Lm^vF0lsvnLy@ z;^E7nqxeD100bMX*w+0V%$XSLp95mgSS*<~D^>tA8##Ec0DeB_vRD`~Q+t_cvCTwt z;`Z7?T-i3-5U_7G z0$8<4%(sD!5BcQyy(Qz46wm!ZnXeLK+3NW%>0LFFR0-VP7XcQ$Eg9K9SFDo2@ptfN z(O@IhwN#`txM?37P=qf$;W_xJCpRhjLsd71LpN_0ln%KEbQL+@jRQXxZWS2e5 z*pnNbz3k_J>In&(0uoiF!_t&fNb;)EUN>F~*ez`&{-@Xxtfq3sdg4!z%p|DHe`4so!ie4 zN=$<_#ExPuU6E#$j@;~PgON6#f43rGGF#pK-$mj1rw*0*PhC#6nqs|l9@27|$N>K8A6a~;SnhErC4C2Rm(0Mt84;9G%3ea!MLxjZEZS%c zp z^rihczX^~Fc6NVtiM$`Uoj$%6)DICdw=%+*!K4D!P-DflOn4&GZKt>jrKV8;xcP=e zQIYyu!O|p8UbJK2WD#IhSxvd{3lelr;Jt}R8%w?Jh!R0yEN2)?f-kgk(Tf`0zaH?m z4T>bK(hRMJQjTH<8VYmCv`I8U-F00wYZr0=f9=ecGh(&gS_vnP&p)~8qOS??s0H1o zv`{;`F0k)8wQiuDI8bo-2i=~Q+9B{Up+(`i<*Z-U_~*`gmy!+t`c|WMS?DD2grt3X z`yjgL>Xu9mmv~1d*7hYV)&)YmLJtx&Jb#d2 z0Dg+l%vw-i8HwT>&b$z~(-gwh`{7X+Wn`=3NvxojPh;&Lb3)R&f!_M<@5)SGH4O<+ zM787DNZj1Q!C4Vrod?vehs}bs|CBMxsvm`cv=s0Q(5eIjYR_AKgVa_n6gjIq- zUXt#C=8#kypo4Cz{$~=Og`Vu_QM@y-l>v6I1Zz|%HBT>f>0tU)Ni_*&X*Rz9OT3Ce zovNN~bR;PMwp$-p1Ms4FlU}hAO(1j}zRK!7J3bc*mJFRhZmX6cvD%x(Dd>zTX6AD8?>XS4`(cZ3(y6Xc>u+}4&)~)$(A17c&lKrwDP;H zSW~B=$I{4TO3%tsa12hZgAnr5X7OzL%+UUgiMl~fNJtd;{Zu$`VXxmPf$8$loSMtZ z;dW?kkWprOf$e+yH-+Ph^BxNv_G$V&7N$Flj}I2{nd7f?6O8-^pb^i{LsEXBSgL^P z#_r~zZXShPW&3C3{Uy|F%f!X|!M=HXugUXP{#@viY6F3Z(X^d_`qHCl8PxL2Sw_yj^GppLn&&X5nsH+7Y5fed1%X@+)M;AfB#9W?yX2jj0WBiL(ftG7g?E zJ&z%)HkJt5$%3Bc+WCMC2@t{y5~o_~iWYU^Csr7E?CKy#|Y z;>lkQG$q5V&7g9&Z&lk$ss7e9mQAH7BpdPlyBrlA;%ML+RK|!*b7e``*2G0Uln`b7 zAwtMGmw}m;IeA&e%}WKJBL&{KsrB+B3`{`v44^ch@7ziqPriBO*}F6vO8&MAo5Ihi zZ)o*TkzphB^r8Bl3?DhE$Duo61F3{M38n zU0o2hGFaW$U!Yxflxw@kirS9gR2{4nP`O0=VtzGXH+&=s-8!(dvTx9dX9`$T>6Zj6 z{Y4g8xI!lXR?%yVLx0S(zoGrf52*VxiC_*9w`(0;7paE(5tMAujiwIFOSXInac8eD zZ+IEVgD-fB_jJs>muqCZYn*p4I%ZPcWJE4x5mWS)ZFnk~PAAICE`VA(0bAWs1V|xk zq;CsHj9CtJlbi#cFR%@aGZKyBTbUSP{Nq{;$WN2JGAeoGi7zG5_DxCxh2?Ty(P7v( zhV}cY0$MBwE_Ew+F6wL`aRHyTzqp2-(Mt0GB()7=9qwZreR1)(%a_mk0#|I3iBR{9 zu!KXdhrYjJ0<@n#`DM$YKctuXE*B0GYw~u2gMie;xXA%Kr-oDUn`E_2Bdw8&W{&IVR$M z{Y$9OI>{nUmvVW~>3?&M5aROxJr-_{2AO~r4!_F_sfgw4^b5BgXjN!`uJ45B=ABsg5u1SFHJn$`65;SSE3V@=FMhZ2@K>r@Tf&h@TR)g(oAkh4GET;n94WW3$DO z1wUXiD)bj4vn1=%1|Er@a1axHKQ7KkHr7qBfg?oP=}}@!9=bQGl`0FrN+I~X@A@n- zUG_z={w1cs5|b`EhH6wRU6t1o&=jY`-ljo9{b*+^h8U(i=oWRm3CTMH0Jt1;>ASED z9b}tXGpNP9r_IP!bcZiAvuicWYs{?iW4hz|&KuFzd3B21SieV> z2+nvDT(JQ3Vd!|;1zBwHi$!>^8bPhK%LckJ_^59lwegjwFh9zTb4K5~&ykN_jtZEp z+yp71hIH{yrVO&UK6Trofya{JBvT^)p8@_&k@Xcl4iH>M3qYD$)IV=wH93SnMJ~Md z-J*e{a4NF@vN1psfp~2zkxKd*K*_s8%_vLy)LomsdDCGz`s8x0#BDI*d&hra`-w7> z!j0$H+p){8$}S(91Aeg6;55F?e=em8u=;U52cZQ?ZEsGI0ChY&&m)5oWJVh|?vMr! zUx>^_ol4g*J=ie|&@S>;sLly=Vw0Z=ZG4xH63c|;(-@`DgIL! z9dE2>WG=aNcit{v_17VjSK5P;bX3I3DQ;+Y|I<2=gZf{6&Qp%5C}R&BmT?q_m@#(H z8BwbApo=)YkSG~)Z`o*B)dfy)?}A#L7D&ohj<2}rg^OFyNo9Y`|x z&HBX2R=V`79={*SZU&l_?;VwuDY&v45#4Zke^sLspv)IPdA9=VE;@Sf4N z52>6iJ&Gy`K&itH#_7zjMeLrJfwDY^;t_7yO)0~@*#~{de z+Uy0Ie1@;mB1dCUMwVu~3pAK|G{sSxw^1)a zHA5x(XO}LCf_wtEurD$hcx|5nNz%%8S^B!53Xk}Tg?mlA4XeHZiqE8s>QAlgM;@q%GbmKWoN_H%^P(>@&d^3SP~GI3bIsB4-UCe1uvE)DH2m$SR?=8VR$K6{A;l2|Qd@h9sX z)v>w!^84s{1a;a#h%GbcY#a$OJTU5{0z6ajY2!dn|5C$14PR))Qve?~I@sSJt$Q|f zt(EZ2w20mr(OSqJa%HxkqdBt2lJ7Z^=J@x=yn=b6fT!>v&={&+8s85!$gee$uKLPWug@*d^yoyPrdnIKj7z#%b_t zL$4C|LbA5Mm}h6S^Venplo3mImgBSO2XfJ+mE3yW>t=2=h&<)9OAi|NVd|5kXg{uU zS@|5OL#WQxNei}>gWgLCZ=`+=C{}o6hA$A+j(ijJ#;ylmt#>CncK`~td1!U9&EzTo z(waD7?4{_XHB5GTZ-~Ji_I<*@G-@sj((QHm?^ysNuGp`bJXK`nMe)X@TgoZs;B?zB zQ5=VD?>S`Zzta%1Smj|E%L!R!k3_(%5BjQoOjK_Xqbo$%Qhq#+pn44m+1%z756+ejS2fN(ei?sch7r#@trKB6!i z`Hk4L-22N(PCv#Kgf~oIwa~76&$L@axq)isg_a59_6#d~5LF>!AVdSj1wGFQ<(jDV-X9;g%tkyqdA| z>p1?#4gGUOneScDflwAc0Ltg&m~qSzWabtOOhVMjW(8c}qn?Nu_AZ2{*`CO)8}rku zZ+*zTPxzIfhK-Rb4h4P>4b%jg)X7E5jGyykLnR6eh>lSOLi(&6oMzPBYmpRZveqa4 z0tvHOINFqDC_J!3GNxY%oE_0{7wSzzwi!1o-i;%i=!aTKbJlcFYI!< zX?-nh3Eb5<&7)2+m~1vslQH{2X^3|!DovO6T^0d7iw>?qbr{Fc3(CN_pOj-9)G-~d z@+W#V*Kh+?(!FC5qg%N3*mzdLZ^uDw!Gy>tDhQx2rI=!@>diuXv$vStQ1_nC>oh_B zoq?jTMT*oaaW8zJ9Vc|d64>IVsR|28_{hN4B_iiQzRtFBYFJF^1gD;VA~=CQ+{P5D zzbkv>u?*o_AZao5gsZN1$fWNe)Q(wE*?n4dX!H>ht#)%b+Z}gTl3;wN5%Nq@bYZ7$ z@FO_P=_-T0V&?2TDXN54KFPrGXUIs}AW)l?&R>ep$`m4%>i3mOO5ikNwTpk}<&Gee z2(x*rsCP)qAe==L9KmFV$Y5p`Vld{R8o#X=qNPqstd#3MQl0dtBY?A_)g3FhTI9#F zzTlGb*oOcsh6d$IP5A(>OVz0JG&W(W{F91>Ga!7t0(QZtgbC?q)zxGYy}Sl`{QUI& zUy*@sJ|e&KQW_lRVDhWhp|NP3_ah#sd?Nb7%nDw(MewJ7Y*vAUQI21`;QKrIuMrOG z+TsMWXSjS3x7s6>ucSK{?(pAL!YPSeJ^OuV;GdOLGVW5<6YMg6_>HGYZ0}sg|A1>$ zxoxaDDbqM&C!?-Qe?_iv5gW#LK8^M}y}CDJ%4e9)4~8AAv)eM^Yb~Pn;eLaW*Vz0| zMc==G7;#FSmu>XoA*UwIR)O{;#T?a(e(PWDvd9D0?i#t&D-C!0=_ss%VofehV{q9` zxr7Fj-^IRPau<$B6Sdso3}DrWK-9C^1~Ma5Ci}0)0y_ou^1fxG6F9;JHZCC9@vp;dZc^S;(dG*O@*#=+->G-&^x#ZV$lI*cmH3%oqlyq$~i{1aIy0 z;Ts7Q_8~5duJoCHCl;I<)`&0ryo%37LXVbf)5%!WJGuJ@EenwIBmfmuI)>;44v9E# z#W<&do}S%r=s=m$BEXGxIHK*jyhne2+;o@>%8I-y2K5@F(>CuFQFl^E;9>N(I zY*)aw(z}cg#Di_XI~Npls<60|MR6FQd=bXjmV7%WKS?b<(~J37>Kf$j7}K6zt}zC@ zwu~HkG+9AP$#MBIhJ&76-8=dAv@4Sw<@p)QvSw5}DMrPMUDiT_%=Z@+^(Gbd8MmSQ zLg4F1Xg#s9G%Ue0G_v!H0w8S6o37wQ;LT4k3~LzO97NwA#dyb_RU88qvkg?kB9SRqss) z+3B&>$-da=oHFR4BG%&@pOwB294=-bi4M;L*bK#WQ^TWg6H@CP+&NfZWt%^-_8$<8 zLV1`9C7&6>Ti{$r=HGUJscPn=R{Z#;1YCW;HBN|pZyySAW#sY%yUpWY30z8sBfk;Q z<;D`CwKg5V+hOlE0wEzSKMh@;K1X=^=ee;wu2nG*R0agCDTu9nfK<3q{gS2I6fl&X<#- za@^>puwF@Ik8v(?q^c*sBC zcEEIy*JoM^jR=U=>?O1x&P}xp;)vL!?cHuyju?0dXole)C@tIMx;KkcholzHitTno z+j%3b*;20DcB7E@WD(ncrv@J^{bupf2a!? zI)IO>mNpp(q$NSs$*E2%|8;hpAnt;Vv+TF=yVv?l^wlE4#zPLQOw4a}9OMm>BZ4WY~LjRG@;7rlKHuIaH{nPEfKH z+D-5dH|$Z{$u&5*`S2rj;rZJlFnqQgUEZHDu=6LzsaXcXIO|+6BMrkjfy%`s;DJ*L z1vTVCFF@kAJ3^ybno#k&y^{MBey9HCp<#w+b)E5Ra^mVcr2p|-|HC779Ow_5=cBB% zVBj1R4p^t1DC^R;L@e0V-blPHwuZD@OU?gRYM^~E_|^g>(gy;Tv}3Hf7D_3^^(`yn z?J=!TM};Z^b^N1p{BZR!NEZ{;vMDH^X*KMNZS^+NbBpR7i zWTlpv`LIIRB|(MAor^{YzZBtxkrHulNe6J;_G;VHz5+Q6=N8+%U&rmN+oJl;1NYPo zVR(iN9@Cn0ggp|On!o8QwXIs9N(0JA1RI1>obR_-??{SCc!yWROXxb9L`T+6e$B;{ z9L%)}*RAp*FG23V>MLt`0_2fT@@})HWy3SD-J-A*nP^pMcW$&ZsuH>1lm}`1^p2`S z_v@t(vc0=+o8YC~W!6O!dhm(R)}XD8E3NJuM`M`)+C%!HPd2Y~li2HvGH3WOYrJ`8 zJJ)m3%dw4hq^2V(#or%faW!m}ga)bcfuxvi)L zy~JsM_{#=;q@n}G<)hal1Lr z4X&ul`Mv#Qn%^vlPONLGx(wq{v;OqffkX|(52~MsipTPvOB&j~t|P+b(1TRviW7^) z>-}gl=k8!e(HRaG;GmRNA5PFMW7N$68^XfGf5Yb!ggjDHWo`C9|LPuUC=oKqw0jo` zlFo-@`AAO>icZ~30GaFc3yYofptx@$gTonrTxQ3FlRUU8MoXE~EQ{NZzzy8=pkTvW z(~eaPGG`v=$FTQALcmQxSxT*jZ^!~jrK>4gpQsHT&GmjHf+v7>Nl{frame) + return -1; p->width = img->w; p->height = img->h; p->format = img->format; @@ -360,29 +365,59 @@ static inline int clamp8(int a) return a; } -#define IC0 40 -#define IC1 (-11) -#define IC2 4 -#define IC3 (-1) - -/* interpolate by a factor of two */ +/* 7 tap Lanczos interpolator */ +#define IC0 (-1) +#define IC1 4 +#define IC2 (-10) +#define IC3 57 +#define IC4 18 +#define IC5 (-6) +#define IC6 2 + +/* interpolate by a factor of two assuming chroma is between the luma + samples. */ static void interp2_simple(PIXEL *dst, const PIXEL *src, int n, int bit_depth) { - int pixel_max; + int pixel_max, a0, a1, a2, a3, a4, a5, a6; pixel_max = (1 << bit_depth) - 1; + + a1 = src[-3]; + a2 = src[-2]; + a3 = src[-1]; + a4 = src[0]; + a5 = src[1]; + a6 = src[2]; + while (n >= 2) { - dst[0] = src[0]; - dst[1] = clamp_pix(((src[-3] + src[4]) * IC3 + - (src[-2] + src[3]) * IC2 + - (src[-1] + src[2]) * IC1 + - (src[0] + src[1]) * IC0 + 32) >> 6, pixel_max); + a0 = a1; + a1 = a2; + a2 = a3; + a3 = a4; + a4 = a5; + a5 = a6; + a6 = src[3]; + dst[0] = clamp_pix((a0 * IC6 + a1 * IC5 + a2 * IC4 + a3 * IC3 + + a4 * IC2 + a5 * IC1 + a6 * IC0 + 32) >> 6, + pixel_max); + dst[1] = clamp_pix((a0 * IC0 + a1 * IC1 + a2 * IC2 + a3 * IC3 + + a4 * IC4 + a5 * IC5 + a6 * IC6 + 32) >> 6, + pixel_max); dst += 2; src++; n -= 2; } if (n) { - dst[0] = src[0]; + a0 = a1; + a1 = a2; + a2 = a3; + a3 = a4; + a4 = a5; + a5 = a6; + a6 = src[3]; + dst[0] = clamp_pix((a0 * IC6 + a1 * IC5 + a2 * IC4 + a3 * IC3 + + a4 * IC2 + a5 * IC1 + a6 * IC0 + 32) >> 6, + pixel_max); } } @@ -410,58 +445,88 @@ static void interp2_h(PIXEL *dst, const PIXEL *src, int n, int bit_depth) static void interp2_simple2(PIXEL *dst, const int16_t *src, int n, int bit_depth) { - int shift1, offset1, shift0, offset0, pixel_max; + int shift, offset, pixel_max, a0, a1, a2, a3, a4, a5, a6; pixel_max = (1 << bit_depth) - 1; - shift0 = 14 - bit_depth; - offset0 = (1 << shift0) >> 1; - shift1 = 20 - bit_depth; - offset1 = 1 << (shift1 - 1); + shift = 20 - bit_depth; + offset = 1 << (shift - 1); + + a1 = src[-3]; + a2 = src[-2]; + a3 = src[-1]; + a4 = src[0]; + a5 = src[1]; + a6 = src[2]; while (n >= 2) { - dst[0] = clamp_pix((src[0] + offset0) >> shift0, pixel_max); - dst[1] = clamp_pix(((src[-3] + src[4]) * IC3 + - (src[-2] + src[3]) * IC2 + - (src[-1] + src[2]) * IC1 + - (src[0] + src[1]) * IC0 + offset1) >> shift1, + a0 = a1; + a1 = a2; + a2 = a3; + a3 = a4; + a4 = a5; + a5 = a6; + a6 = src[3]; + dst[0] = clamp_pix((a0 * IC6 + a1 * IC5 + a2 * IC4 + a3 * IC3 + + a4 * IC2 + a5 * IC1 + a6 * IC0 + offset) >> shift, + pixel_max); + dst[1] = clamp_pix((a0 * IC0 + a1 * IC1 + a2 * IC2 + a3 * IC3 + + a4 * IC4 + a5 * IC5 + a6 * IC6 + offset) >> shift, pixel_max); dst += 2; src++; n -= 2; } if (n) { - dst[0] = clamp_pix((src[0] + offset0) >> shift0, pixel_max); + a0 = a1; + a1 = a2; + a2 = a3; + a3 = a4; + a4 = a5; + a5 = a6; + a6 = src[3]; + dst[0] = clamp_pix((a0 * IC6 + a1 * IC5 + a2 * IC4 + a3 * IC3 + + a4 * IC2 + a5 * IC1 + a6 * IC0 + offset) >> shift, + pixel_max); } } /* y_pos is the position of the sample '0' in the 'src' circular buffer. tmp is a temporary buffer of length (n2 + 2 * ITAPS - 1) */ static void interp2_vh(PIXEL *dst, PIXEL **src, int n, int y_pos, - int16_t *tmp_buf, int bit_depth) + int16_t *tmp_buf, int bit_depth, int frac_pos) { - const PIXEL *src0, *src1, *src2, *src3, *src4, *src5, *src6, *src7; + const PIXEL *src0, *src1, *src2, *src3, *src4, *src5, *src6; int i, n2, shift; PIXEL v; - src0 = src[(y_pos - 3) & 7]; - src1 = src[(y_pos - 2) & 7]; - src2 = src[(y_pos - 1) & 7]; - src3 = src[(y_pos + 0) & 7]; - src4 = src[(y_pos + 1) & 7]; - src5 = src[(y_pos + 2) & 7]; - src6 = src[(y_pos + 3) & 7]; - src7 = src[(y_pos + 4) & 7]; + src0 = src[(y_pos - 3) & 7]; + src1 = src[(y_pos - 2) & 7]; + src2 = src[(y_pos - 1) & 7]; + src3 = src[(y_pos + 0) & 7]; + src4 = src[(y_pos + 1) & 7]; + src5 = src[(y_pos + 2) & 7]; + src6 = src[(y_pos + 3) & 7]; /* vertical interpolation first */ - /* XXX: should round */ + /* XXX: should round but not critical */ shift = bit_depth - 8; n2 = (n + 1) / 2; - for(i = 0; i < n2; i++) { - tmp_buf[ITAPS2 - 1 + i] = - ((src0[i] + src7[i]) * IC3 + - (src1[i] + src6[i]) * IC2 + - (src2[i] + src5[i]) * IC1 + - (src3[i] + src4[i]) * IC0) >> shift; + if (frac_pos == 0) { + for(i = 0; i < n2; i++) { + tmp_buf[ITAPS2 - 1 + i] = + (src0[i] * IC6 + src1[i] * IC5 + + src2[i] * IC4 + src3[i] * IC3 + + src4[i] * IC2 + src5[i] * IC1 + + src6[i] * IC0) >> shift; + } + } else { + for(i = 0; i < n2; i++) { + tmp_buf[ITAPS2 - 1 + i] = + (src0[i] * IC0 + src1[i] * IC1 + + src2[i] * IC2 + src3[i] * IC3 + + src4[i] * IC4 + src5[i] * IC5 + + src6[i] * IC6) >> shift; + } } /* then horizontal interpolation */ @@ -932,13 +997,15 @@ int bpg_decoder_get_line(BPGDecoderContext *s, void *rgb_line1) y2 = y >> 1; pos = y2 % ITAPS; if ((y & 1) == 0) { - interp2_h(s->cb_buf2, s->cb_buf3[pos], w, s->bit_depth); - interp2_h(s->cr_buf2, s->cr_buf3[pos], w, s->bit_depth); + interp2_vh(s->cb_buf2, s->cb_buf3, w, pos, s->c_buf4, + s->bit_depth, 0); + interp2_vh(s->cr_buf2, s->cr_buf3, w, pos, s->c_buf4, + s->bit_depth, 0); } else { interp2_vh(s->cb_buf2, s->cb_buf3, w, pos, s->c_buf4, - s->bit_depth); + s->bit_depth, 1); interp2_vh(s->cr_buf2, s->cr_buf3, w, pos, s->c_buf4, - s->bit_depth); + s->bit_depth, 1); /* add a new line in the circular buffer */ pos = (pos + ITAPS2 + 1) % ITAPS; @@ -1017,7 +1084,7 @@ int bpg_decoder_start(BPGDecoderContext *s, BPGDecoderOutputFormat out_fmt) { int ret; - if (s->y >= 0) + if (!s->frame || s->y >= 0) return -1; ret = bpg_decoder_output_init(s, out_fmt); if (ret) @@ -1026,94 +1093,171 @@ int bpg_decoder_start(BPGDecoderContext *s, BPGDecoderOutputFormat out_fmt) return 0; } -BPGDecoderContext *bpg_decoder_open(const uint8_t *buf, int buf_len) +BPGDecoderContext *bpg_decoder_open(void) +{ + BPGDecoderContext *s; + + s = av_mallocz(sizeof(BPGDecoderContext)); + if (!s) + return NULL; + return s; +} + +typedef struct { + int width, height; + BPGImageFormatEnum format; + uint8_t has_alpha; + uint8_t bit_depth; + BPGColorSpaceEnum color_space; + uint32_t ycc_data_len; + uint32_t alpha_data_len; + BPGExtensionData *first_md; +} BPGHeaderData; + +static int bpg_decode_header(BPGHeaderData *h, + const uint8_t *buf, int buf_len, + int header_only, int load_extensions) { - int idx, ret, has_alpha, format, bit_depth, chroma_format_idc, color_space; - uint32_t width, height, flags1, flags2, ycc_data_len, alpha_data_len; + int idx, flags1, flags2, has_extension, ret; uint32_t extension_data_len; - int has_extension; - BPGDecoderContext *img; - + if (buf_len < 6) - return NULL; + return -1; /* check magic */ if (buf[0] != ((BPG_HEADER_MAGIC >> 24) & 0xff) || buf[1] != ((BPG_HEADER_MAGIC >> 16) & 0xff) || buf[2] != ((BPG_HEADER_MAGIC >> 8) & 0xff) || buf[3] != ((BPG_HEADER_MAGIC >> 0) & 0xff)) - return NULL; + return -1; idx = 4; flags1 = buf[idx++]; - format = flags1 >> 5; - if (format > 3) - return NULL; - has_alpha = (flags1 >> 4) & 1; - bit_depth = (flags1 & 0xf) + 8; - if (bit_depth > 14) - return NULL; + h->format = flags1 >> 5; + if (h->format > 3) + return -1; + h->has_alpha = (flags1 >> 4) & 1; + h->bit_depth = (flags1 & 0xf) + 8; + if (h->bit_depth > 14) + return -1; flags2 = buf[idx++]; - color_space = (flags2 >> 4) & 0xf; + h->color_space = (flags2 >> 4) & 0xf; has_extension = (flags2 >> 3) & 1; - if (color_space >= BPG_CS_COUNT || - (format == BPG_FORMAT_GRAY && color_space != 0) || - ((color_space == BPG_CS_YCbCrK || color_space == BPG_CS_CMYK) && - !has_alpha)) - return NULL; - ret = get_ue(&width, buf + idx, buf_len - idx); + if (h->color_space >= BPG_CS_COUNT || + (h->format == BPG_FORMAT_GRAY && h->color_space != 0) || + ((h->color_space == BPG_CS_YCbCrK || h->color_space == BPG_CS_CMYK) && + !h->has_alpha)) + return -1; + ret = get_ue(&h->width, buf + idx, buf_len - idx); if (ret < 0) - return NULL; + return -1; idx += ret; - ret = get_ue(&height, buf + idx, buf_len - idx); + ret = get_ue(&h->height, buf + idx, buf_len - idx); if (ret < 0) - return NULL; + return -1; idx += ret; + if (h->width == 0 || h->height == 0) + return -1; + if (header_only) + return idx; - ret = get_ue(&ycc_data_len, buf + idx, buf_len - idx); + ret = get_ue(&h->ycc_data_len, buf + idx, buf_len - idx); if (ret < 0) - return NULL; + return -1; idx += ret; extension_data_len = 0; if (has_extension) { ret = get_ue(&extension_data_len, buf + idx, buf_len - idx); if (ret < 0) - return NULL; + return -1; idx += ret; } - alpha_data_len = 0; - if (has_alpha) { - ret = get_ue(&alpha_data_len, buf + idx, buf_len - idx); + h->alpha_data_len = 0; + if (h->has_alpha) { + ret = get_ue(&h->alpha_data_len, buf + idx, buf_len - idx); if (ret < 0) - return NULL; + return -1; idx += ret; } + h->first_md = NULL; + if (has_extension) { + int ext_end; - img = av_mallocz(sizeof(BPGDecoderContext)); - if (!img) - return NULL; + ext_end = idx + extension_data_len; + if (ext_end > buf_len) + return -1; +#ifndef EMSCRIPTEN + if (load_extensions) { + BPGExtensionData *md, **plast_md; + + plast_md = &h->first_md; + while (idx < ext_end) { + md = av_malloc(sizeof(BPGExtensionData)); + *plast_md = md; + plast_md = &md->next; + + ret = get_ue(&md->tag, buf + idx, ext_end - idx); + if (ret < 0) + goto fail; + idx += ret; + + ret = get_ue(&md->buf_len, buf + idx, ext_end - idx); + if (ret < 0) + goto fail; + idx += ret; + + if (idx + md->buf_len > ext_end) { + fail: + bpg_decoder_free_extension_data(h->first_md); + return -1; + } + md->buf = av_malloc(md->buf_len); + memcpy(md->buf, buf + idx, md->buf_len); + idx += md->buf_len; + } + } else +#endif + { + /* skip extension data */ + idx += extension_data_len; + } + } + return idx; +} + +int bpg_decoder_decode(BPGDecoderContext *img, const uint8_t *buf, int buf_len) +{ + int idx, has_alpha, format, bit_depth, chroma_format_idc, color_space; + uint32_t width, height; + BPGHeaderData h_s, *h = &h_s; + + idx = bpg_decode_header(h, buf, buf_len, 0, img->keep_extension_data); + if (idx < 0) + return idx; + width = h->width; + height = h->height; + format = h->format; + has_alpha = h->has_alpha; + color_space = h->color_space; + bit_depth = h->bit_depth; + img->w = width; img->h = height; img->format = format; img->has_alpha = has_alpha; img->color_space = color_space; img->bit_depth = bit_depth; + img->first_md = h->first_md; - if (has_extension) { - if (idx + extension_data_len > buf_len) - goto fail; - idx += extension_data_len; - } - - if (idx + ycc_data_len > buf_len) + if (idx + h->ycc_data_len > buf_len) goto fail; chroma_format_idc = format; - img->frame = hevc_decode(buf + idx, ycc_data_len, + img->frame = hevc_decode(buf + idx, h->ycc_data_len, width, height, chroma_format_idc, bit_depth); if (!img->frame) goto fail; - idx += ycc_data_len; + idx += h->ycc_data_len; if (img->frame->width < img->w || img->frame->height < img->h) goto fail; @@ -1144,21 +1288,26 @@ BPGDecoderContext *bpg_decoder_open(const uint8_t *buf, int buf_len) } if (has_alpha) { - if (idx + alpha_data_len > buf_len) + if (idx + h->alpha_data_len > buf_len) goto fail; - img->alpha_frame = hevc_decode(buf + idx, alpha_data_len, + img->alpha_frame = hevc_decode(buf + idx, h->alpha_data_len, width, height, 0, bit_depth); if (!img->alpha_frame) goto fail; - idx += alpha_data_len; + idx += h->alpha_data_len; } img->y = -1; - return img; + return 0; fail: - bpg_decoder_close(img); - return NULL; + if (img->frame) + av_frame_free(&img->frame); + if (img->alpha_frame) + av_frame_free(&img->alpha_frame); + bpg_decoder_free_extension_data(img->first_md); + img->first_md = NULL; + return -1; } void bpg_decoder_close(BPGDecoderContext *s) @@ -1168,58 +1317,58 @@ void bpg_decoder_close(BPGDecoderContext *s) av_frame_free(&s->frame); if (s->alpha_frame) av_frame_free(&s->alpha_frame); + bpg_decoder_free_extension_data(s->first_md); av_free(s); } +void bpg_decoder_free_extension_data(BPGExtensionData *first_md) +{ +#ifndef EMSCRIPTEN + BPGExtensionData *md, *md_next; + + for(md = first_md; md != NULL; md = md_next) { + md_next = md->next; + av_free(md->buf); + av_free(md); + } +#endif +} + + #ifndef EMSCRIPTEN -int bpg_decoder_get_info_from_buf(BPGImageInfo *p, +void bpg_decoder_keep_extension_data(BPGDecoderContext *s, int enable) +{ + s->keep_extension_data = enable; +} + +BPGExtensionData *bpg_decoder_get_extension_data(BPGDecoderContext *s) +{ + return s->first_md; +} + +int bpg_decoder_get_info_from_buf(BPGImageInfo *p, + BPGExtensionData **pfirst_md, const uint8_t *buf, int buf_len) { - int flags1, flags2, idx, format, color_space, has_alpha, bit_depth; - int ret, width, height; + BPGHeaderData h_s, *h = &h_s; + int parse_extension; - if (buf_len < 6) - return -1; - /* check magic */ - if (buf[0] != ((BPG_HEADER_MAGIC >> 24) & 0xff) || - buf[1] != ((BPG_HEADER_MAGIC >> 16) & 0xff) || - buf[2] != ((BPG_HEADER_MAGIC >> 8) & 0xff) || - buf[3] != ((BPG_HEADER_MAGIC >> 0) & 0xff)) + parse_extension = (pfirst_md != NULL); + if (bpg_decode_header(h, buf, buf_len, + !parse_extension, parse_extension) < 0) return -1; - idx = 4; - flags1 = buf[idx++]; - format = flags1 >> 5; - if (format > 3) - return -1; - has_alpha = (flags1 >> 4) & 1; - bit_depth = (flags1 & 0xf) + 8; - if (bit_depth > 14) - return -1; - flags2 = buf[idx++]; - color_space = (flags2 >> 4) & 0xf; - if (color_space >= BPG_CS_COUNT || - (format == BPG_FORMAT_GRAY && color_space != 0) || - ((color_space == BPG_CS_YCbCrK || color_space == BPG_CS_CMYK) && - !has_alpha)) - return -1; - ret = get_ue(&width, buf + idx, buf_len - idx); - if (ret < 0) - return -1; - idx += ret; - ret = get_ue(&height, buf + idx, buf_len - idx); - if (ret < 0) - return -1; - p->width = width; - p->height = height; - p->format = format; - if (color_space == BPG_CS_YCbCrK || - color_space == BPG_CS_CMYK) + p->width = h->width; + p->height = h->height; + p->format = h->format; + if (h->color_space == BPG_CS_YCbCrK || + h->color_space == BPG_CS_CMYK) p->has_alpha = 0; else - p->has_alpha = has_alpha; - p->color_space = color_space; - p->bit_depth = bit_depth; + p->has_alpha = h->has_alpha; + p->color_space = h->color_space; + p->bit_depth = h->bit_depth; + if (pfirst_md) + *pfirst_md = h->first_md; return 0; } #endif - diff --git a/libbpg.h b/libbpg.h index 3b122895..2ee63ed4 100644 --- a/libbpg.h +++ b/libbpg.h @@ -54,7 +54,17 @@ typedef struct { typedef enum { BPG_EXTENSION_TAG_EXIF = 1, -} BPGImageExtensionTag; + BPG_EXTENSION_TAG_ICCP = 2, + BPG_EXTENSION_TAG_XMP = 3, + BPG_EXTENSION_TAG_THUMBNAIL = 4, +} BPGExtensionTagEnum; + +typedef struct BPGExtensionData { + BPGExtensionTagEnum tag; + uint32_t buf_len; + uint8_t *buf; + struct BPGExtensionData *next; +} BPGExtensionData; typedef enum { BPG_OUTPUT_FORMAT_RGB24, @@ -65,18 +75,46 @@ typedef enum { #define BPG_DECODER_INFO_BUF_SIZE 16 -/* get information from the start of the image data in 'buf'. Return 0 - if OK, < 0 if unrecognized data. */ -int bpg_decoder_get_info_from_buf(BPGImageInfo *p, - const uint8_t *buf, int buf_len); +BPGDecoderContext *bpg_decoder_open(void); -BPGDecoderContext *bpg_decoder_open(const uint8_t *buf, int buf_len); -void bpg_decoder_close(BPGDecoderContext *s); +/* If enable is true, extension data are kept during the image + decoding and can be accessed after bpg_decoder_decode() with + bpg_decoder_get_extension(). By default, the extension data are + discarded. */ +void bpg_decoder_keep_extension_data(BPGDecoderContext *s, int enable); + +/* return 0 if 0K, < 0 if error */ +int bpg_decoder_decode(BPGDecoderContext *s, const uint8_t *buf, int buf_len); + +/* Return the first element of the extension data list */ +BPGExtensionData *bpg_decoder_get_extension_data(BPGDecoderContext *s); + +/* return 0 if 0K, < 0 if error */ int bpg_decoder_get_info(BPGDecoderContext *s, BPGImageInfo *p); + +/* return 0 if 0K, < 0 if error */ int bpg_decoder_start(BPGDecoderContext *s, BPGDecoderOutputFormat out_fmt); + +/* return 0 if 0K, < 0 if error */ int bpg_decoder_get_line(BPGDecoderContext *s, void *buf); +void bpg_decoder_close(BPGDecoderContext *s); + /* only useful for low level access to the image data */ uint8_t *bpg_decoder_get_data(BPGDecoderContext *s, int *pline_size, int plane); +/* Get information from the start of the image data in 'buf' (at least + min(BPG_DECODER_INFO_BUF_SIZE, file_size) bytes must be given). + + If pfirst_md != NULL, the extension data are also parsed and the + first element of the list is returned in *pfirst_md. The list must + be freed with bpg_decoder_free_extension_data(). + + Return 0 if OK, < 0 if unrecognized data. */ +int bpg_decoder_get_info_from_buf(BPGImageInfo *p, + BPGExtensionData **pfirst_md, + const uint8_t *buf, int buf_len); +/* Free the extension data returned by bpg_decoder_get_info_from_buf() */ +void bpg_decoder_free_extension_data(BPGExtensionData *first_md); + #endif /* _LIBBPG_H */ diff --git a/post.js b/post.js index 223a1e36..99f90a93 100644 --- a/post.js +++ b/post.js @@ -27,17 +27,25 @@ window['BPGDecoder'] = function(ctx) { this['onload'] = null; } -window['BPGDecoder'].prototype.bpg_decoder_open = Module['cwrap']('bpg_decoder_open', 'number', [ 'array', 'number' ]); +window['BPGDecoder'].prototype = { -window['BPGDecoder'].prototype.bpg_decoder_get_info = Module['cwrap']('bpg_decoder_get_info', 'number', [ 'number', 'number' ]); +malloc: Module['cwrap']('malloc', 'number', [ 'number' ]), -window['BPGDecoder'].prototype.bpg_decoder_start = Module['cwrap']('bpg_decoder_start', 'number', [ 'number', 'number' ]); +free: Module['cwrap']('free', 'void', [ 'number' ]), -window['BPGDecoder'].prototype.bpg_decoder_get_line = Module['cwrap']('bpg_decoder_get_line', 'number', [ 'number', 'number' ]); +bpg_decoder_open: Module['cwrap']('bpg_decoder_open', 'number', [ ]), -window['BPGDecoder'].prototype.bpg_decoder_close = Module['cwrap']('bpg_decoder_close', 'void', [ 'number' ] ); +bpg_decoder_decode: Module['cwrap']('bpg_decoder_decode', 'number', [ 'number', 'array', 'number' ]), -window['BPGDecoder'].prototype.load = function(url) +bpg_decoder_get_info: Module['cwrap']('bpg_decoder_get_info', 'number', [ 'number', 'number' ]), + +bpg_decoder_start: Module['cwrap']('bpg_decoder_start', 'number', [ 'number', 'number' ]), + +bpg_decoder_get_line: Module['cwrap']('bpg_decoder_get_line', 'number', [ 'number', 'number' ]), + +bpg_decoder_close: Module['cwrap']('bpg_decoder_close', 'void', [ 'number' ] ), + +load: function(url) { var request = new XMLHttpRequest(); var this1 = this; @@ -48,9 +56,9 @@ window['BPGDecoder'].prototype.load = function(url) this1._onload(request, event); }; request.send(); -} +}, -window['BPGDecoder'].prototype._onload = function(request, event) +_onload: function(request, event) { var data = request.response; var array = new Uint8Array(data); @@ -59,26 +67,27 @@ window['BPGDecoder'].prototype._onload = function(request, event) // console.log("loaded " + data.byteLength + " bytes"); - img = this.bpg_decoder_open(array, array.length); - if (img == 0) { + img = this.bpg_decoder_open(); + + if (this.bpg_decoder_decode(img, array, array.length) < 0) { console.log("could not decode image"); return; } - img_info_buf = Module['_malloc'](6 * 4); + img_info_buf = this.malloc(6 * 4); this.bpg_decoder_get_info(img, img_info_buf); /* extract the image info */ heap32 = Module['HEAPU32']; w = heap32[img_info_buf >> 2]; h = heap32[(img_info_buf + 4) >> 2]; - Module['_free'](img_info_buf); + this.free(img_info_buf); // console.log("image " + w + " " + h); /* select RGBA32 output */ this.bpg_decoder_start(img, 1); - rgba_line = Module['_malloc'](w * 4); + rgba_line = this.malloc(w * 4); cimg = this.ctx.createImageData(w, h); dst = cimg.data; p0 = 0; @@ -91,7 +100,7 @@ window['BPGDecoder'].prototype._onload = function(request, event) } } - Module['_free'](rgba_line); + this.free(rgba_line); this.bpg_decoder_close(img); @@ -101,6 +110,8 @@ window['BPGDecoder'].prototype._onload = function(request, event) this['onload'](); } +}; + window.onload = function() { var i, n, el, tab, tab1, url, dec, canvas, id, style, ctx; diff --git a/x265_glue.c b/x265_glue.c index 24ce18ae..96413687 100644 --- a/x265_glue.c +++ b/x265_glue.c @@ -114,39 +114,9 @@ int x265_encode_picture(uint8_t **pbuf, Image *img, c_count = 1; else c_count = 3; - if (img->bit_depth == 8) { - /* must convert to 8 bits per sample */ - for(i = 0; i < c_count; i++) { - uint8_t *plane; - int w, h, stride, y, x; - w = img->w; - h = img->h; - if (i == 1 || i == 2) { - if (img->format == BPG_FORMAT_420) { - w >>= 1; - h >>= 1; - } else if (img->format == BPG_FORMAT_422) { - w >>= 1; - } - } - stride = w; - plane = malloc(stride * h); - for(y = 0; y < h; y++) { - const uint16_t *src; - uint8_t *dst; - dst = plane + stride * y; - src = (uint16_t *)(img->data[i] + img->linesize[i] * y); - for(x = 0; x < w; x++) - dst[x] = src[x]; - } - pic->planes[i] = plane; - pic->stride[i] = stride; - } - } else { - for(i = 0; i < c_count; i++) { - pic->planes[i] = img->data[i]; - pic->stride[i] = img->linesize[i]; - } + for(i = 0; i < c_count; i++) { + pic->planes[i] = img->data[i]; + pic->stride[i] = img->linesize[i]; } pic->bitDepth = img->bit_depth; pic->colorSpace = p->internalCsp; @@ -182,12 +152,6 @@ int x265_encode_picture(uint8_t **pbuf, Image *img, x265_param_free(p); - if (img->bit_depth == 8) { - for(i = 0; i < c_count; i++) { - free(pic->planes[i]); - } - } - x265_picture_free(pic); *pbuf = buf;