diff --git a/collects/mred/private/lock.ss b/collects/mred/private/lock.ss index 594563cabe..74e3d327de 100644 --- a/collects/mred/private/lock.ss +++ b/collects/mred/private/lock.ss @@ -37,57 +37,69 @@ (define old-paramz #f) (define old-break-paramz #f) + (define exited-key (gensym 'as-exit)) + (define lock-tag (make-continuation-prompt-tag 'lock)) + (define (as-entry f) (cond [(eq? monitor-owner (current-thread)) (f)] [else - ((let/ec k - (dynamic-wind - (lambda () - (wx:in-atomic-region monitor-sema) - (set! monitor-owner (current-thread))) - (lambda () - (set! old-paramz (current-parameterization)) - (set! old-break-paramz (current-break-parameterization)) - (parameterize ([error-value->string-handler entered-err-string-handler]) - (with-handlers ([void (lambda (exn) - ;; Get out of atomic region before letting - ;; an exception handler work - (k (lambda () (raise exn))))]) + (with-continuation-mark + exited-key + #f + (call-with-continuation-prompt + (lambda () + (dynamic-wind + (lambda () + (wx:in-atomic-region monitor-sema) + (set! monitor-owner (current-thread))) + (lambda () + (set! old-paramz (current-parameterization)) + (set! old-break-paramz (current-break-parameterization)) + (parameterize ([error-value->string-handler entered-err-string-handler]) (parameterize-break #f - (call-with-values - f - (lambda args (lambda () (apply values args)))))))) - (lambda () - (set! monitor-owner #f) - (semaphore-post monitor-sema) - (wx:in-atomic-region #f)))))])) - - ; entry-point macros in macros.ss + (call-with-exception-handler + (lambda (exn) + ;; Get out of atomic region before letting + ;; an exception handler work + (if (continuation-mark-set-first #f exited-key) + exn ; defer to previous exn handler + (abort-current-continuation + lock-tag + (lambda () (raise exn))))) + f)))) + (lambda () + (set! monitor-owner #f) + (semaphore-post monitor-sema) + (wx:in-atomic-region #f)))) + lock-tag))])) (define (as-exit f) ;; (unless (eq? monitor-owner (current-thread)) (error 'monitor-exit "not in monitored area")) (let ([paramz old-paramz] [break-paramz old-break-paramz]) - (call-with-parameterization - paramz - (lambda () - (call-with-break-parameterization - break-paramz - (lambda () - (dynamic-wind - (lambda () - (set! monitor-owner #f) - (semaphore-post monitor-sema) - (wx:in-atomic-region #f)) - f - (lambda () - (set! old-paramz paramz) - (set! old-break-paramz break-paramz) - (wx:in-atomic-region monitor-sema) - (set! monitor-owner (current-thread)))))))))) + (with-continuation-mark + exited-key + #t ; disables special exception handling + (call-with-parameterization + paramz + (lambda () + (call-with-break-parameterization + break-paramz + (lambda () + (dynamic-wind + (lambda () + (set! monitor-owner #f) + (semaphore-post monitor-sema) + (wx:in-atomic-region #f)) + f + (lambda () + (set! old-paramz paramz) + (set! old-break-paramz break-paramz) + (wx:in-atomic-region monitor-sema) + (set! monitor-owner (current-thread))))))))))) (define-syntax entry-point (lambda (stx) diff --git a/collects/tests/mzscheme/basic.ss b/collects/tests/mzscheme/basic.ss index ded6b08e1f..33bb2e7b62 100644 --- a/collects/tests/mzscheme/basic.ss +++ b/collects/tests/mzscheme/basic.ss @@ -1395,6 +1395,85 @@ (test #f list-length '(a b . c)) (test '() map cadr '()) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; exceptions + +(test 10 'exns + (with-handlers ([integer? (lambda (x) 10)]) + (raise 12))) +(test '(apple) 'exns + (with-handlers ([void (lambda (x) (list x))]) + (with-handlers ([integer? (lambda (x) 10)]) + (raise 'apple)))) +(test '((10)) 'exns + (with-handlers ([void (lambda (x) (list x))]) + (with-handlers ([integer? (lambda (x) (raise (list x)))]) + (raise 10)))) +(test '((10)) 'exns + (let/ec esc + (parameterize ([uncaught-exception-handler (lambda (x) (esc (list x)))]) + (with-handlers ([integer? (lambda (x) (raise (list x)))]) + (raise 10))))) +(test '#((10)) 'exns + (let/ec esc + (with-handlers ([void (lambda (x) (vector x))]) + (parameterize ([uncaught-exception-handler (lambda (x) (esc (list x)))]) + (with-handlers ([integer? (lambda (x) (raise (list x)))]) + (raise 10)))))) + +(test '(except) 'escape + (let/ec k + (call-with-exception-handler + (lambda (exn) + (k (list exn))) + (lambda () (raise 'except))))) +(test '#&except 'escape + (let/ec k + (call-with-exception-handler + (lambda (exn) + (k (list exn))) + (lambda () + (call-with-exception-handler + (lambda (exn) + (k (box exn))) + (lambda () + (raise 'except))))))) +(test '#(except) 'escape + (with-handlers ([void (lambda (x) x)]) + (values + (call-with-exception-handler + (lambda (exn) + (vector exn)) + (lambda () + (raise 'except)))))) +(test '(except) 'escape + (with-handlers ([void (lambda (x) x)]) + (values + (call-with-exception-handler + (lambda (exn) + (vector exn)) + (lambda () + (call-with-exception-handler + (lambda (exn) + (list exn)) + (lambda () + (raise 'except)))))))) +(test '#((except)) 'escape + (with-handlers ([void (lambda (x) x)]) + (values + (call-with-exception-handler + (lambda (exn) + (vector exn)) + (lambda () + (values + (call-with-exception-handler + (lambda (exn) + (list exn)) + (lambda () + (raise 'except))))))))) + +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;;; This tests full conformance of call-with-current-continuation. It ;;; is a separate test because some schemes do not support call/cc ;;; other than escape procedures. I am indebted to @@ -1727,6 +1806,18 @@ (try 3 5) (try 10 5)) +;; Make sure let doesn't allocate a mutatble cell too early: +(test 2 'let+call/cc + (let ([count 0]) + (let ([first-time? #t] + [k (call/cc values)]) + (if first-time? + (begin + (set! first-time? #f) + (set! count (+ count 1)) + (k values)))) + count)) + (arity-test call/cc 1 2) (arity-test call/ec 1 1) (err/rt-test (call/cc 4)) diff --git a/doc/release-notes/mzscheme/HISTORY b/doc/release-notes/mzscheme/HISTORY index 5b97ae2443..ae4a0f281d 100644 --- a/doc/release-notes/mzscheme/HISTORY +++ b/doc/release-notes/mzscheme/HISTORY @@ -1,3 +1,7 @@ +Version 369.3 +Adjusted exception-handler calling to propagate any returned value + to the previous exception handler + Version 369.2 Removed current-exception-handler and initial-exception-handler Added uncaught-exception-handler @@ -11,6 +15,11 @@ Changed top-level begin to insert a prompt around each sub-expression Added #%top-interaction and #%expression Added prop:input-port and prop:output-port Changed char-whitespace? to produce #t for #\u0085 +Inside MzScheme: use + SCHEME_INPUT_PORTP() instead of SCHEME_INPORTP() + SCHEME_OUTPUT_PORTP() instead of SCHEME_OUTPORTP() + scheme_input_port_record() instead of casting to Scheme_Input_Port* + scheme_output_port_record() instead of casting to Scheme_Output_Port* Version 369.1 Changed dyanmic-require to expand requests for exported syntax diff --git a/src/README b/src/README index da417ef4a2..721c9d3d62 100644 --- a/src/README +++ b/src/README @@ -50,9 +50,9 @@ the Unix instructions below, but note the following: bundle MrEd.app that goes into the `plt' directory. Installation creates a script, plt/bin/mred, that runs the bundle. - * The --enable-shared flag for `configure' is redundant (i.e., builds - create and use frameworks by default), and --disable-shared is not - supported. + * The --enable-shared flag for `configure' should not be used, + because builds create and use frameworks by default. Furthermore, + --disable-shared is not supported. * To build an X11-based MrEd, run `configure' with the --enable-xonx flag. Frameworks are not used for such builds. The --enable-xonx diff --git a/src/configure b/src/configure index 13dd1b5257..581acafd2b 100755 --- a/src/configure +++ b/src/configure @@ -1564,6 +1564,9 @@ fi if test "${enable_dynlib}" = "no" ; then enable_shared=no fi +if test "${enable_dynlib}" = "yes" ; then + enable_shared=yes +fi if test "${enable_shared}" != "yes" ; then enable_lt=no fi @@ -1574,6 +1577,13 @@ if test "${enable_lt}" = "yes" ; then exit 1 fi +if test "${enable_shared}" = "yes" ; then + if test "$OS" = "Darwin" ; then + echo "ERROR: don't use --enable-shared or --enable-dynlib under Mac OS X" + exit 1 + fi +fi + enable_quartz=no if test "${enable_xonx}" = "yes" ; then enable_quartz=no @@ -5345,6 +5355,7 @@ case $OS in ;; FreeBSD) LIBS="$LIBS -rdynamic" + DYN_CFLAGS="-fPIC" ;; OpenBSD) LIBS="$LIBS -rdynamic" @@ -5456,7 +5467,6 @@ case $OS in DYN_CFLAGS="" enable_xrender=no enable_cairo=no - enable_shared=no enable_gl=no enable_pthread=no if test "${enable_libfw}" = "yes" ; then diff --git a/src/mac/cw/MrEd.r b/src/mac/cw/MrEd.r index 1a55147916..d154f50ec6 100644 --- a/src/mac/cw/MrEd.r +++ b/src/mac/cw/MrEd.r @@ -10,7 +10,7 @@ data 'DITL' (129) { $"0081 0000 0000 0018 008F 0048 0170 8844" /* .........H.pˆD */ $"4372 6561 7465 6420 7769 7468 2050 4C54" /* Created with PLT */ $"2053 6368 656D 650D A920 3230 3034 2D32" /* Scheme.© 2004-2 */ - $"3030 3620 504C 5420 5363 6865 6D65 2049" /* 006 PLT Scheme I */ + $"3030 3720 504C 5420 5363 6865 6D65 2049" /* 007 PLT Scheme I */ $"6E63 2E20 0DA9 2031 3939 352D 3230 3033" /* nc. .© 1995-2003 */ $"2050 4C54 0000 0000 004D 008F 0089 018F" /* PLT.....M..‰. */ $"884E 466F 7220 7570 2D74 6F2D 6461 7465" /* ˆNFor up-to-date */ diff --git a/src/mzscheme/configure.ac b/src/mzscheme/configure.ac index adcd0c3842..e9f3da3ccd 100644 --- a/src/mzscheme/configure.ac +++ b/src/mzscheme/configure.ac @@ -99,6 +99,9 @@ fi if test "${enable_dynlib}" = "no" ; then enable_shared=no fi +if test "${enable_dynlib}" = "yes" ; then + enable_shared=yes +fi if test "${enable_shared}" != "yes" ; then enable_lt=no fi @@ -109,6 +112,13 @@ if test "${enable_lt}" = "yes" ; then exit 1 fi +if test "${enable_shared}" = "yes" ; then + if test "$OS" = "Darwin" ; then + echo "ERROR: don't use --enable-shared or --enable-dynlib under Mac OS X" + exit 1 + fi +fi + enable_quartz=no if test "${enable_xonx}" = "yes" ; then enable_quartz=no @@ -591,7 +601,6 @@ case $OS in DYN_CFLAGS="" enable_xrender=no enable_cairo=no - enable_shared=no enable_gl=no enable_pthread=no if test "${enable_libfw}" = "yes" ; then diff --git a/src/mzscheme/gc2/compact.c b/src/mzscheme/gc2/compact.c index d6013c8283..fe93141ca5 100644 --- a/src/mzscheme/gc2/compact.c +++ b/src/mzscheme/gc2/compact.c @@ -2655,7 +2655,7 @@ void protect_old_mpages() #if GENERATIONS -static void designate_modified(void *p) +static int designate_modified(void *p) { unsigned long g = ((unsigned long)p >> MAPS_SHIFT); MPage *map; @@ -2675,7 +2675,7 @@ static void designate_modified(void *p) if (page->flags & MFLAG_CONTINUED) { designate_modified(page->o.bigblock_start); num_seg_faults++; - return; + return 1; } else if (page->age) { page->flags |= MFLAG_MODIFIED; p = (void *)((long)p & MPAGE_START); @@ -2684,12 +2684,12 @@ static void designate_modified(void *p) else protect_pages(p, MPAGE_SIZE, 1); num_seg_faults++; - return; + return 1; } GCPRINT(GCOUTF, "Seg fault (internal error) at %lx [%ld]\n", (long)p, num_seg_faults); - abort(); + return 0; } } @@ -2700,7 +2700,7 @@ static void designate_modified(void *p) #if defined(_WIN32) && defined(CHECKS) DebugBreak(); #endif - abort(); + return 0; } /* The platform-specific signal handlers, and initialization function: */ diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index c776161be9..b79773c5c8 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -41,7 +41,6 @@ # define inline _inline #endif - #if defined(sparc) || defined(__sparc) || defined(__sparc__) # define ALIGN_DOUBLES #endif @@ -175,7 +174,7 @@ inline static void free_used_pages(size_t len) #if defined(__APPLE__) && defined(__MACH__) # define TEST 0 -void designate_modified(void *p); +int designate_modified(void *p); # include "vm_osx.c" # define MALLOCATOR_DEFINED #endif @@ -1792,14 +1791,18 @@ int GC_set_account_hook(int type, void *c1, unsigned long b, void *c2) static int generations_available = 1; -void designate_modified(void *p) +int designate_modified(void *p) { struct mpage *page = find_page(p); if(page) { protect_pages(page, page->size, 1); page->back_pointers = 1; - } else GCERR((GCOUTF, "Seg fault (internal error) at %p\n", p)); + return 1; + } else { + GCPRINT(GCOUTF, "Seg fault (internal error) at %p\n", p); + return 0; + } } #include "sighand.c" diff --git a/src/mzscheme/gc2/sighand.c b/src/mzscheme/gc2/sighand.c index 7a05453f6b..042ec0d5aa 100644 --- a/src/mzscheme/gc2/sighand.c +++ b/src/mzscheme/gc2/sighand.c @@ -16,7 +16,8 @@ # include void fault_handler(int sn, struct siginfo *si, void *ctx) { - designate_modified(si->si_addr); + if (!designate_modified(si->si_addr)) + abort(); # define NEED_SIGACTION # define USE_SIGACTON_SIGNAL_KIND SIGSEGV } @@ -27,7 +28,8 @@ void fault_handler(int sn, struct siginfo *si, void *ctx) # include void fault_handler(int sn, siginfo_t *si, void *ctx) { - designate_modified(si->si_addr); + if (!designate_modified(si->si_addr)) + abort(); } # define NEED_SIGACTION # define USE_SIGACTON_SIGNAL_KIND SIGBUS @@ -38,7 +40,8 @@ void fault_handler(int sn, siginfo_t *si, void *ctx) # include void fault_handler(int sn, struct siginfo *si, void *ctx) { - designate_modified(si->si_addr); + if (!designate_modified(si->si_addr)) + abort(); } # define NEED_SIGACTION # define USE_SIGACTON_SIGNAL_KIND SIGSEGV @@ -50,9 +53,10 @@ LONG WINAPI fault_handler(LPEXCEPTION_POINTERS e) { if ((e->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION) && (e->ExceptionRecord->ExceptionInformation[0] == 1)) { - designate_modified((void *)e->ExceptionRecord->ExceptionInformation[1]); - - return EXCEPTION_CONTINUE_EXECUTION; + if (designate_modified((void *)e->ExceptionRecord->ExceptionInformation[1])) + return EXCEPTION_CONTINUE_EXECUTION; + else + return EXCEPTION_CONTINUE_SEARCH; } else return EXCEPTION_CONTINUE_SEARCH; } @@ -75,7 +79,8 @@ typedef LONG (WINAPI*gcPVECTORED_EXCEPTION_HANDLER)(LPEXCEPTION_POINTERS e); # include void fault_handler(int sn, siginfo_t *si, void *ctx) { - designate_modified(si->si_addr); + if (!designate_modified(si->si_addr)) + abort(); # define NEED_SIGACTION # define USE_SIGACTON_SIGNAL_KIND SIGSEGV } diff --git a/src/mzscheme/gc2/vm_osx.c b/src/mzscheme/gc2/vm_osx.c index a8eee1f1af..eaa8108a00 100644 --- a/src/mzscheme/gc2/vm_osx.c +++ b/src/mzscheme/gc2/vm_osx.c @@ -37,7 +37,7 @@ #ifndef TEST # define TEST 1 # include "my_qsort.c" -void designate_modified(void *p); +int designate_modified(void *p); #endif #ifdef __POWERPC__ @@ -236,8 +236,10 @@ kern_return_t catch_exception_raise(mach_port_t port, /* kernel return value is in exception_data[0], faulting address in exception_data[1] */ if(exception_data[0] == KERN_PROTECTION_FAILURE) { - designate_modified((void*)exception_data[1]); - return KERN_SUCCESS; + if (designate_modified((void*)exception_data[1])) + return KERN_SUCCESS; + else + return KERN_FAILURE; } else #endif return KERN_FAILURE; @@ -355,18 +357,18 @@ static void macosx_init_exception_handler() char *normal_page = NULL; char *big_page = NULL; -void designate_modified(void *p) +int designate_modified(void *p) { if((p >= normal_page) && (p < (normal_page + MPAGE_SIZE))) { protect_pages(p, MPAGE_SIZE, 1); - return; + return 1; } if((p >= big_page) && (p < (big_page + BPAGE_SIZE))) { protect_pages(p, BPAGE_SIZE, 1); - return; + return 1; } printf("Unrecognized write: %p\n", p); - abort(); + return 0; } int main(int argc, char **argv) diff --git a/src/mzscheme/include/mzscheme.exp b/src/mzscheme/include/mzscheme.exp index 2ef2e36da8..897cfe4f4e 100644 --- a/src/mzscheme/include/mzscheme.exp +++ b/src/mzscheme/include/mzscheme.exp @@ -403,6 +403,7 @@ scheme_getdrive scheme_split_path scheme_build_path scheme_path_to_directory_path +scheme_path_to_complete_path scheme_make_path scheme_make_sized_path scheme_make_sized_offset_path diff --git a/src/mzscheme/include/mzscheme3m.exp b/src/mzscheme/include/mzscheme3m.exp index ea73106cf5..5ff4cb4895 100644 --- a/src/mzscheme/include/mzscheme3m.exp +++ b/src/mzscheme/include/mzscheme3m.exp @@ -410,6 +410,7 @@ scheme_getdrive scheme_split_path scheme_build_path scheme_path_to_directory_path +scheme_path_to_complete_path scheme_make_path scheme_make_sized_path scheme_make_sized_offset_path diff --git a/src/mzscheme/include/mzwin.def b/src/mzscheme/include/mzwin.def index 07e523ace3..4858b24e8d 100644 --- a/src/mzscheme/include/mzwin.def +++ b/src/mzscheme/include/mzwin.def @@ -391,6 +391,7 @@ EXPORTS scheme_split_path scheme_build_path scheme_path_to_directory_path + scheme_path_to_complete_path scheme_make_path scheme_make_sized_path scheme_make_sized_offset_path diff --git a/src/mzscheme/include/scheme.h b/src/mzscheme/include/scheme.h index 1eb5fd4016..b60ca151f1 100644 --- a/src/mzscheme/include/scheme.h +++ b/src/mzscheme/include/scheme.h @@ -1027,8 +1027,6 @@ typedef struct Scheme_Thread { Scheme_Simple_Object *list_stack; int list_stack_pos; - Scheme_Hash_Table *rn_memory; - /* MzScheme client can use: */ void (*on_kill)(struct Scheme_Thread *p); void *kill_data; @@ -1171,6 +1169,9 @@ enum { MZCONFIG_THREAD_SET, MZCONFIG_THREAD_INIT_STACK_SIZE, + MZCONFIG_LOAD_DELAY_ENABLED, + MZCONFIG_DELAY_LOAD_INFO, + MZCONFIG_EXPAND_OBSERVE, __MZCONFIG_BUILTIN_COUNT__ diff --git a/src/mzscheme/make-configure b/src/mzscheme/make-configure index 437995e2c2..6ecb6a79fa 100755 --- a/src/mzscheme/make-configure +++ b/src/mzscheme/make-configure @@ -8,7 +8,7 @@ echo "Creating $tgt from $src" if [ -e "$tgt" ]; then echo -n "overwriting $tgt, Ctrl-C to abort, enter to continue "; read R; fi -autoconf "$src" | mzscheme -r "$0" > "$tgt" +autoconf "$src" | mzscheme -qr "$0" > "$tgt" chmod +x "$tgt" exit 0 |# diff --git a/src/mzscheme/src/builtin.c b/src/mzscheme/src/builtin.c index 5aceda48b5..1c88ea5893 100644 --- a/src/mzscheme/src/builtin.c +++ b/src/mzscheme/src/builtin.c @@ -46,7 +46,9 @@ Scheme_Object *scheme_eval_compiled_sized_string_with_magic(const char *str, int if (!env) env = scheme_get_env(NULL); - expr = scheme_internal_read(port, NULL, 1, 1, 0, 0, -1, NULL, magic_sym, magic_val); + expr = scheme_internal_read(port, NULL, 1, 1, 0, 0, -1, NULL, + magic_sym, magic_val, + NULL); if (multi_ok) return _scheme_eval_compiled_multi(expr, env); diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index a501b208ca..8a00c72243 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,4407 +1,4587 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,54,252,225,7,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,65,35,37,115,116, -120,1,29,2,11,11,10,10,10,34,80,158,34,34,20,99,159,36,16,16,30, -3,2,2,71,105,100,101,110,116,105,102,105,101,114,63,4,254,1,30,5,2, -2,69,115,116,120,45,110,117,108,108,63,6,254,1,30,7,2,2,71,115,116, -120,45,110,117,108,108,47,35,102,8,254,1,30,9,2,2,69,115,116,120,45, -112,97,105,114,63,10,254,1,30,11,2,2,69,115,116,120,45,108,105,115,116, -63,12,254,1,30,13,2,2,67,115,116,120,45,99,97,114,14,254,1,30,15, -2,2,67,115,116,120,45,99,100,114,16,254,1,30,17,2,2,69,115,116,120, -45,62,108,105,115,116,18,254,1,30,19,2,2,71,115,116,120,45,118,101,99, -116,111,114,63,20,254,1,30,21,2,2,74,115,116,120,45,118,101,99,116,111, -114,45,114,101,102,22,254,1,30,23,2,2,73,115,116,120,45,99,104,101,99, -107,47,101,115,99,24,254,1,30,25,2,2,67,99,111,110,115,47,35,102,26, -254,1,30,27,2,2,69,97,112,112,101,110,100,47,35,102,28,254,1,30,29, -2,2,70,115,116,120,45,114,111,116,97,116,101,30,254,1,30,31,2,2,71, -115,116,120,45,114,111,116,97,116,101,42,32,254,1,30,33,2,2,74,115,112, -108,105,116,45,115,116,120,45,108,105,115,116,34,254,1,16,0,11,11,16,0, -34,11,16,16,2,28,2,26,2,4,2,34,2,18,2,14,2,16,2,24,2, -12,2,8,2,6,2,10,2,30,2,32,2,22,2,20,16,16,11,11,11,11, -11,11,11,11,11,11,11,11,11,11,11,11,16,16,2,28,2,26,2,4,2, -34,2,18,2,14,2,16,2,24,2,12,2,8,2,6,2,10,2,30,2,32, -2,22,2,20,50,50,9,110,83,159,34,93,80,159,34,51,35,89,162,8,64, -37,52,64,108,111,111,112,35,223,0,28,28,248,22,56,196,10,28,248,22,213, -196,248,22,56,248,22,217,197,11,91,159,37,11,90,161,37,34,11,27,28,248, -22,56,200,248,22,59,200,248,22,59,248,22,217,201,28,28,248,22,56,193,10, -28,248,22,213,193,248,22,56,248,22,217,194,11,91,159,37,11,90,161,37,34, -11,250,80,159,44,51,35,203,204,28,248,22,56,199,248,22,59,199,248,22,59, -248,22,217,200,28,249,22,189,196,202,250,22,7,9,198,248,22,177,198,250,22, -7,249,22,57,28,248,22,56,201,248,22,58,201,248,22,58,248,22,217,202,197, -196,197,250,22,7,9,195,28,201,28,28,248,22,63,196,10,28,248,22,213,196, -248,22,63,248,22,217,197,11,34,33,6,45,105,110,102,46,48,36,28,28,248, -22,63,196,10,28,248,22,213,196,248,22,63,248,22,217,197,11,2,36,35,28, -249,22,189,196,198,250,22,7,9,201,248,22,177,198,250,22,7,249,22,57,28, -248,22,56,204,248,22,58,204,248,22,58,248,22,217,205,197,196,197,250,22,7, -9,198,28,197,28,28,248,22,63,199,10,28,248,22,213,199,248,22,63,248,22, -217,200,11,34,2,36,28,28,248,22,63,199,10,28,248,22,213,199,248,22,63, -248,22,217,200,11,2,36,35,83,159,34,93,80,159,34,50,35,89,162,8,100, -35,45,2,35,223,0,28,248,22,56,194,27,248,22,59,195,28,248,22,56,193, -27,248,22,59,194,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27, -248,22,59,194,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248, -22,59,194,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,248,80,159, -42,50,35,248,22,59,194,248,80,159,42,38,35,193,248,80,159,41,38,35,193, -248,80,159,40,38,35,193,248,80,159,39,38,35,193,248,80,159,38,38,35,193, -248,80,159,37,38,35,193,248,80,159,36,38,35,193,248,80,159,35,38,35,194, -83,159,34,93,80,159,34,34,35,32,37,89,162,34,35,37,2,4,222,28,248, -22,213,193,248,22,47,248,22,217,194,11,83,159,34,93,80,159,34,35,35,32, -38,89,162,34,35,37,2,6,222,28,248,22,63,193,10,28,248,22,213,193,248, -22,63,248,22,217,194,11,83,159,34,93,80,159,34,36,35,32,39,89,162,34, -35,37,2,8,222,28,248,22,63,193,9,28,248,22,213,193,28,248,22,63,248, -22,217,194,9,11,11,83,159,34,93,80,159,34,37,35,32,40,89,162,34,35, -37,2,10,222,28,248,22,56,193,10,28,248,22,213,193,248,22,56,248,22,217, -194,11,83,159,34,93,80,159,34,38,35,89,162,34,35,46,2,12,223,0,28, -248,22,64,194,10,28,248,22,213,194,28,248,22,64,248,22,217,195,10,27,248, -22,217,195,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,22,0,0,0,1,0,0,3,0,15,0,25,0, +37,0,47,0,57,0,65,0,73,0,83,0,95,0,110,0,124,0,132,0,142, +0,153,0,165,0,180,0,185,0,193,0,34,1,110,1,0,0,36,8,0,0, +29,11,11,71,105,100,101,110,116,105,102,105,101,114,63,69,115,116,120,45,110, +117,108,108,63,71,115,116,120,45,110,117,108,108,47,35,102,69,115,116,120,45, +112,97,105,114,63,69,115,116,120,45,108,105,115,116,63,67,115,116,120,45,99, +97,114,67,115,116,120,45,99,100,114,69,115,116,120,45,62,108,105,115,116,71, +115,116,120,45,118,101,99,116,111,114,63,74,115,116,120,45,118,101,99,116,111, +114,45,114,101,102,73,115,116,120,45,99,104,101,99,107,47,101,115,99,67,99, +111,110,115,47,35,102,69,97,112,112,101,110,100,47,35,102,70,115,116,120,45, +114,111,116,97,116,101,71,115,116,120,45,114,111,116,97,116,101,42,74,115,112, +108,105,116,45,115,116,120,45,108,105,115,116,64,108,111,111,112,0,6,45,105, +110,102,46,48,32,20,89,162,8,100,35,39,2,18,222,28,248,22,63,193,11, +28,248,22,56,193,27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,193, +27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,193,248,2,20,248,22, +59,194,28,248,22,149,3,193,248,22,159,3,193,11,28,248,22,149,3,193,248, +22,159,3,193,11,28,248,22,149,3,193,248,22,159,3,193,11,32,21,89,162, +8,64,36,44,2,18,222,28,248,22,63,194,9,28,248,22,56,194,249,22,57, +248,22,58,196,27,248,22,59,197,28,248,22,63,193,9,28,248,22,56,193,249, +22,57,248,22,58,195,249,2,21,199,248,22,59,197,28,248,22,149,3,193,195, +12,28,248,22,149,3,194,192,12,159,34,20,99,159,34,16,1,20,24,65,98, +101,103,105,110,16,0,83,158,40,20,96,114,65,35,37,115,116,120,2,1,10, +10,10,34,80,158,34,34,20,99,159,36,16,16,30,2,1,2,2,193,30,2, +1,2,3,193,30,2,1,2,4,193,30,2,1,2,5,193,30,2,1,2,6, +193,30,2,1,2,7,193,30,2,1,2,8,193,30,2,1,2,9,193,30,2, +1,2,10,193,30,2,1,2,11,193,30,2,1,2,12,193,30,2,1,2,13, +193,30,2,1,2,14,193,30,2,1,2,15,193,30,2,1,2,16,193,30,2, +1,2,17,193,16,0,11,11,16,0,34,11,16,16,2,14,2,13,2,2,2, +17,2,9,2,7,2,8,2,12,2,6,2,4,2,3,2,5,2,15,2,16, +2,11,2,10,16,16,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, +11,16,16,2,14,2,13,2,2,2,17,2,9,2,7,2,8,2,12,2,6, +2,4,2,3,2,5,2,15,2,16,2,11,2,10,50,50,9,110,83,158,34, +16,2,89,162,8,64,37,52,2,18,223,0,28,28,248,22,56,196,10,28,248, +22,149,3,196,248,22,56,248,22,153,3,197,11,91,159,37,11,90,161,37,34, +11,27,28,248,22,56,200,248,22,59,200,248,22,59,248,22,153,3,201,28,28, +248,22,56,193,10,28,248,22,149,3,193,248,22,56,248,22,153,3,194,11,91, +159,37,11,90,161,37,34,11,250,80,159,44,51,35,203,204,28,248,22,56,199, +248,22,59,199,248,22,59,248,22,153,3,200,28,249,22,189,2,196,202,250,22, +7,9,198,248,22,177,2,198,250,22,7,249,22,57,28,248,22,56,201,248,22, +58,201,248,22,58,248,22,153,3,202,197,196,197,250,22,7,9,195,28,201,28, +28,248,22,63,196,10,28,248,22,149,3,196,248,22,63,248,22,153,3,197,11, +34,2,19,28,28,248,22,63,196,10,28,248,22,149,3,196,248,22,63,248,22, +153,3,197,11,2,19,35,28,249,22,189,2,196,198,250,22,7,9,201,248,22, +177,2,198,250,22,7,249,22,57,28,248,22,56,204,248,22,58,204,248,22,58, +248,22,153,3,205,197,196,197,250,22,7,9,198,28,197,28,28,248,22,63,199, +10,28,248,22,149,3,199,248,22,63,248,22,153,3,200,11,34,2,19,28,28, +248,22,63,199,10,28,248,22,149,3,199,248,22,63,248,22,153,3,200,11,2, +19,35,80,159,34,51,35,83,158,34,16,2,89,162,8,100,35,45,2,18,223, +0,28,248,22,56,194,27,248,22,59,195,28,248,22,56,193,27,248,22,59,194, +28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22,59,194,28, +248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22,59,194,28,248, +22,56,193,27,248,22,59,194,28,248,22,56,193,248,80,159,42,50,35,248,22, +59,194,248,80,159,42,38,35,193,248,80,159,41,38,35,193,248,80,159,40,38, +35,193,248,80,159,39,38,35,193,248,80,159,38,38,35,193,248,80,159,37,38, +35,193,248,80,159,36,38,35,193,248,80,159,35,38,35,194,80,159,34,50,35, +83,158,34,16,2,32,0,89,162,34,35,37,2,2,222,28,248,22,149,3,193, +248,22,47,248,22,153,3,194,11,80,159,34,34,35,83,158,34,16,2,32,0, +89,162,34,35,37,2,3,222,28,248,22,63,193,10,28,248,22,149,3,193,248, +22,63,248,22,153,3,194,11,80,159,34,35,35,83,158,34,16,2,32,0,89, +162,34,35,37,2,4,222,28,248,22,63,193,9,28,248,22,149,3,193,28,248, +22,63,248,22,153,3,194,9,11,11,80,159,34,36,35,83,158,34,16,2,32, +0,89,162,34,35,37,2,5,222,28,248,22,56,193,10,28,248,22,149,3,193, +248,22,56,248,22,153,3,194,11,80,159,34,37,35,83,158,34,16,2,89,162, +34,35,46,2,6,223,0,28,248,22,64,194,10,28,248,22,149,3,194,28,248, +22,64,248,22,153,3,195,10,27,248,22,153,3,195,28,248,22,56,193,27,248, +22,59,194,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22, 59,194,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22,59, -194,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22,59,194, -28,248,22,56,193,248,80,159,42,50,35,248,22,59,194,248,80,159,42,38,35, -193,248,80,159,41,38,35,193,248,80,159,40,38,35,193,248,80,159,39,38,35, -193,248,80,159,38,38,35,193,248,80,159,37,38,35,193,248,80,159,36,38,35, -193,28,248,22,56,194,248,80,159,35,38,35,248,22,59,195,11,83,159,34,93, -80,159,34,39,35,32,41,89,162,34,35,37,2,14,222,28,248,22,56,193,248, -22,58,193,248,22,58,248,22,217,194,83,159,34,93,80,159,34,40,35,32,42, -89,162,34,35,37,2,16,222,28,248,22,56,193,248,22,59,193,248,22,59,248, -22,217,194,83,159,34,93,80,159,34,41,35,32,43,89,162,34,35,42,2,18, -222,28,248,22,213,193,248,22,223,193,27,28,248,22,63,194,11,28,248,22,56, -194,27,248,22,59,195,28,248,22,63,193,11,28,248,22,56,193,248,32,44,89, -162,8,100,35,39,2,35,222,28,248,22,63,193,11,28,248,22,56,193,27,248, -22,59,194,28,248,22,63,193,11,28,248,22,56,193,27,248,22,59,194,28,248, -22,63,193,11,28,248,22,56,193,248,2,44,248,22,59,194,28,248,22,213,193, -248,22,223,193,11,28,248,22,213,193,248,22,223,193,11,28,248,22,213,193,248, -22,223,193,11,248,22,59,194,28,248,22,213,193,248,22,223,193,11,28,248,22, -213,194,248,22,223,194,11,28,192,28,248,22,63,194,9,28,248,22,56,194,249, -22,57,248,22,58,196,249,32,45,89,162,8,64,36,44,2,35,222,28,248,22, -63,194,9,28,248,22,56,194,249,22,57,248,22,58,196,27,248,22,59,197,28, -248,22,63,193,9,28,248,22,56,193,249,22,57,248,22,58,195,249,2,45,199, -248,22,59,197,28,248,22,213,193,195,12,28,248,22,213,194,192,12,196,248,22, -59,198,28,248,22,213,194,192,12,193,83,159,34,93,80,159,34,42,35,32,46, -89,162,34,36,40,2,20,222,28,248,22,213,193,28,248,22,252,229,1,248,22, -217,194,28,193,249,22,188,195,248,22,252,233,1,248,22,217,196,10,11,11,83, -159,34,93,80,159,34,43,35,32,47,89,162,34,36,39,2,22,222,249,22,252, -234,1,248,22,217,195,195,83,159,34,93,80,159,34,44,35,32,48,89,162,34, -36,37,2,24,222,28,192,192,248,194,11,83,159,34,93,80,159,34,45,35,32, -49,89,162,34,36,38,2,26,222,28,193,249,22,57,194,195,11,83,159,34,93, -80,159,34,46,35,32,50,89,162,34,36,38,2,28,222,28,192,28,193,28,248, -22,63,194,192,249,22,71,194,195,11,11,83,159,34,93,80,159,34,47,35,32, -51,89,162,34,35,38,2,30,222,250,22,1,22,2,22,65,195,83,159,34,93, -80,159,34,48,35,32,52,89,162,34,35,40,2,32,222,249,22,1,22,67,250, -22,1,22,2,22,65,197,83,159,34,93,80,159,34,49,35,89,162,34,37,52, -2,34,223,0,91,159,37,11,90,161,37,34,11,28,28,248,22,56,197,10,28, -248,22,213,197,248,22,56,248,22,217,198,11,91,159,37,11,90,161,37,34,11, +194,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,248,80,159,42,50, +35,248,22,59,194,248,80,159,42,38,35,193,248,80,159,41,38,35,193,248,80, +159,40,38,35,193,248,80,159,39,38,35,193,248,80,159,38,38,35,193,248,80, +159,37,38,35,193,248,80,159,36,38,35,193,28,248,22,56,194,248,80,159,35, +38,35,248,22,59,195,11,80,159,34,38,35,83,158,34,16,2,32,0,89,162, +34,35,37,2,7,222,28,248,22,56,193,248,22,58,193,248,22,58,248,22,153, +3,194,80,159,34,39,35,83,158,34,16,2,32,0,89,162,34,35,37,2,8, +222,28,248,22,56,193,248,22,59,193,248,22,59,248,22,153,3,194,80,159,34, +40,35,83,158,34,16,2,32,0,89,162,34,35,42,2,9,222,28,248,22,149, +3,193,248,22,159,3,193,27,28,248,22,63,194,11,28,248,22,56,194,27,248, +22,59,195,28,248,22,63,193,11,28,248,22,56,193,248,2,20,248,22,59,194, +28,248,22,149,3,193,248,22,159,3,193,11,28,248,22,149,3,194,248,22,159, +3,194,11,28,192,28,248,22,63,194,9,28,248,22,56,194,249,22,57,248,22, +58,196,249,2,21,196,248,22,59,198,28,248,22,149,3,194,192,12,193,80,159, +34,41,35,83,158,34,16,2,32,0,89,162,34,36,40,2,10,222,28,248,22, +149,3,193,28,248,22,165,7,248,22,153,3,194,28,193,249,22,188,2,195,248, +22,169,7,248,22,153,3,196,10,11,11,80,159,34,42,35,83,158,34,16,2, +32,0,89,162,34,36,39,2,11,222,249,22,170,7,248,22,153,3,195,195,80, +159,34,43,35,83,158,34,16,2,32,0,89,162,34,36,37,2,12,222,28,192, +192,248,194,11,80,159,34,44,35,83,158,34,16,2,32,0,89,162,34,36,38, +2,13,222,28,193,249,22,57,194,195,11,80,159,34,45,35,83,158,34,16,2, +32,0,89,162,34,36,38,2,14,222,28,192,28,193,28,248,22,63,194,192,249, +22,71,194,195,11,11,80,159,34,46,35,83,158,34,16,2,32,0,89,162,34, +35,38,2,15,222,250,22,1,22,2,22,65,195,80,159,34,47,35,83,158,34, +16,2,32,0,89,162,34,35,40,2,16,222,249,22,1,22,67,250,22,1,22, +2,22,65,197,80,159,34,48,35,83,158,34,16,2,89,162,34,37,52,2,17, +223,0,91,159,37,11,90,161,37,34,11,28,28,248,22,56,197,10,28,248,22, +149,3,197,248,22,56,248,22,153,3,198,11,91,159,37,11,90,161,37,34,11, 250,80,159,43,51,35,203,204,28,248,22,56,203,248,22,59,203,248,22,59,248, -22,217,204,28,249,22,189,196,202,250,22,7,9,202,248,22,177,198,250,22,7, -249,22,57,28,248,22,56,205,248,22,58,205,248,22,58,248,22,217,206,197,196, -197,250,22,7,9,199,28,201,28,28,248,22,63,200,10,28,248,22,213,200,248, -22,63,248,22,217,201,11,34,2,36,28,28,248,22,63,200,10,28,248,22,213, -200,248,22,63,248,22,217,201,11,2,36,35,250,22,7,195,196,249,22,188,199, -202,93,68,35,37,107,101,114,110,101,108,53,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2029); +22,153,3,204,28,249,22,189,2,196,202,250,22,7,9,202,248,22,177,2,198, +250,22,7,249,22,57,28,248,22,56,205,248,22,58,205,248,22,58,248,22,153, +3,206,197,196,197,250,22,7,9,199,28,201,28,28,248,22,63,200,10,28,248, +22,149,3,200,248,22,63,248,22,153,3,201,11,34,2,19,28,28,248,22,63, +200,10,28,248,22,149,3,200,248,22,63,248,22,153,3,201,11,2,19,35,250, +22,7,195,196,249,22,188,2,199,202,80,159,34,49,35,93,68,35,37,107,101, +114,110,101,108,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2147); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,135,252,241,18,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,71,35,37,113,113, -45,97,110,100,45,111,114,1,29,2,11,11,10,10,10,34,80,158,34,34,20, -99,159,34,16,1,30,3,2,2,69,113,113,45,97,112,112,101,110,100,4,254, -1,16,0,11,11,16,1,2,4,35,11,16,6,66,108,101,116,114,101,99,5, -62,111,114,6,64,108,101,116,42,7,70,113,117,97,115,105,113,117,111,116,101, -8,63,97,110,100,9,63,108,101,116,10,16,6,11,11,11,11,11,11,16,6, -2,5,2,6,2,7,2,8,2,9,2,10,34,40,96,16,5,95,2,10,2, -7,2,5,87,98,83,159,34,93,80,159,34,52,35,89,162,8,64,38,46,65, -99,104,101,99,107,11,223,0,28,248,22,63,196,12,27,28,194,248,22,83,197, -248,80,158,36,34,248,80,158,37,34,248,22,58,199,28,28,248,22,63,198,11, -28,249,22,228,194,248,22,58,200,10,27,248,22,59,199,28,248,22,63,193,11, -28,249,22,228,195,248,22,58,195,10,27,248,22,59,194,28,248,22,63,193,11, -28,249,22,228,196,248,22,58,195,10,27,248,22,59,194,28,248,22,63,193,11, -28,249,22,228,197,248,22,58,195,10,249,32,12,89,162,34,36,41,71,105,100, -45,105,110,45,108,105,115,116,63,13,222,28,248,22,63,194,11,28,249,22,228, -194,248,22,58,196,10,27,248,22,59,195,28,248,22,63,193,11,28,249,22,228, -195,248,22,58,195,10,27,248,22,59,194,28,248,22,63,193,11,28,249,22,228, -196,248,22,58,195,10,249,2,12,196,248,22,59,195,197,248,22,59,195,251,22, -252,47,2,11,6,20,20,100,117,112,108,105,99,97,116,101,32,105,100,101,110, -116,105,102,105,101,114,14,199,196,251,80,159,39,52,35,198,199,248,22,59,201, -249,22,57,198,203,83,159,34,93,80,159,34,51,35,89,162,8,64,38,47,2, -11,223,0,28,248,22,63,197,12,27,28,195,248,22,83,198,248,80,158,36,34, -248,80,158,37,34,248,22,58,200,27,250,22,122,198,248,22,217,197,9,28,28, -248,22,63,193,11,28,249,22,228,195,248,22,58,195,10,27,248,22,59,194,28, -248,22,63,193,11,28,249,22,228,196,248,22,58,195,10,27,248,22,59,194,28, -248,22,63,193,11,28,249,22,228,197,248,22,58,195,10,27,248,22,59,194,28, -248,22,63,193,11,28,249,22,228,198,248,22,58,195,10,249,2,12,198,248,22, -59,195,251,22,252,47,2,11,6,20,20,100,117,112,108,105,99,97,116,101,32, -105,100,101,110,116,105,102,105,101,114,15,201,197,87,94,250,22,121,198,248,22, -217,197,249,22,57,198,197,251,80,159,40,51,35,199,200,201,248,22,59,203,83, -159,34,93,80,159,34,50,35,89,162,8,100,38,50,64,108,111,111,112,16,223, -0,28,248,22,63,197,9,27,248,22,58,198,249,22,62,28,28,248,80,158,38, -36,195,28,248,80,158,38,36,248,80,158,39,35,196,248,80,158,38,37,248,80, -158,39,35,248,80,158,40,35,197,11,11,28,248,22,47,248,22,217,248,80,158, -40,34,197,28,196,249,22,57,248,80,158,40,34,197,248,80,158,40,34,248,80, -158,41,35,198,250,22,216,201,249,22,62,249,22,62,248,80,158,45,34,202,9, -248,80,158,43,35,200,197,251,22,252,47,2,11,6,30,30,98,97,100,32,115, -121,110,116,97,120,32,40,110,111,116,32,97,110,32,105,100,101,110,116,105,102, -105,101,114,41,17,201,248,80,158,42,34,199,251,22,252,47,2,11,6,59,59, -98,97,100,32,115,121,110,116,97,120,32,40,110,111,116,32,97,110,32,105,100, -101,110,116,105,102,105,101,114,32,97,110,100,32,101,120,112,114,101,115,115,105, -111,110,32,102,111,114,32,97,32,98,105,110,100,105,110,103,41,18,201,198,251, -80,159,41,50,35,200,201,202,248,22,59,204,83,159,34,93,80,159,34,49,35, -89,162,34,35,39,70,115,116,120,45,50,108,105,115,116,63,19,223,0,28,248, -80,158,35,36,194,28,248,80,158,35,36,248,80,158,36,35,195,248,80,158,35, -37,248,80,158,36,35,248,80,158,37,35,196,11,11,83,159,34,93,80,159,34, -48,35,89,162,8,64,35,38,68,115,116,120,45,99,97,100,114,20,223,0,248, -80,158,35,34,248,80,158,36,35,195,27,20,15,159,35,34,40,27,89,162,34, -38,8,32,62,103,111,21,224,2,1,91,159,36,11,90,161,35,34,11,80,159, -37,48,35,90,161,35,35,11,80,159,37,49,35,87,94,28,28,248,80,158,38, -38,197,27,248,80,158,39,35,198,28,248,80,158,39,37,193,10,28,248,80,158, -39,37,248,80,158,40,35,194,10,28,198,28,248,22,47,248,22,217,248,80,158, -41,34,195,248,80,158,39,37,248,80,158,40,35,248,80,158,41,35,195,11,11, -10,250,22,252,47,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,22, -199,12,27,28,198,27,248,80,158,40,34,248,80,158,41,35,200,28,248,22,47, -248,22,217,194,192,11,11,27,248,80,158,40,39,27,28,195,248,80,158,42,35, -201,200,248,80,158,42,34,248,80,158,43,35,194,27,248,80,158,41,35,248,80, -158,42,35,28,196,248,80,158,43,35,202,201,28,193,27,251,80,159,45,50,35, -199,204,202,198,87,94,28,202,12,28,249,22,190,248,22,70,195,39,27,247,22, -116,251,80,159,46,51,35,196,200,205,197,251,80,159,45,52,35,199,204,196,9, -250,22,216,201,28,198,250,22,1,22,66,250,22,66,20,15,159,50,36,40,248, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,106,0,0,0,1,0,0,3,0,13,0,20,0, +24,0,29,0,40,0,44,0,47,0,53,0,65,0,76,0,85,0,88,0,94, +0,105,0,119,0,129,0,133,0,143,0,153,0,156,0,164,0,181,0,189,0, +200,0,207,0,212,0,222,0,224,0,234,0,240,0,245,0,255,0,5,1,15, +1,25,1,27,1,37,1,39,1,42,1,50,1,59,1,138,1,150,1,162,1, +176,1,190,1,204,1,210,1,222,1,0,2,7,2,13,2,19,2,47,2,198, +2,204,2,215,2,231,2,14,3,54,3,84,3,100,3,107,3,113,3,119,3, +125,3,147,3,193,3,218,3,223,3,229,3,252,3,2,4,8,4,14,4,20, +4,40,4,56,4,72,4,88,4,107,4,131,4,154,4,173,4,201,4,246,4, +0,5,66,5,123,5,129,5,184,5,189,5,195,5,201,5,206,5,212,5,228, +5,244,5,4,6,19,6,50,6,56,6,62,6,68,6,0,0,26,19,0,0, +29,11,11,69,113,113,45,97,112,112,101,110,100,66,108,101,116,114,101,99,63, +108,101,116,64,108,101,116,42,70,113,117,97,115,105,113,117,111,116,101,63,97, +110,100,62,111,114,65,99,104,101,99,107,71,105,100,45,105,110,45,108,105,115, +116,63,70,115,116,120,45,50,108,105,115,116,63,68,115,116,120,45,99,97,100, +114,62,103,111,65,35,37,115,116,120,70,108,97,109,98,100,97,45,115,116,120, +73,108,101,116,114,101,99,45,118,97,108,117,101,115,3,1,7,101,110,118,50, +53,48,52,63,115,116,120,3,1,7,101,110,118,50,53,48,54,3,1,7,101, +110,118,50,53,49,55,62,113,113,67,117,110,113,117,111,116,101,76,117,110,113, +117,111,116,101,45,115,112,108,105,99,105,110,103,67,113,113,45,108,105,115,116, +70,97,112,112,108,121,45,99,111,110,115,66,110,111,114,109,97,108,64,104,101, +114,101,3,1,7,101,110,118,50,53,51,51,61,120,3,1,7,101,110,118,50, +53,51,54,65,113,117,111,116,101,64,108,105,115,116,3,1,7,101,110,118,50, +53,51,55,65,108,105,115,116,42,3,1,7,101,110,118,50,53,51,53,3,1, +7,101,110,118,50,53,51,57,61,108,3,1,7,101,110,118,50,53,53,49,61, +101,62,105,102,67,111,114,45,112,97,114,116,68,35,37,107,101,114,110,101,108, +32,43,89,162,34,36,41,2,10,222,28,248,22,63,194,11,28,249,22,164,3, +194,248,22,58,196,10,27,248,22,59,195,28,248,22,63,193,11,28,249,22,164, +3,195,248,22,58,195,10,27,248,22,59,194,28,248,22,63,193,11,28,249,22, +164,3,196,248,22,58,195,10,249,2,43,196,248,22,59,195,30,2,14,67,115, +116,120,45,99,97,114,5,30,2,14,67,115,116,120,45,99,100,114,6,30,2, +14,69,115,116,120,45,112,97,105,114,63,11,30,2,14,69,115,116,120,45,110, +117,108,108,63,10,30,2,14,69,115,116,120,45,108,105,115,116,63,8,95,8, +193,11,16,0,97,10,35,11,93,159,2,14,9,11,16,0,96,10,34,11,16, +14,2,5,2,1,2,3,2,1,2,4,2,1,2,7,2,1,2,6,2,1, +2,8,2,1,2,2,2,1,95,8,51,8,50,8,49,18,158,2,15,8,52, +18,158,2,16,8,52,16,6,11,11,2,15,77,108,101,116,114,101,99,45,118, +97,108,117,101,115,45,115,116,120,2,17,2,17,101,8,51,8,50,8,49,8, +55,16,10,11,11,2,18,66,110,97,109,101,100,63,65,115,116,97,114,63,66, +116,97,114,103,101,116,2,19,2,19,2,19,2,19,16,8,11,11,2,11,2, +10,2,12,3,1,7,101,110,118,50,53,48,57,3,1,7,101,110,118,50,53, +48,56,3,1,7,101,110,118,50,53,48,55,16,4,11,11,64,110,97,109,101, +3,1,7,101,110,118,50,53,49,53,16,6,11,11,68,98,105,110,100,105,110, +103,115,64,98,111,100,121,2,20,2,20,16,4,11,11,72,110,101,119,45,98, +105,110,100,105,110,103,115,3,1,7,101,110,118,50,53,49,56,18,158,2,16, +8,56,18,158,66,108,97,109,98,100,97,8,56,16,4,11,11,2,13,3,1, +7,101,110,118,50,53,48,53,18,99,70,108,101,116,45,118,97,108,117,101,115, +8,51,8,50,8,49,8,55,8,59,16,4,11,11,2,18,3,1,7,101,110, +118,50,53,50,57,18,99,71,108,101,116,42,45,118,97,108,117,101,115,8,51, +8,50,8,49,8,55,8,59,16,4,11,11,2,18,3,1,7,101,110,118,50, +53,51,48,18,99,2,16,8,51,8,50,8,49,8,55,8,59,16,4,11,11, +2,18,3,1,7,101,110,118,50,53,51,49,30,2,14,71,105,100,101,110,116, +105,102,105,101,114,63,2,95,8,51,8,50,8,49,18,158,2,27,8,64,18, +158,2,22,8,64,18,158,2,23,8,64,16,4,11,11,67,105,110,45,102,111, +114,109,3,1,7,101,110,118,50,53,51,52,16,8,11,11,2,27,71,117,110, +113,117,111,116,101,45,115,116,120,1,20,117,110,113,117,111,116,101,45,115,112, +108,105,99,105,110,103,45,115,116,120,2,28,2,28,2,28,98,8,51,8,50, +8,49,8,69,8,68,16,6,11,11,2,29,63,111,108,100,2,30,2,30,18, +158,9,8,70,18,158,2,31,8,70,98,8,51,8,50,8,49,8,69,8,68, +16,6,11,11,61,97,61,100,2,33,2,33,18,158,2,32,8,73,18,158,2, +32,8,73,18,158,2,34,8,73,18,158,2,34,8,73,16,4,11,11,65,102, +105,114,115,116,3,1,7,101,110,118,50,53,52,54,16,4,11,11,2,24,3, +1,7,101,110,118,50,53,52,48,16,6,11,11,2,29,65,108,101,118,101,108, +2,36,2,36,16,4,11,11,2,21,3,1,7,101,110,118,50,53,51,56,16, +8,11,11,64,102,111,114,109,2,26,2,25,2,35,2,35,2,35,18,103,2, +6,8,51,8,50,8,49,8,69,8,68,8,82,8,81,8,80,8,79,8,78, +16,8,11,11,64,117,113,115,100,65,111,108,100,45,108,2,37,2,38,2,38, +2,38,16,4,11,11,64,114,101,115,116,3,1,7,101,110,118,50,53,52,57, +18,105,2,2,8,51,8,50,8,49,8,69,8,68,8,82,8,81,8,80,8, +79,8,78,8,85,8,84,105,8,51,8,50,8,49,8,69,8,68,8,82,8, +81,8,80,8,79,8,78,8,85,8,84,16,4,11,11,65,114,101,115,116,120, +3,1,7,101,110,118,50,53,53,51,18,158,95,10,2,31,2,23,8,87,18, +104,72,108,105,115,116,45,62,118,101,99,116,111,114,8,51,8,50,8,49,8, +69,8,68,8,82,8,81,8,80,8,79,16,4,11,11,2,37,3,1,7,101, +110,118,50,53,53,52,16,4,11,11,62,108,50,3,1,7,101,110,118,50,53, +53,53,18,104,63,98,111,120,8,51,8,50,8,49,8,69,8,68,8,82,8, +81,8,80,8,79,16,4,11,11,61,118,3,1,7,101,110,118,50,53,53,54, +16,4,11,11,62,113,118,3,1,7,101,110,118,50,53,53,55,18,158,2,27, +8,64,98,8,51,8,50,8,49,16,4,11,11,2,27,3,1,7,101,110,118, +50,53,53,57,16,4,11,11,2,29,3,1,7,101,110,118,50,53,54,48,16, +4,11,11,2,39,3,1,7,101,110,118,50,53,54,49,18,158,10,8,92,18, +158,2,40,8,92,18,158,2,7,8,92,18,158,11,8,92,18,158,2,27,8, +64,16,4,11,11,2,39,3,1,7,101,110,118,50,53,54,53,16,4,11,11, +2,29,3,1,7,101,110,118,50,53,54,52,16,4,11,11,2,27,3,1,7, +101,110,118,50,53,54,51,18,99,11,8,51,8,50,8,49,8,100,8,99,8, +98,99,8,51,8,50,8,49,8,100,8,99,8,98,16,4,11,11,63,116,109, +112,3,1,7,101,110,118,50,53,54,54,18,158,2,4,8,102,18,158,2,40, +8,102,18,158,2,8,8,102,159,34,20,99,159,34,16,1,20,24,65,98,101, +103,105,110,16,0,83,158,40,20,96,114,71,35,37,113,113,45,97,110,100,45, +111,114,2,1,10,10,10,34,80,158,34,34,20,99,159,34,16,1,30,2,1, +2,2,193,16,0,11,11,16,1,2,2,35,11,16,6,2,3,2,4,2,5, +2,6,2,7,2,8,16,6,11,11,11,11,11,11,16,6,2,3,2,4,2, +5,2,6,2,7,2,8,34,40,96,16,5,95,2,4,2,5,2,3,87,98, +83,158,34,16,2,89,162,8,64,38,46,2,9,223,0,28,248,22,63,196,12, +27,28,194,248,22,83,197,248,80,158,36,34,248,80,158,37,34,248,22,58,199, +28,28,248,22,63,198,11,28,249,22,164,3,194,248,22,58,200,10,27,248,22, +59,199,28,248,22,63,193,11,28,249,22,164,3,195,248,22,58,195,10,27,248, +22,59,194,28,248,22,63,193,11,28,249,22,164,3,196,248,22,58,195,10,27, +248,22,59,194,28,248,22,63,193,11,28,249,22,164,3,197,248,22,58,195,10, +249,2,43,197,248,22,59,195,251,22,175,8,11,6,20,20,100,117,112,108,105, +99,97,116,101,32,105,100,101,110,116,105,102,105,101,114,199,196,251,80,159,39, +52,35,198,199,248,22,59,201,249,22,57,198,203,80,159,34,52,35,83,158,34, +16,2,89,162,8,64,38,47,2,9,223,0,28,248,22,63,197,12,27,28,195, +248,22,83,198,248,80,158,36,34,248,80,158,37,34,248,22,58,200,27,250,22, +122,198,248,22,153,3,197,9,28,28,248,22,63,193,11,28,249,22,164,3,195, +248,22,58,195,10,27,248,22,59,194,28,248,22,63,193,11,28,249,22,164,3, +196,248,22,58,195,10,27,248,22,59,194,28,248,22,63,193,11,28,249,22,164, +3,197,248,22,58,195,10,27,248,22,59,194,28,248,22,63,193,11,28,249,22, +164,3,198,248,22,58,195,10,249,2,43,198,248,22,59,195,251,22,175,8,11, +6,20,20,100,117,112,108,105,99,97,116,101,32,105,100,101,110,116,105,102,105, +101,114,201,197,87,94,250,22,121,198,248,22,153,3,197,249,22,57,198,197,251, +80,159,40,51,35,199,200,201,248,22,59,203,80,159,34,51,35,83,158,34,16, +2,89,162,8,100,38,50,64,108,111,111,112,223,0,28,248,22,63,197,9,27, +248,22,58,198,249,22,62,28,28,248,80,158,38,36,195,28,248,80,158,38,36, +248,80,158,39,35,196,248,80,158,38,37,248,80,158,39,35,248,80,158,40,35, +197,11,11,28,248,22,47,248,22,153,3,248,80,158,40,34,197,28,196,249,22, +57,248,80,158,40,34,197,248,80,158,40,34,248,80,158,41,35,198,250,22,152, +3,201,249,22,62,249,22,62,248,80,158,45,34,202,9,248,80,158,43,35,200, +197,251,22,175,8,11,6,30,30,98,97,100,32,115,121,110,116,97,120,32,40, +110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,41,201,248,80, +158,42,34,199,251,22,175,8,11,6,59,59,98,97,100,32,115,121,110,116,97, +120,32,40,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,32, +97,110,100,32,101,120,112,114,101,115,115,105,111,110,32,102,111,114,32,97,32, +98,105,110,100,105,110,103,41,201,198,251,80,159,41,50,35,200,201,202,248,22, +59,204,80,159,34,50,35,83,158,34,16,2,89,162,34,35,39,2,11,223,0, +28,248,80,158,35,36,194,28,248,80,158,35,36,248,80,158,36,35,195,248,80, +158,35,37,248,80,158,36,35,248,80,158,37,35,196,11,11,80,159,34,49,35, +83,158,34,16,2,89,162,8,64,35,38,2,12,223,0,248,80,158,35,34,248, +80,158,36,35,195,80,159,34,48,35,27,20,15,159,35,34,40,27,89,162,34, +38,8,32,2,13,224,2,1,91,159,36,11,90,161,35,34,11,80,159,37,48, +35,90,161,35,35,11,80,159,37,49,35,87,94,28,28,248,80,158,38,38,197, +27,248,80,158,39,35,198,28,248,80,158,39,37,193,10,28,248,80,158,39,37, +248,80,158,40,35,194,10,28,198,28,248,22,47,248,22,153,3,248,80,158,41, +34,195,248,80,158,39,37,248,80,158,40,35,248,80,158,41,35,195,11,11,10, +250,22,175,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,199,12,27, +28,198,27,248,80,158,40,34,248,80,158,41,35,200,28,248,22,47,248,22,153, +3,194,192,11,11,27,248,80,158,40,39,27,28,195,248,80,158,42,35,201,200, +248,80,158,42,34,248,80,158,43,35,194,27,248,80,158,41,35,248,80,158,42, +35,28,196,248,80,158,43,35,202,201,28,193,27,251,80,159,45,50,35,199,204, +202,198,87,94,28,202,12,28,249,22,190,2,248,22,70,195,39,27,247,22,116, +251,80,159,46,51,35,196,200,205,197,251,80,159,45,52,35,199,204,196,9,250, +22,152,3,201,28,198,250,22,1,22,66,250,22,66,20,15,159,50,36,40,248, 22,66,249,22,66,248,22,66,23,16,250,22,68,20,15,159,56,37,40,249,22, 1,22,66,249,22,2,22,58,23,19,23,16,204,249,22,2,22,59,200,250,22, -68,23,17,198,199,203,251,22,252,47,2,11,6,62,62,98,97,100,32,115,121, -110,116,97,120,32,40,110,111,116,32,97,32,115,101,113,117,101,110,99,101,32, -111,102,32,105,100,101,110,116,105,102,105,101,114,45,45,101,120,112,114,101,115, -115,105,111,110,32,98,105,110,100,105,110,103,115,41,23,203,248,80,158,45,34, -248,80,158,46,35,205,250,22,7,89,162,34,35,41,9,224,5,3,251,196,198, -10,11,20,15,159,39,38,40,89,162,34,35,41,9,224,5,3,251,196,198,11, -10,20,15,159,39,39,40,89,162,34,35,41,9,224,5,3,251,196,198,11,11, -20,15,159,39,40,40,39,20,99,159,39,16,6,30,24,65,35,37,115,116,120, -25,67,115,116,120,45,99,97,114,26,5,30,27,2,25,67,115,116,120,45,99, -100,114,28,6,30,29,2,25,69,115,116,120,45,112,97,105,114,63,30,11,30, -31,2,25,69,115,116,120,45,110,117,108,108,63,32,10,30,33,2,25,69,115, -116,120,45,108,105,115,116,63,34,8,30,35,2,25,69,115,116,120,45,62,108, -105,115,116,36,4,16,7,18,97,70,108,97,109,98,100,97,45,115,116,120,37, -39,97,37,10,34,11,16,14,2,7,2,2,2,6,2,2,2,4,2,2,2, -5,2,2,2,8,2,2,2,9,2,2,2,10,2,2,98,36,10,35,11,93, -159,2,25,9,11,16,0,96,35,8,254,1,11,16,0,18,16,2,158,73,108, -101,116,114,101,99,45,118,97,108,117,101,115,38,39,40,18,104,2,38,48,37, -36,35,16,6,47,11,2,37,77,108,101,116,114,101,99,45,118,97,108,117,101, -115,45,115,116,120,39,3,1,7,101,110,118,50,53,48,52,40,2,40,16,10, -46,11,63,115,116,120,41,66,110,97,109,101,100,63,42,65,115,116,97,114,63, -43,66,116,97,114,103,101,116,44,3,1,7,101,110,118,50,53,48,54,45,2, -45,2,45,2,45,16,8,45,11,2,19,2,13,2,20,3,1,7,101,110,118, -50,53,48,57,46,3,1,7,101,110,118,50,53,48,56,47,3,1,7,101,110, -118,50,53,48,55,48,16,8,44,11,2,20,2,13,2,19,3,1,7,101,110, -118,50,53,49,48,49,2,49,2,49,16,4,43,11,64,110,97,109,101,50,3, -1,7,101,110,118,50,53,49,53,51,16,6,42,11,68,98,105,110,100,105,110, -103,115,52,64,98,111,100,121,53,3,1,7,101,110,118,50,53,49,55,54,2, -54,16,4,41,11,72,110,101,119,45,98,105,110,100,105,110,103,115,55,3,1, -7,101,110,118,50,53,49,56,56,18,16,2,158,66,108,97,109,98,100,97,57, -48,49,18,100,70,108,101,116,45,118,97,108,117,101,115,58,52,37,36,35,47, -16,4,51,11,2,21,3,1,7,101,110,118,50,53,48,53,59,16,4,50,11, -2,41,3,1,7,101,110,118,50,53,50,57,60,18,100,71,108,101,116,42,45, -118,97,108,117,101,115,61,54,37,36,35,47,51,16,4,53,11,2,41,3,1, -7,101,110,118,50,53,51,48,62,18,100,2,38,56,37,36,35,47,51,16,4, -55,11,2,41,3,1,7,101,110,118,50,53,51,49,63,11,16,5,93,2,8, -87,97,83,159,34,93,80,159,34,57,35,89,162,34,39,53,62,113,113,64,223, -0,28,248,80,158,35,35,197,27,248,80,158,36,38,198,28,28,248,80,158,36, -34,193,28,249,22,230,194,197,248,80,158,36,39,198,11,11,27,248,80,158,37, -36,199,87,94,28,28,248,80,158,37,35,193,248,22,252,17,2,248,80,158,38, -37,248,80,158,39,36,195,10,251,22,252,47,2,67,117,110,113,117,111,116,101, -65,6,30,30,101,120,112,101,99,116,115,32,101,120,97,99,116,108,121,32,111, -110,101,32,101,120,112,114,101,115,115,105,111,110,66,199,202,12,28,248,22,193, -200,248,80,158,37,38,193,252,80,159,41,58,35,200,201,202,203,248,22,178,205, -28,28,248,80,158,36,34,193,28,249,22,230,194,20,15,159,37,43,40,248,80, -158,36,39,198,11,11,252,80,159,40,58,35,199,200,201,202,248,22,177,204,28, -28,248,80,158,36,34,193,28,249,22,230,194,198,248,80,158,36,39,198,11,11, -251,22,252,47,2,76,117,110,113,117,111,116,101,45,115,112,108,105,99,105,110, -103,67,6,33,33,105,110,118,97,108,105,100,32,99,111,110,116,101,120,116,32, -119,105,116,104,105,110,32,113,117,97,115,105,113,117,111,116,101,68,198,201,28, -28,248,80,158,36,35,193,28,248,80,158,36,34,248,80,158,37,38,194,28,249, -22,230,248,80,158,38,38,195,198,248,80,158,36,39,193,11,11,11,27,248,80, -158,37,36,194,87,94,28,28,248,80,158,37,35,193,248,22,252,17,2,248,80, -158,38,37,248,80,158,39,36,195,10,251,22,252,47,2,2,65,6,30,30,101, -120,112,101,99,116,115,32,101,120,97,99,116,108,121,32,111,110,101,32,101,120, -112,114,101,115,115,105,111,110,69,199,202,12,27,248,80,158,38,38,194,27,248, -80,158,39,36,201,27,252,80,159,44,57,35,203,204,205,248,80,158,45,36,23, -15,23,15,28,248,22,193,203,27,28,249,22,252,19,2,195,196,28,248,80,158, -41,37,194,20,15,159,40,37,40,249,22,65,20,15,159,42,38,40,195,193,250, -22,65,20,15,159,43,44,40,198,195,27,252,80,159,45,58,35,204,205,206,201, -248,22,178,23,17,28,28,249,22,252,19,2,195,196,249,22,252,19,2,194,198, -11,202,27,27,20,15,159,42,45,40,27,28,249,22,252,19,2,197,201,28,248, -80,158,44,37,196,20,15,159,43,37,40,249,22,65,20,15,159,45,38,40,197, -195,28,248,80,158,44,37,193,249,22,65,20,15,159,45,39,40,195,28,28,248, -22,56,193,28,249,22,230,20,15,159,45,40,40,248,22,58,195,10,249,22,230, -20,15,159,45,41,40,248,22,58,195,11,250,22,67,248,22,58,196,196,248,22, -59,196,250,22,65,20,15,159,46,42,40,196,195,27,28,249,22,252,19,2,197, -198,28,248,80,158,43,37,196,20,15,159,42,37,40,249,22,65,20,15,159,44, -38,40,197,195,28,248,80,158,43,37,193,249,22,65,20,15,159,44,39,40,195, -28,28,248,22,56,193,28,249,22,230,20,15,159,44,40,40,248,22,58,195,10, -249,22,230,20,15,159,44,41,40,248,22,58,195,11,250,22,67,248,22,58,196, -196,248,22,59,196,250,22,65,20,15,159,45,42,40,196,195,252,80,159,40,58, -35,199,200,201,202,203,28,28,248,22,213,197,248,22,252,229,1,248,22,217,198, -11,27,248,22,252,236,1,248,22,217,199,27,252,80,159,41,57,35,200,201,202, -198,204,28,249,22,252,19,2,195,194,198,249,22,65,20,15,159,38,46,40,194, -28,248,22,213,197,28,248,22,113,248,22,217,198,27,248,22,114,248,22,217,199, -27,252,80,159,41,57,35,200,201,202,198,204,28,249,22,252,19,2,195,194,198, -249,22,65,20,15,159,38,47,40,194,196,196,83,159,34,93,80,159,34,58,35, -89,162,8,36,39,50,67,113,113,45,108,105,115,116,70,223,0,27,248,80,158, -36,38,198,27,248,80,158,37,36,199,27,252,80,159,42,57,35,201,202,203,199, -205,27,252,80,159,43,57,35,202,203,204,199,206,28,28,249,22,252,19,2,195, -197,249,22,252,19,2,194,196,11,200,27,28,249,22,252,19,2,196,198,28,248, +68,23,17,198,199,203,251,22,175,8,11,6,62,62,98,97,100,32,115,121,110, +116,97,120,32,40,110,111,116,32,97,32,115,101,113,117,101,110,99,101,32,111, +102,32,105,100,101,110,116,105,102,105,101,114,45,45,101,120,112,114,101,115,115, +105,111,110,32,98,105,110,100,105,110,103,115,41,203,248,80,158,45,34,248,80, +158,46,35,205,250,22,7,89,162,34,35,41,9,224,5,3,251,196,198,10,11, +20,15,159,39,38,40,89,162,34,35,41,9,224,5,3,251,196,198,11,10,20, +15,159,39,39,40,89,162,34,35,41,9,224,5,3,251,196,198,11,11,20,15, +159,39,40,40,39,20,99,159,39,16,6,2,44,2,45,2,46,2,47,2,48, +30,2,14,69,115,116,120,45,62,108,105,115,116,4,16,7,33,53,33,54,33, +57,33,58,33,60,33,61,33,62,11,16,5,93,2,6,87,97,83,158,34,16, +2,89,162,34,39,53,2,21,223,0,28,248,80,158,35,35,197,27,248,80,158, +36,38,198,28,28,248,80,158,36,34,193,28,249,22,166,3,194,197,248,80,158, +36,39,198,11,11,27,248,80,158,37,36,199,87,94,28,28,248,80,158,37,35, +193,248,22,145,8,248,80,158,38,37,248,80,158,39,36,195,10,251,22,175,8, +2,22,6,30,30,101,120,112,101,99,116,115,32,101,120,97,99,116,108,121,32, +111,110,101,32,101,120,112,114,101,115,115,105,111,110,199,202,12,28,248,22,129, +3,200,248,80,158,37,38,193,252,80,159,41,58,35,200,201,202,203,248,22,178, +2,205,28,28,248,80,158,36,34,193,28,249,22,166,3,194,20,15,159,37,43, +40,248,80,158,36,39,198,11,11,252,80,159,40,58,35,199,200,201,202,248,22, +177,2,204,28,28,248,80,158,36,34,193,28,249,22,166,3,194,198,248,80,158, +36,39,198,11,11,251,22,175,8,2,23,6,33,33,105,110,118,97,108,105,100, +32,99,111,110,116,101,120,116,32,119,105,116,104,105,110,32,113,117,97,115,105, +113,117,111,116,101,198,201,28,28,248,80,158,36,35,193,28,248,80,158,36,34, +248,80,158,37,38,194,28,249,22,166,3,248,80,158,38,38,195,198,248,80,158, +36,39,193,11,11,11,27,248,80,158,37,36,194,87,94,28,28,248,80,158,37, +35,193,248,22,145,8,248,80,158,38,37,248,80,158,39,36,195,10,251,22,175, +8,2,22,6,30,30,101,120,112,101,99,116,115,32,101,120,97,99,116,108,121, +32,111,110,101,32,101,120,112,114,101,115,115,105,111,110,199,202,12,27,248,80, +158,38,38,194,27,248,80,158,39,36,201,27,252,80,159,44,57,35,203,204,205, +248,80,158,45,36,23,15,23,15,28,248,22,129,3,203,27,28,249,22,147,8, +195,196,28,248,80,158,41,37,194,20,15,159,40,37,40,249,22,65,20,15,159, +42,38,40,195,193,250,22,65,20,15,159,43,44,40,198,195,27,252,80,159,45, +58,35,204,205,206,201,248,22,178,2,23,17,28,28,249,22,147,8,195,196,249, +22,147,8,194,198,11,202,27,27,20,15,159,42,45,40,27,28,249,22,147,8, +197,201,28,248,80,158,44,37,196,20,15,159,43,37,40,249,22,65,20,15,159, +45,38,40,197,195,28,248,80,158,44,37,193,249,22,65,20,15,159,45,39,40, +195,28,28,248,22,56,193,28,249,22,166,3,20,15,159,45,40,40,248,22,58, +195,10,249,22,166,3,20,15,159,45,41,40,248,22,58,195,11,250,22,67,248, +22,58,196,196,248,22,59,196,250,22,65,20,15,159,46,42,40,196,195,27,28, +249,22,147,8,197,198,28,248,80,158,43,37,196,20,15,159,42,37,40,249,22, +65,20,15,159,44,38,40,197,195,28,248,80,158,43,37,193,249,22,65,20,15, +159,44,39,40,195,28,28,248,22,56,193,28,249,22,166,3,20,15,159,44,40, +40,248,22,58,195,10,249,22,166,3,20,15,159,44,41,40,248,22,58,195,11, +250,22,67,248,22,58,196,196,248,22,59,196,250,22,65,20,15,159,45,42,40, +196,195,252,80,159,40,58,35,199,200,201,202,203,28,28,248,22,149,3,197,248, +22,165,7,248,22,153,3,198,11,27,248,22,172,7,248,22,153,3,199,27,252, +80,159,41,57,35,200,201,202,198,204,28,249,22,147,8,195,194,198,249,22,65, +20,15,159,38,46,40,194,28,248,22,149,3,197,28,248,22,113,248,22,153,3, +198,27,248,22,114,248,22,153,3,199,27,252,80,159,41,57,35,200,201,202,198, +204,28,249,22,147,8,195,194,198,249,22,65,20,15,159,38,47,40,194,196,196, +80,159,34,57,35,83,158,34,16,2,89,162,8,36,39,50,2,24,223,0,27, +248,80,158,36,38,198,27,248,80,158,37,36,199,27,252,80,159,42,57,35,201, +202,203,199,205,27,252,80,159,43,57,35,202,203,204,199,206,28,28,249,22,147, +8,195,197,249,22,147,8,194,196,11,200,27,28,249,22,147,8,196,198,28,248, 80,158,40,37,195,20,15,159,39,37,40,249,22,65,20,15,159,41,38,40,196, -194,27,28,249,22,252,19,2,196,198,28,248,80,158,41,37,195,20,15,159,40, -37,40,249,22,65,20,15,159,42,38,40,196,194,28,248,80,158,41,37,193,249, -22,65,20,15,159,42,39,40,195,28,28,248,22,56,193,28,249,22,230,20,15, -159,42,40,40,248,22,58,195,10,249,22,230,20,15,159,42,41,40,248,22,58, -195,11,250,22,67,248,22,58,196,196,248,22,59,196,250,22,65,20,15,159,43, -42,40,196,195,83,159,34,93,80,159,34,56,35,89,162,8,36,36,41,70,97, -112,112,108,121,45,99,111,110,115,71,223,0,28,248,80,158,35,37,195,249,22, -65,20,15,159,36,39,40,195,28,28,248,22,56,195,28,249,22,230,20,15,159, -36,40,40,248,22,58,197,10,249,22,230,20,15,159,36,41,40,248,22,58,197, -11,250,22,67,248,22,58,198,196,248,22,59,198,250,22,65,20,15,159,37,42, -40,196,197,83,159,34,93,80,159,34,55,35,89,162,8,36,36,39,66,110,111, -114,109,97,108,72,223,0,28,249,22,252,19,2,195,196,28,248,80,158,35,37, -194,20,15,159,34,37,40,249,22,65,20,15,159,36,38,40,195,193,27,20,15, -159,35,34,40,27,20,15,159,36,35,40,27,20,15,159,37,36,40,89,162,8, -36,35,50,9,226,3,0,1,2,87,94,28,248,80,158,38,34,197,250,22,252, -47,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,73,199,12,27,28, -248,80,158,39,35,248,80,158,40,36,199,28,248,80,158,39,37,248,80,158,40, -36,248,80,158,41,36,200,248,80,158,39,38,248,80,158,40,36,199,250,22,252, -47,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,74,200,250,22,252, -47,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,75,200,250,22,216, -196,27,252,80,159,47,57,35,206,203,204,201,34,28,249,22,252,19,2,194,198, -28,248,80,158,43,37,193,20,15,159,42,37,40,249,22,65,20,15,159,44,38, -40,194,192,200,37,20,99,159,38,16,6,30,76,2,25,71,105,100,101,110,116, -105,102,105,101,114,63,77,2,2,29,2,27,2,31,2,24,2,33,16,14,18, -97,64,104,101,114,101,78,57,37,36,35,18,16,2,158,2,65,57,58,18,16, -2,158,2,67,57,59,18,100,9,8,29,37,36,35,16,8,8,28,11,2,78, -71,117,110,113,117,111,116,101,45,115,116,120,79,1,20,117,110,113,117,111,116, -101,45,115,112,108,105,99,105,110,103,45,115,116,120,80,3,1,7,101,110,118, -50,53,51,51,81,2,81,2,81,16,4,8,27,11,67,105,110,45,102,111,114, -109,82,3,1,7,101,110,118,50,53,51,52,83,16,6,8,26,11,61,120,84, -63,111,108,100,85,3,1,7,101,110,118,50,53,51,54,86,2,86,18,16,2, -158,65,113,117,111,116,101,87,8,29,8,30,18,100,64,108,105,115,116,88,8, -32,37,36,35,8,28,8,27,16,6,8,31,11,61,97,89,61,100,90,3,1, -7,101,110,118,50,53,51,55,91,2,91,18,16,2,158,2,88,8,32,8,33, -18,16,2,158,65,108,105,115,116,42,92,8,32,8,34,18,8,34,18,104,2, -8,8,40,37,36,35,8,28,8,27,16,8,8,39,11,64,102,111,114,109,93, -2,72,2,71,3,1,7,101,110,118,50,53,51,53,94,2,94,2,94,16,4, -8,38,11,2,64,3,1,7,101,110,118,50,53,51,56,95,16,6,8,37,11, -2,84,65,108,101,118,101,108,96,3,1,7,101,110,118,50,53,51,57,97,2, -97,16,4,8,36,11,2,70,3,1,7,101,110,118,50,53,52,48,98,16,4, -8,35,11,65,102,105,114,115,116,99,3,1,7,101,110,118,50,53,52,54,100, -18,106,2,4,8,43,37,36,35,8,28,8,27,8,39,8,38,8,37,8,36, -8,35,16,4,8,42,11,64,114,101,115,116,101,3,1,7,101,110,118,50,53, -52,57,102,16,8,8,41,11,64,117,113,115,100,103,65,111,108,100,45,108,104, -61,108,105,3,1,7,101,110,118,50,53,53,49,106,2,106,2,106,18,158,94, -107,2,87,8,45,37,36,35,8,28,8,27,8,39,8,38,8,37,8,36,8, -35,8,42,8,41,16,4,8,44,11,65,114,101,115,116,120,107,3,1,7,101, -110,118,50,53,53,51,108,158,2,67,8,45,8,45,18,105,72,108,105,115,116, -45,62,118,101,99,116,111,114,109,8,48,37,36,35,8,28,8,27,8,39,8, -38,8,37,8,36,16,4,8,47,11,2,105,3,1,7,101,110,118,50,53,53, -52,110,16,4,8,46,11,62,108,50,111,3,1,7,101,110,118,50,53,53,53, -112,18,105,63,98,111,120,113,8,51,37,36,35,8,28,8,27,8,39,8,38, -8,37,8,36,16,4,8,50,11,61,118,114,3,1,7,101,110,118,50,53,53, -54,115,16,4,8,49,11,62,113,118,116,3,1,7,101,110,118,50,53,53,55, -117,11,16,5,93,2,9,27,20,15,159,35,34,39,89,162,34,35,48,9,224, -1,0,87,94,28,248,80,158,36,34,195,12,250,22,252,47,2,11,6,10,10, -98,97,100,32,115,121,110,116,97,120,118,197,27,248,80,158,37,35,196,28,248, -80,158,37,36,193,20,15,159,36,35,39,28,28,248,80,158,37,37,193,248,80, -158,37,36,248,80,158,38,35,194,10,248,80,158,37,38,193,250,22,216,196,251, -22,65,20,15,159,43,36,39,248,80,158,44,38,200,249,22,57,20,15,159,45, -37,39,248,80,158,46,35,202,20,15,159,43,38,39,198,35,20,99,159,34,16, -5,2,33,2,27,2,31,2,29,2,24,16,5,18,16,2,158,2,78,57,8, -52,18,100,10,8,56,37,36,35,16,4,8,55,11,2,78,3,1,7,101,110, -118,50,53,53,57,119,16,4,8,54,11,2,84,3,1,7,101,110,118,50,53, -54,48,120,16,4,8,53,11,61,101,121,3,1,7,101,110,118,50,53,54,49, -122,18,16,2,158,62,105,102,123,8,56,8,57,18,16,2,158,2,9,8,56, -8,58,18,158,11,8,56,11,16,5,93,2,6,27,20,15,159,35,34,40,89, -162,34,35,51,9,224,1,0,87,94,28,248,80,158,36,34,195,250,22,252,47, -2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,124,197,12,27,248,80, -158,37,35,196,28,248,80,158,37,36,193,20,15,159,36,35,40,28,28,248,80, -158,37,37,193,248,80,158,37,36,248,80,158,38,35,194,11,248,80,158,37,38, -193,28,248,80,158,37,39,193,250,22,216,196,250,22,65,20,15,159,42,36,40, -248,22,65,249,22,65,67,111,114,45,112,97,114,116,125,248,80,158,46,38,202, -251,22,65,20,15,159,46,37,40,2,125,2,125,249,22,57,20,15,159,48,38, -40,248,80,158,49,35,205,198,250,22,252,47,2,11,6,10,10,98,97,100,32, -115,121,110,116,97,120,126,198,35,20,99,159,34,16,6,2,76,2,27,2,31, -2,29,2,24,2,33,16,5,18,8,52,18,100,11,8,62,37,36,35,16,4, -8,61,11,2,78,3,1,7,101,110,118,50,53,54,51,127,16,4,8,60,11, -2,84,3,1,7,101,110,118,50,53,54,52,128,16,4,8,59,11,2,121,3, -1,7,101,110,118,50,53,54,53,129,18,101,2,10,8,64,37,36,35,8,61, -8,60,8,59,16,4,8,63,11,63,116,109,112,130,3,1,7,101,110,118,50, -53,54,54,131,18,16,2,158,2,123,8,64,8,65,18,16,2,158,2,6,8, -64,8,66,11,93,83,159,34,93,80,159,34,34,35,32,132,89,162,34,36,39, -2,4,222,28,248,22,64,193,249,22,71,194,195,250,22,252,48,2,2,67,6, -11,11,112,114,111,112,101,114,32,108,105,115,116,133,195,93,68,35,37,107,101, -114,110,101,108,134,94,2,25,2,134,0}; - EVAL_ONE_SIZED_STR((char *)expr, 4861); +194,27,28,249,22,147,8,196,198,28,248,80,158,41,37,195,20,15,159,40,37, +40,249,22,65,20,15,159,42,38,40,196,194,28,248,80,158,41,37,193,249,22, +65,20,15,159,42,39,40,195,28,28,248,22,56,193,28,249,22,166,3,20,15, +159,42,40,40,248,22,58,195,10,249,22,166,3,20,15,159,42,41,40,248,22, +58,195,11,250,22,67,248,22,58,196,196,248,22,59,196,250,22,65,20,15,159, +43,42,40,196,195,80,159,34,58,35,83,158,34,16,2,89,162,8,36,36,41, +2,25,223,0,28,248,80,158,35,37,195,249,22,65,20,15,159,36,39,40,195, +28,28,248,22,56,195,28,249,22,166,3,20,15,159,36,40,40,248,22,58,197, +10,249,22,166,3,20,15,159,36,41,40,248,22,58,197,11,250,22,67,248,22, +58,198,196,248,22,59,198,250,22,65,20,15,159,37,42,40,196,197,80,159,34, +56,35,83,158,34,16,2,89,162,8,36,36,39,2,26,223,0,28,249,22,147, +8,195,196,28,248,80,158,35,37,194,20,15,159,34,37,40,249,22,65,20,15, +159,36,38,40,195,193,80,159,34,55,35,27,20,15,159,35,34,40,27,20,15, +159,36,35,40,27,20,15,159,37,36,40,89,162,8,36,35,50,9,226,3,0, +1,2,87,94,28,248,80,158,38,34,197,250,22,175,8,11,6,10,10,98,97, +100,32,115,121,110,116,97,120,199,12,27,28,248,80,158,39,35,248,80,158,40, +36,199,28,248,80,158,39,37,248,80,158,40,36,248,80,158,41,36,200,248,80, +158,39,38,248,80,158,40,36,199,250,22,175,8,11,6,10,10,98,97,100,32, +115,121,110,116,97,120,200,250,22,175,8,11,6,10,10,98,97,100,32,115,121, +110,116,97,120,200,250,22,152,3,196,27,252,80,159,47,57,35,206,203,204,201, +34,28,249,22,147,8,194,198,28,248,80,158,43,37,193,20,15,159,42,37,40, +249,22,65,20,15,159,44,38,40,194,192,200,37,20,99,159,38,16,6,2,63, +2,46,2,45,2,47,2,44,2,48,16,14,33,65,33,66,33,67,33,71,33, +72,33,74,33,75,33,76,33,77,33,83,33,86,33,88,33,89,33,90,11,16, +5,93,2,7,27,20,15,159,35,34,39,89,162,34,35,48,9,224,1,0,87, +94,28,248,80,158,36,34,195,12,250,22,175,8,11,6,10,10,98,97,100,32, +115,121,110,116,97,120,197,27,248,80,158,37,35,196,28,248,80,158,37,36,193, +20,15,159,36,35,39,28,28,248,80,158,37,37,193,248,80,158,37,36,248,80, +158,38,35,194,10,248,80,158,37,38,193,250,22,152,3,196,251,22,65,20,15, +159,43,36,39,248,80,158,44,38,200,249,22,57,20,15,159,45,37,39,248,80, +158,46,35,202,20,15,159,43,38,39,198,35,20,99,159,34,16,5,2,48,2, +45,2,47,2,46,2,44,16,5,33,91,33,93,33,94,33,95,33,96,11,16, +5,93,2,8,27,20,15,159,35,34,40,89,162,34,35,51,9,224,1,0,87, +94,28,248,80,158,36,34,195,250,22,175,8,11,6,10,10,98,97,100,32,115, +121,110,116,97,120,197,12,27,248,80,158,37,35,196,28,248,80,158,37,36,193, +20,15,159,36,35,40,28,28,248,80,158,37,37,193,248,80,158,37,36,248,80, +158,38,35,194,11,248,80,158,37,38,193,28,248,80,158,37,39,193,250,22,152, +3,196,250,22,65,20,15,159,42,36,40,248,22,65,249,22,65,2,41,248,80, +158,46,38,202,251,22,65,20,15,159,46,37,40,2,41,2,41,249,22,57,20, +15,159,48,38,40,248,80,158,49,35,205,198,250,22,175,8,11,6,10,10,98, +97,100,32,115,121,110,116,97,120,198,35,20,99,159,34,16,6,2,63,2,45, +2,47,2,46,2,44,2,48,16,5,33,97,33,101,33,103,33,104,33,105,11, +93,83,158,34,16,2,32,0,89,162,34,36,39,2,2,222,28,248,22,64,193, +249,22,71,194,195,250,22,176,8,2,23,6,11,11,112,114,111,112,101,114,32, +108,105,115,116,195,80,159,34,34,35,93,2,42,94,2,14,2,42,0}; + EVAL_ONE_SIZED_STR((char *)expr, 5121); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,49,252,234,4,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,66,35,37,99,111, -110,100,1,29,2,11,11,10,10,10,34,80,158,34,34,20,99,159,34,16,0, -16,0,11,11,16,0,34,11,16,1,64,99,111,110,100,3,16,1,11,16,1, -2,3,34,35,93,16,5,93,2,3,87,94,83,159,34,93,80,159,34,53,35, -89,162,8,64,37,56,64,108,111,111,112,4,223,0,28,248,80,158,35,36,195, -20,15,159,34,35,39,28,248,80,158,35,37,195,27,248,80,158,36,38,196,27, -248,80,158,37,35,197,28,248,80,158,37,37,194,27,248,80,158,38,38,195,27, -248,80,158,39,35,196,27,28,248,80,158,40,34,195,249,22,230,196,20,15,159, -41,36,39,11,87,94,28,192,28,248,80,158,40,37,196,251,22,252,47,2,11, -6,39,39,98,97,100,32,115,121,110,116,97,120,32,40,96,101,108,115,101,39, -32,99,108,97,117,115,101,32,109,117,115,116,32,98,101,32,108,97,115,116,41, -5,202,200,12,12,28,28,248,80,158,40,37,194,28,248,80,158,40,34,248,80, -158,41,38,195,249,22,230,248,80,158,42,38,196,20,15,159,41,37,39,11,11, -28,28,248,80,158,40,37,248,80,158,41,35,195,248,80,158,40,36,248,80,158, -41,35,248,80,158,42,35,196,11,27,28,193,10,195,27,247,22,54,250,22,65, -20,15,159,44,38,39,248,22,65,249,22,65,248,22,65,199,199,251,22,65,20, -15,159,48,39,39,199,249,22,65,248,80,158,51,38,248,80,158,52,35,206,201, -250,80,159,51,53,35,23,18,23,15,11,251,22,252,47,2,11,6,36,36,98, -97,100,32,115,121,110,116,97,120,32,40,98,97,100,32,99,108,97,117,115,101, -32,102,111,114,109,32,119,105,116,104,32,61,62,41,6,202,200,28,192,28,200, -250,22,65,20,15,159,42,40,39,10,249,22,57,20,15,159,44,41,39,198,249, -22,57,20,15,159,41,42,39,195,28,248,80,158,40,36,194,27,247,22,54,250, -22,65,20,15,159,43,43,39,248,22,65,249,22,65,248,22,65,199,201,251,22, -65,20,15,159,47,44,39,199,199,250,80,159,50,53,35,23,17,206,11,251,22, -65,20,15,159,43,45,39,198,249,22,57,20,15,159,45,46,39,199,250,80,159, -46,53,35,205,202,11,251,22,252,47,2,11,6,44,44,98,97,100,32,115,121, -110,116,97,120,32,40,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97, -32,116,101,115,116,45,118,97,108,117,101,32,112,97,105,114,41,7,199,197,251, -22,252,47,2,11,6,46,46,98,97,100,32,115,121,110,116,97,120,32,40,98, -111,100,121,32,109,117,115,116,32,99,111,110,116,97,105,110,32,97,32,108,105, -115,116,32,111,102,32,112,97,105,114,115,41,8,197,198,27,20,15,159,35,34, -39,89,162,8,36,35,45,9,224,1,0,87,94,28,248,80,158,36,34,195,250, -22,252,47,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,9,197,12, -250,22,216,195,27,248,80,158,40,35,199,250,80,159,42,53,35,201,195,10,197, -35,20,99,159,35,16,5,30,10,65,35,37,115,116,120,11,71,105,100,101,110, -116,105,102,105,101,114,63,12,2,30,13,2,11,67,115,116,120,45,99,100,114, -14,6,30,15,2,11,69,115,116,120,45,110,117,108,108,63,16,10,30,17,2, -11,69,115,116,120,45,112,97,105,114,63,18,11,30,19,2,11,67,115,116,120, -45,99,97,114,20,5,16,13,18,97,64,104,101,114,101,21,39,97,37,10,34, -11,16,2,2,3,2,2,98,36,10,35,11,94,159,71,35,37,113,113,45,97, -110,100,45,111,114,22,9,11,159,2,11,9,11,16,0,96,35,8,254,1,11, -16,0,18,158,93,102,64,118,111,105,100,23,45,37,36,35,16,4,44,11,2, -21,3,1,7,101,110,118,50,53,55,48,24,16,4,43,11,67,105,110,45,102, -111,114,109,25,3,1,7,101,110,118,50,53,55,49,26,16,6,42,11,64,102, -111,114,109,27,66,115,101,114,114,111,114,28,3,1,7,101,110,118,50,53,55, -50,29,2,29,16,4,41,11,2,4,3,1,7,101,110,118,50,53,55,52,30, -16,6,40,11,65,116,101,115,116,115,31,66,102,105,114,115,116,63,32,3,1, -7,101,110,118,50,53,55,53,33,2,33,45,18,104,64,101,108,115,101,34,48, -37,36,35,44,43,42,41,40,16,6,47,11,64,108,105,110,101,35,64,114,101, -115,116,36,3,1,7,101,110,118,50,53,55,54,37,2,37,16,6,46,11,64, -116,101,115,116,38,65,118,97,108,117,101,39,3,1,7,101,110,118,50,53,55, -55,40,2,40,18,104,62,61,62,41,50,37,36,35,44,43,42,41,40,47,16, -8,49,11,2,38,2,39,65,101,108,115,101,63,42,2,40,2,40,2,40,18, -105,70,108,101,116,45,118,97,108,117,101,115,43,52,37,36,35,44,43,42,41, -40,47,49,16,4,51,11,63,103,101,110,44,3,1,7,101,110,118,50,53,55, -56,45,18,16,2,158,62,105,102,46,52,53,18,16,2,158,2,46,50,54,18, -16,2,158,2,0,50,55,18,55,18,105,2,43,57,37,36,35,44,43,42,41, -40,47,49,16,4,56,11,2,44,3,1,7,101,110,118,50,53,55,57,47,18, -16,2,158,2,46,57,58,18,54,18,55,11,9,93,68,35,37,107,101,114,110, -101,108,48,95,2,11,2,22,2,48,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1270); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,45,0,0,0,1,0,0,6,0,9,0,14,0, +19,0,25,0,30,0,42,0,52,0,62,0,72,0,77,0,83,0,93,0,104, +0,108,0,111,0,120,0,126,0,143,0,153,0,160,0,181,0,197,0,217,0, +239,0,255,0,9,1,20,1,38,1,68,1,88,1,102,1,109,1,139,1,145, +1,151,1,157,1,163,1,169,1,199,1,205,1,211,1,217,1,223,1,0,0, +15,5,0,0,65,98,101,103,105,110,29,11,11,64,99,111,110,100,64,108,111, +111,112,65,35,37,115,116,120,64,104,101,114,101,71,35,37,113,113,45,97,110, +100,45,111,114,3,1,7,101,110,118,50,53,55,50,3,1,7,101,110,118,50, +53,55,53,3,1,7,101,110,118,50,53,55,54,64,116,101,115,116,65,118,97, +108,117,101,3,1,7,101,110,118,50,53,55,55,70,108,101,116,45,118,97,108, +117,101,115,63,103,101,110,62,105,102,68,35,37,107,101,114,110,101,108,95,8, +193,11,16,0,97,10,35,11,94,159,2,7,9,11,159,2,5,9,11,16,0, +96,10,34,11,16,2,2,3,2,2,18,96,2,6,54,53,52,16,6,11,11, +65,116,101,115,116,115,66,102,105,114,115,116,63,2,9,2,9,16,4,11,11, +2,4,3,1,7,101,110,118,50,53,55,52,16,6,11,11,64,102,111,114,109, +66,115,101,114,114,111,114,2,8,2,8,16,4,11,11,67,105,110,45,102,111, +114,109,3,1,7,101,110,118,50,53,55,49,16,4,11,11,2,6,3,1,7, +101,110,118,50,53,55,48,100,54,53,52,8,26,59,58,57,56,18,158,94,10, +64,118,111,105,100,8,27,16,6,11,11,64,108,105,110,101,64,114,101,115,116, +2,10,2,10,18,103,64,101,108,115,101,54,53,52,8,26,59,58,57,56,8, +29,16,6,11,11,2,11,2,12,2,13,2,13,16,8,11,11,2,11,2,12, +65,101,108,115,101,63,2,13,2,13,2,13,102,54,53,52,8,26,59,58,57, +56,8,29,8,31,18,158,62,61,62,8,32,103,54,53,52,8,26,59,58,57, +56,8,29,8,31,16,4,11,11,2,15,3,1,7,101,110,118,50,53,55,56, +18,158,2,14,8,34,18,158,2,16,8,34,18,158,2,16,8,32,18,158,2, +1,8,32,18,158,2,1,8,32,103,54,53,52,8,26,59,58,57,56,8,29, +8,31,16,4,11,11,2,15,3,1,7,101,110,118,50,53,55,57,18,158,2, +14,8,40,18,158,2,16,8,40,18,158,2,16,8,32,18,158,2,1,8,32, +159,34,20,99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114,66, +35,37,99,111,110,100,2,2,10,10,10,34,80,158,34,34,20,99,159,34,16, +0,16,0,11,11,16,0,34,11,16,1,2,3,16,1,11,16,1,2,3,34, +35,93,16,5,93,2,3,87,94,83,158,34,16,2,89,162,8,64,37,56,2, +4,223,0,28,248,80,158,35,36,195,20,15,159,34,35,39,28,248,80,158,35, +37,195,27,248,80,158,36,38,196,27,248,80,158,37,35,197,28,248,80,158,37, +37,194,27,248,80,158,38,38,195,27,248,80,158,39,35,196,27,28,248,80,158, +40,34,195,249,22,166,3,196,20,15,159,41,36,39,11,87,94,28,192,28,248, +80,158,40,37,196,251,22,175,8,11,6,39,39,98,97,100,32,115,121,110,116, +97,120,32,40,96,101,108,115,101,39,32,99,108,97,117,115,101,32,109,117,115, +116,32,98,101,32,108,97,115,116,41,202,200,12,12,28,28,248,80,158,40,37, +194,28,248,80,158,40,34,248,80,158,41,38,195,249,22,166,3,248,80,158,42, +38,196,20,15,159,41,37,39,11,11,28,28,248,80,158,40,37,248,80,158,41, +35,195,248,80,158,40,36,248,80,158,41,35,248,80,158,42,35,196,11,27,28, +193,10,195,27,247,22,54,250,22,65,20,15,159,44,38,39,248,22,65,249,22, +65,248,22,65,199,199,251,22,65,20,15,159,48,39,39,199,249,22,65,248,80, +158,51,38,248,80,158,52,35,206,201,250,80,159,51,53,35,23,18,23,15,11, +251,22,175,8,11,6,36,36,98,97,100,32,115,121,110,116,97,120,32,40,98, +97,100,32,99,108,97,117,115,101,32,102,111,114,109,32,119,105,116,104,32,61, +62,41,202,200,28,192,28,200,250,22,65,20,15,159,42,40,39,10,249,22,57, +20,15,159,44,41,39,198,249,22,57,20,15,159,41,42,39,195,28,248,80,158, +40,36,194,27,247,22,54,250,22,65,20,15,159,43,43,39,248,22,65,249,22, +65,248,22,65,199,201,251,22,65,20,15,159,47,44,39,199,199,250,80,159,50, +53,35,23,17,206,11,251,22,65,20,15,159,43,45,39,198,249,22,57,20,15, +159,45,46,39,199,250,80,159,46,53,35,205,202,11,251,22,175,8,11,6,44, +44,98,97,100,32,115,121,110,116,97,120,32,40,99,108,97,117,115,101,32,105, +115,32,110,111,116,32,97,32,116,101,115,116,45,118,97,108,117,101,32,112,97, +105,114,41,199,197,251,22,175,8,11,6,46,46,98,97,100,32,115,121,110,116, +97,120,32,40,98,111,100,121,32,109,117,115,116,32,99,111,110,116,97,105,110, +32,97,32,108,105,115,116,32,111,102,32,112,97,105,114,115,41,197,198,80,159, +34,53,35,27,20,15,159,35,34,39,89,162,8,36,35,45,9,224,1,0,87, +94,28,248,80,158,36,34,195,250,22,175,8,11,6,10,10,98,97,100,32,115, +121,110,116,97,120,197,12,250,22,152,3,195,27,248,80,158,40,35,199,250,80, +159,42,53,35,201,195,10,197,35,20,99,159,35,16,5,30,2,5,71,105,100, +101,110,116,105,102,105,101,114,63,2,30,2,5,67,115,116,120,45,99,100,114, +6,30,2,5,69,115,116,120,45,110,117,108,108,63,10,30,2,5,69,115,116, +120,45,112,97,105,114,63,11,30,2,5,67,115,116,120,45,99,97,114,5,16, +13,33,21,33,28,33,30,33,33,33,35,33,36,33,37,33,38,33,39,33,41, +33,42,33,43,33,44,11,9,93,2,17,95,2,5,2,7,2,17,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1404); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,25,252,68,4,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,73,35,37,115,116, -114,117,99,116,45,105,110,102,111,1,29,2,11,11,10,10,10,34,80,158,34, -34,20,99,159,34,16,9,30,3,2,2,74,105,100,101,110,116,105,102,105,101, -114,47,35,102,63,4,254,1,30,5,65,35,37,115,116,120,6,71,105,100,101, -110,116,105,102,105,101,114,63,7,2,30,8,2,2,71,105,100,47,35,102,45, -108,105,115,116,63,9,254,1,30,10,2,2,72,115,116,114,117,99,116,45,105, -110,102,111,63,11,254,1,30,12,2,2,79,115,116,114,117,99,116,45,105,110, -102,111,45,116,121,112,101,45,105,100,13,254,1,30,14,2,2,1,26,115,116, -114,117,99,116,45,105,110,102,111,45,99,111,110,115,116,114,117,99,116,111,114, -45,105,100,15,254,1,30,16,2,2,1,24,115,116,114,117,99,116,45,105,110, -102,111,45,112,114,101,100,105,99,97,116,101,45,105,100,17,254,1,30,18,2, -2,1,24,115,116,114,117,99,116,45,105,110,102,111,45,97,99,99,101,115,115, -111,114,45,105,100,115,19,254,1,30,20,2,2,1,23,115,116,114,117,99,116, -45,105,110,102,111,45,109,117,116,97,116,111,114,45,105,100,115,21,254,1,16, -0,11,11,16,2,2,9,2,4,36,11,16,6,2,19,2,15,2,21,2,17, -2,13,2,11,16,6,11,11,11,11,11,11,16,6,2,19,2,15,2,21,2, -17,2,13,2,11,40,40,9,100,83,159,34,93,80,159,34,34,35,89,162,34, -35,38,2,4,223,0,27,248,22,252,17,2,195,28,192,192,248,80,158,36,35, -195,83,159,34,93,80,159,34,36,35,89,162,34,36,42,2,9,223,0,28,248, -22,63,195,10,28,248,22,56,195,28,248,22,63,248,22,59,196,27,248,22,58, -196,27,248,22,252,17,2,194,28,192,192,248,80,158,37,35,194,28,248,194,248, -22,58,196,27,248,22,59,196,28,248,22,63,193,10,28,248,22,56,193,28,248, -22,63,248,22,59,194,27,248,22,58,194,27,248,22,252,17,2,194,28,192,192, -248,80,158,38,35,194,28,248,195,248,22,58,194,27,248,22,59,194,28,248,22, -63,193,10,28,248,22,56,193,28,248,22,63,248,22,59,194,27,248,22,58,194, -27,248,22,252,17,2,194,28,192,192,248,80,158,39,35,194,28,248,196,248,22, -58,194,249,80,159,38,36,35,197,248,22,59,195,11,11,11,11,11,11,83,159, -34,93,80,159,34,37,35,89,162,34,35,42,2,11,223,0,28,248,22,64,194, -28,249,22,188,248,22,70,196,40,28,27,248,22,58,195,27,248,22,252,17,2, -194,28,192,192,248,80,158,37,35,194,28,27,248,22,84,195,27,248,22,252,17, -2,194,28,192,192,248,80,158,37,35,194,28,27,248,22,93,195,27,248,22,252, -17,2,194,28,192,192,248,80,158,37,35,194,28,27,80,158,35,35,27,249,22, -76,197,37,28,248,22,63,193,10,28,248,22,56,193,28,248,22,63,248,22,59, -194,27,248,22,58,194,27,248,22,252,17,2,194,28,192,192,248,80,158,39,35, -194,28,248,194,248,22,58,194,27,248,22,59,194,28,248,22,63,193,10,28,248, -22,56,193,28,248,22,63,248,22,59,194,27,248,22,58,194,27,248,22,252,17, -2,194,28,192,192,248,80,158,40,35,194,28,248,195,248,22,58,194,249,80,159, -39,36,35,196,248,22,59,195,11,11,11,11,28,27,249,22,76,196,38,28,248, -22,63,193,10,28,248,22,56,193,28,248,22,63,248,22,59,194,27,248,22,58, -194,27,248,22,252,17,2,194,28,192,192,248,80,158,38,35,194,28,27,248,22, -58,194,27,248,22,252,17,2,194,28,192,192,248,80,158,38,35,194,27,248,22, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,11,0,0,0,1,0,0,3,0,18,0,24,0, +36,0,49,0,69,0,97,0,123,0,149,0,174,0,0,0,50,4,0,0,29, +11,11,74,105,100,101,110,116,105,102,105,101,114,47,35,102,63,65,35,37,115, +116,120,71,105,100,47,35,102,45,108,105,115,116,63,72,115,116,114,117,99,116, +45,105,110,102,111,63,79,115,116,114,117,99,116,45,105,110,102,111,45,116,121, +112,101,45,105,100,1,26,115,116,114,117,99,116,45,105,110,102,111,45,99,111, +110,115,116,114,117,99,116,111,114,45,105,100,1,24,115,116,114,117,99,116,45, +105,110,102,111,45,112,114,101,100,105,99,97,116,101,45,105,100,1,24,115,116, +114,117,99,116,45,105,110,102,111,45,97,99,99,101,115,115,111,114,45,105,100, +115,1,23,115,116,114,117,99,116,45,105,110,102,111,45,109,117,116,97,116,111, +114,45,105,100,115,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110, +16,0,83,158,40,20,96,114,73,35,37,115,116,114,117,99,116,45,105,110,102, +111,2,1,10,10,10,34,80,158,34,34,20,99,159,34,16,9,30,2,1,2, +2,193,30,2,3,71,105,100,101,110,116,105,102,105,101,114,63,2,30,2,1, +2,4,193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7,193, +30,2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,16,0,11, +11,16,2,2,4,2,2,36,11,16,6,2,9,2,7,2,10,2,8,2,6, +2,5,16,6,11,11,11,11,11,11,16,6,2,9,2,7,2,10,2,8,2, +6,2,5,40,40,9,100,83,158,34,16,2,89,162,34,35,38,2,2,223,0, +27,248,22,145,8,195,28,192,192,248,80,158,36,35,195,80,159,34,34,35,83, +158,34,16,2,89,162,34,36,42,2,4,223,0,28,248,22,63,195,10,28,248, +22,56,195,28,248,22,63,248,22,59,196,27,248,22,58,196,27,248,22,145,8, +194,28,192,192,248,80,158,37,35,194,28,248,194,248,22,58,196,27,248,22,59, +196,28,248,22,63,193,10,28,248,22,56,193,28,248,22,63,248,22,59,194,27, +248,22,58,194,27,248,22,145,8,194,28,192,192,248,80,158,38,35,194,28,248, +195,248,22,58,194,27,248,22,59,194,28,248,22,63,193,10,28,248,22,56,193, +28,248,22,63,248,22,59,194,27,248,22,58,194,27,248,22,145,8,194,28,192, +192,248,80,158,39,35,194,28,248,196,248,22,58,194,249,80,159,38,36,35,197, +248,22,59,195,11,11,11,11,11,11,80,159,34,36,35,83,158,34,16,2,89, +162,34,35,42,2,5,223,0,28,248,22,64,194,28,249,22,188,2,248,22,70, +196,40,28,27,248,22,58,195,27,248,22,145,8,194,28,192,192,248,80,158,37, +35,194,28,27,248,22,84,195,27,248,22,145,8,194,28,192,192,248,80,158,37, +35,194,28,27,248,22,93,195,27,248,22,145,8,194,28,192,192,248,80,158,37, +35,194,28,27,80,158,35,35,27,249,22,76,197,37,28,248,22,63,193,10,28, +248,22,56,193,28,248,22,63,248,22,59,194,27,248,22,58,194,27,248,22,145, +8,194,28,192,192,248,80,158,39,35,194,28,248,194,248,22,58,194,27,248,22, 59,194,28,248,22,63,193,10,28,248,22,56,193,28,248,22,63,248,22,59,194, -27,248,22,58,194,27,248,22,252,17,2,194,28,192,192,248,80,158,39,35,194, -28,27,248,22,58,194,27,248,22,252,17,2,194,28,192,192,248,80,158,39,35, -194,249,80,159,38,36,35,80,159,38,34,35,248,22,59,195,11,11,11,11,27, -27,249,22,76,197,39,27,248,22,252,17,2,194,28,192,192,248,80,158,38,35, -194,28,192,192,249,22,252,19,2,10,249,22,76,198,39,11,11,11,11,11,11, -11,83,159,34,93,80,159,34,38,35,22,58,83,159,34,93,80,159,34,39,35, -22,84,83,159,34,93,80,159,34,40,35,22,93,83,159,34,93,80,159,34,41, -35,22,96,83,159,34,93,80,159,34,42,35,32,22,89,162,34,35,37,2,21, -222,249,22,76,194,38,95,68,35,37,107,101,114,110,101,108,23,2,6,71,35, -37,113,113,45,97,110,100,45,111,114,24,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1104); +27,248,22,58,194,27,248,22,145,8,194,28,192,192,248,80,158,40,35,194,28, +248,195,248,22,58,194,249,80,159,39,36,35,196,248,22,59,195,11,11,11,11, +28,27,249,22,76,196,38,28,248,22,63,193,10,28,248,22,56,193,28,248,22, +63,248,22,59,194,27,248,22,58,194,27,248,22,145,8,194,28,192,192,248,80, +158,38,35,194,28,27,248,22,58,194,27,248,22,145,8,194,28,192,192,248,80, +158,38,35,194,27,248,22,59,194,28,248,22,63,193,10,28,248,22,56,193,28, +248,22,63,248,22,59,194,27,248,22,58,194,27,248,22,145,8,194,28,192,192, +248,80,158,39,35,194,28,27,248,22,58,194,27,248,22,145,8,194,28,192,192, +248,80,158,39,35,194,249,80,159,38,36,35,80,159,38,34,35,248,22,59,195, +11,11,11,11,27,27,249,22,76,197,39,27,248,22,145,8,194,28,192,192,248, +80,158,38,35,194,28,192,192,249,22,147,8,10,249,22,76,198,39,11,11,11, +11,11,11,11,80,159,34,37,35,83,158,34,16,2,22,58,80,159,34,38,35, +83,158,34,16,2,22,84,80,159,34,39,35,83,158,34,16,2,22,93,80,159, +34,40,35,83,158,34,16,2,22,96,80,159,34,41,35,83,158,34,16,2,32, +0,89,162,34,35,37,2,10,222,249,22,76,194,38,80,159,34,42,35,95,68, +35,37,107,101,114,110,101,108,2,3,71,35,37,113,113,45,97,110,100,45,111, +114,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1115); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,37,252,208,4,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,71,35,37,100,115, -45,104,101,108,112,101,114,1,29,2,11,11,10,10,10,34,80,158,34,34,20, -99,159,34,16,6,30,3,2,2,1,20,108,105,115,116,45,62,105,109,109,117, -116,97,98,108,101,45,108,105,115,116,4,254,1,30,5,2,2,72,103,101,116, -45,115,116,120,45,105,110,102,111,6,254,1,30,7,73,35,37,115,116,114,117, -99,116,45,105,110,102,111,8,72,115,116,114,117,99,116,45,105,110,102,111,63, -9,5,30,10,2,8,79,115,116,114,117,99,116,45,105,110,102,111,45,116,121, -112,101,45,105,100,11,4,30,12,2,8,1,24,115,116,114,117,99,116,45,105, -110,102,111,45,97,99,99,101,115,115,111,114,45,105,100,115,13,0,30,14,2, -8,1,23,115,116,114,117,99,116,45,105,110,102,111,45,109,117,116,97,116,111, -114,45,105,100,115,15,2,16,0,11,11,16,1,2,4,35,11,16,1,2,6, -16,1,11,16,1,2,6,35,35,9,94,83,159,34,93,80,159,34,34,35,89, -162,8,36,35,46,2,4,223,0,28,248,22,63,194,9,249,22,62,248,22,58, -196,27,248,22,59,197,28,248,22,63,193,9,249,22,62,248,22,58,195,27,248, -22,59,196,28,248,22,63,193,9,249,22,62,248,22,58,195,248,80,159,43,34, -35,248,22,59,196,83,159,34,93,80,159,34,35,35,89,162,34,38,8,32,2, -6,223,0,27,28,197,247,22,54,11,27,28,198,89,162,8,36,35,40,62,113, -115,16,223,1,28,193,249,22,65,194,249,22,65,72,113,117,111,116,101,45,115, -121,110,116,97,120,17,197,11,22,7,27,28,197,249,22,252,103,3,199,32,18, -89,162,8,44,34,34,9,222,11,11,87,94,28,197,28,28,248,80,158,38,36, -193,248,22,252,17,2,248,80,158,39,37,194,10,251,22,252,47,2,11,28,248, -80,158,42,36,197,6,63,63,112,97,114,101,110,116,32,115,116,114,117,99,116, -32,105,110,102,111,114,109,97,116,105,111,110,32,100,111,101,115,32,110,111,116, -32,105,110,99,108,117,100,101,32,97,32,116,121,112,101,32,102,111,114,32,115, -117,98,116,121,112,105,110,103,19,249,22,252,191,1,6,32,32,112,97,114,101, -110,116,32,115,116,114,117,99,116,32,116,121,112,101,32,110,111,116,32,100,101, -102,105,110,101,100,126,97,20,28,198,249,22,252,191,1,6,43,43,32,40,126, -97,32,100,111,101,115,32,110,111,116,32,110,97,109,101,32,115,116,114,117,99, -116,32,116,121,112,101,32,105,110,102,111,114,109,97,116,105,111,110,41,21,248, -22,217,206,6,0,0,22,200,201,12,12,249,22,7,28,194,248,80,158,40,37, -195,11,28,200,91,159,39,11,90,161,36,34,11,28,199,249,22,7,249,22,2, -204,248,80,158,49,38,204,249,22,2,204,248,80,158,49,39,204,249,22,7,9, -9,90,161,35,36,11,248,22,94,206,90,161,35,37,11,28,206,32,23,89,162, -34,35,37,64,119,114,97,112,24,222,249,22,57,74,108,105,115,116,45,105,109, -109,117,116,97,98,108,101,25,194,22,7,90,161,35,38,11,28,206,89,162,8, -36,35,42,70,116,111,116,97,108,45,119,114,97,112,26,223,9,250,22,65,63, -108,101,116,27,248,22,65,249,22,67,198,21,93,93,1,22,115,121,110,116,97, -120,45,108,111,99,97,108,45,99,101,114,116,105,102,105,101,114,28,196,22,7, -248,197,248,197,253,22,66,248,23,17,248,22,58,23,23,248,23,17,248,22,84, -23,23,248,23,17,248,22,93,23,23,248,204,27,249,22,71,249,22,2,23,22, -248,32,29,89,162,34,35,43,71,101,118,101,114,121,45,111,116,104,101,114,30, -222,28,248,22,63,193,9,28,248,22,63,248,22,59,194,249,22,57,248,22,58, -195,9,27,248,22,86,194,27,249,22,57,248,22,58,197,9,28,248,22,63,194, -192,28,248,22,63,248,22,59,195,249,22,57,248,22,58,196,194,249,32,31,89, -162,8,64,36,45,64,108,111,111,112,32,222,28,248,22,63,193,193,28,248,22, -63,248,22,59,194,249,22,57,248,22,58,195,195,27,248,22,86,194,27,249,22, -57,248,22,58,197,197,28,248,22,63,194,192,28,248,22,63,248,22,59,195,249, -22,57,248,22,58,196,194,27,248,22,86,195,27,249,22,57,248,22,58,198,196, -28,248,22,63,194,192,28,248,22,63,248,22,59,195,249,22,57,248,22,58,196, -194,249,2,31,248,22,86,196,249,22,57,248,22,58,198,196,248,22,86,196,249, -22,57,248,22,58,198,196,23,17,204,28,248,22,63,193,9,249,22,62,248,22, -58,195,27,248,22,59,196,28,248,22,63,193,9,249,22,62,248,22,58,195,248, -80,159,8,26,34,35,248,22,59,196,248,204,27,249,22,71,249,22,2,23,22, -28,248,22,63,23,17,9,248,2,29,248,22,59,23,18,205,28,248,22,63,193, -9,249,22,62,248,22,58,195,27,248,22,59,196,28,248,22,63,193,9,249,22, -62,248,22,58,195,248,80,159,8,26,34,35,248,22,59,196,28,23,20,248,23, -17,23,21,10,11,97,68,35,37,107,101,114,110,101,108,33,65,35,37,115,116, -120,34,71,35,37,113,113,45,97,110,100,45,111,114,35,66,35,37,99,111,110, -100,36,2,8,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1244); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,7,0,0,0,1,0,0,3,0,25,0,38,0, +52,0,145,0,12,1,0,0,183,4,0,0,29,11,11,1,20,108,105,115,116, +45,62,105,109,109,117,116,97,98,108,101,45,108,105,115,116,72,103,101,116,45, +115,116,120,45,105,110,102,111,73,35,37,115,116,114,117,99,116,45,105,110,102, +111,32,5,89,162,34,35,43,71,101,118,101,114,121,45,111,116,104,101,114,222, +28,248,22,63,193,9,28,248,22,63,248,22,59,194,249,22,57,248,22,58,195, +9,27,248,22,86,194,27,249,22,57,248,22,58,197,9,28,248,22,63,194,192, +28,248,22,63,248,22,59,195,249,22,57,248,22,58,196,194,249,2,6,248,22, +86,196,249,22,57,248,22,58,198,196,32,6,89,162,8,64,36,45,64,108,111, +111,112,222,28,248,22,63,193,193,28,248,22,63,248,22,59,194,249,22,57,248, +22,58,195,195,27,248,22,86,194,27,249,22,57,248,22,58,197,197,28,248,22, +63,194,192,28,248,22,63,248,22,59,195,249,22,57,248,22,58,196,194,27,248, +22,86,195,27,249,22,57,248,22,58,198,196,28,248,22,63,194,192,28,248,22, +63,248,22,59,195,249,22,57,248,22,58,196,194,249,2,6,248,22,86,196,249, +22,57,248,22,58,198,196,159,34,20,99,159,34,16,1,20,24,65,98,101,103, +105,110,16,0,83,158,40,20,96,114,71,35,37,100,115,45,104,101,108,112,101, +114,2,1,10,10,10,34,80,158,34,34,20,99,159,34,16,6,30,2,1,2, +2,193,30,2,1,2,3,193,30,2,4,72,115,116,114,117,99,116,45,105,110, +102,111,63,5,30,2,4,79,115,116,114,117,99,116,45,105,110,102,111,45,116, +121,112,101,45,105,100,4,30,2,4,1,24,115,116,114,117,99,116,45,105,110, +102,111,45,97,99,99,101,115,115,111,114,45,105,100,115,0,30,2,4,1,23, +115,116,114,117,99,116,45,105,110,102,111,45,109,117,116,97,116,111,114,45,105, +100,115,2,16,0,11,11,16,1,2,2,35,11,16,1,2,3,16,1,11,16, +1,2,3,35,35,9,94,83,158,34,16,2,89,162,8,36,35,46,2,2,223, +0,28,248,22,63,194,9,249,22,62,248,22,58,196,27,248,22,59,197,28,248, +22,63,193,9,249,22,62,248,22,58,195,27,248,22,59,196,28,248,22,63,193, +9,249,22,62,248,22,58,195,248,80,159,43,34,35,248,22,59,196,80,159,34, +34,35,83,158,34,16,2,89,162,34,38,8,32,2,3,223,0,27,28,197,247, +22,54,11,27,28,198,89,162,8,36,35,40,62,113,115,223,1,28,193,249,22, +65,194,249,22,65,72,113,117,111,116,101,45,115,121,110,116,97,120,197,11,22, +7,27,28,197,249,22,167,13,199,32,0,89,162,8,44,34,34,9,222,11,11, +87,94,28,197,28,28,248,80,158,38,36,193,248,22,145,8,248,80,158,39,37, +194,10,251,22,175,8,11,28,248,80,158,42,36,197,6,63,63,112,97,114,101, +110,116,32,115,116,114,117,99,116,32,105,110,102,111,114,109,97,116,105,111,110, +32,100,111,101,115,32,110,111,116,32,105,110,99,108,117,100,101,32,97,32,116, +121,112,101,32,102,111,114,32,115,117,98,116,121,112,105,110,103,249,22,191,6, +6,32,32,112,97,114,101,110,116,32,115,116,114,117,99,116,32,116,121,112,101, +32,110,111,116,32,100,101,102,105,110,101,100,126,97,28,198,249,22,191,6,6, +43,43,32,40,126,97,32,100,111,101,115,32,110,111,116,32,110,97,109,101,32, +115,116,114,117,99,116,32,116,121,112,101,32,105,110,102,111,114,109,97,116,105, +111,110,41,248,22,153,3,206,6,0,0,200,201,12,12,249,22,7,28,194,248, +80,158,40,37,195,11,28,200,91,159,39,11,90,161,36,34,11,28,199,249,22, +7,249,22,2,204,248,80,158,49,38,204,249,22,2,204,248,80,158,49,39,204, +249,22,7,9,9,90,161,35,36,11,248,22,94,206,90,161,35,37,11,28,206, +32,0,89,162,34,35,37,64,119,114,97,112,222,249,22,57,74,108,105,115,116, +45,105,109,109,117,116,97,98,108,101,194,22,7,90,161,35,38,11,28,206,89, +162,8,36,35,42,70,116,111,116,97,108,45,119,114,97,112,223,9,250,22,65, +63,108,101,116,248,22,65,249,22,67,198,21,93,93,1,22,115,121,110,116,97, +120,45,108,111,99,97,108,45,99,101,114,116,105,102,105,101,114,196,22,7,248, +197,248,197,253,22,66,248,23,17,248,22,58,23,23,248,23,17,248,22,84,23, +23,248,23,17,248,22,93,23,23,248,204,27,249,22,71,249,22,2,23,22,248, +2,5,23,17,204,28,248,22,63,193,9,249,22,62,248,22,58,195,27,248,22, +59,196,28,248,22,63,193,9,249,22,62,248,22,58,195,248,80,159,8,26,34, +35,248,22,59,196,248,204,27,249,22,71,249,22,2,23,22,28,248,22,63,23, +17,9,248,2,5,248,22,59,23,18,205,28,248,22,63,193,9,249,22,62,248, +22,58,195,27,248,22,59,196,28,248,22,63,193,9,249,22,62,248,22,58,195, +248,80,159,8,26,34,35,248,22,59,196,28,23,20,248,23,17,23,21,10,11, +80,159,34,35,35,97,68,35,37,107,101,114,110,101,108,65,35,37,115,116,120, +71,35,37,113,113,45,97,110,100,45,111,114,66,35,37,99,111,110,100,2,4, +9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1240); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,123,252,43,12,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,74,35,37,100,101, -102,105,110,101,45,101,116,45,97,108,1,29,2,11,11,10,10,10,34,80,158, -34,34,20,99,159,34,16,0,16,0,11,11,16,0,34,11,16,6,66,108,101, -116,47,101,99,3,66,117,110,108,101,115,115,4,67,45,100,101,102,105,110,101, -5,64,119,104,101,110,6,73,100,101,102,105,110,101,45,115,116,114,117,99,116, -7,74,45,100,101,102,105,110,101,45,115,121,110,116,97,120,8,16,6,11,11, -11,11,11,11,16,6,2,3,2,4,2,5,2,6,2,7,2,8,34,40,97, -16,5,94,2,5,2,8,27,20,15,159,35,34,39,27,89,162,8,36,35,37, -69,109,107,45,100,101,102,105,110,101,9,224,2,1,89,162,8,36,35,53,9, -225,1,0,2,27,248,80,158,38,34,197,27,248,80,158,39,35,194,28,248,80, -158,39,36,193,250,22,216,198,250,22,67,200,248,22,65,199,249,80,158,46,37, -248,80,158,47,38,248,80,158,48,34,203,9,200,27,248,80,158,40,34,195,250, -22,216,20,15,159,42,35,39,250,22,65,201,248,22,65,248,80,158,47,35,201, -250,22,67,66,108,97,109,98,100,97,10,248,80,158,49,34,203,249,80,158,50, -37,248,80,158,51,38,204,9,201,249,22,7,248,195,20,15,159,39,36,39,248, -195,20,15,159,39,37,39,39,20,99,159,34,16,5,30,11,65,35,37,115,116, -120,12,67,115,116,120,45,99,100,114,13,6,30,14,2,12,67,115,116,120,45, -99,97,114,15,5,30,16,2,12,71,105,100,101,110,116,105,102,105,101,114,63, -17,2,30,18,71,35,37,113,113,45,97,110,100,45,111,114,19,69,113,113,45, -97,112,112,101,110,100,20,0,30,21,2,12,69,115,116,120,45,62,108,105,115, -116,22,4,16,4,18,97,64,104,101,114,101,23,39,97,37,10,34,11,16,12, -2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2, -8,2,2,98,36,10,35,11,97,159,71,35,37,100,115,45,104,101,108,112,101, -114,24,9,11,159,73,35,37,115,116,114,117,99,116,45,105,110,102,111,25,9, -11,159,66,35,37,99,111,110,100,26,9,11,159,2,19,9,11,159,2,12,9, -11,16,0,96,35,8,254,1,11,16,0,18,103,2,23,46,37,36,35,16,4, -45,11,2,23,3,1,7,101,110,118,50,54,49,48,27,16,4,44,11,64,98, -97,115,101,28,3,1,7,101,110,118,50,54,49,50,29,16,4,43,11,64,99, -111,100,101,30,3,1,7,101,110,118,50,54,49,51,31,16,4,42,11,64,98, -111,100,121,32,3,1,7,101,110,118,50,54,49,52,33,16,4,41,11,65,102, -105,114,115,116,34,3,1,7,101,110,118,50,54,49,53,35,16,4,40,11,65, -112,98,111,100,121,36,3,1,7,101,110,118,50,54,49,54,37,18,99,73,100, -101,102,105,110,101,45,118,97,108,117,101,115,38,48,37,36,35,45,16,4,47, -11,2,9,3,1,7,101,110,118,50,54,49,49,39,18,16,2,158,75,100,101, -102,105,110,101,45,115,121,110,116,97,120,101,115,40,48,49,11,16,5,93,2, -6,89,162,34,35,47,9,223,0,27,248,22,223,195,28,28,192,249,22,190,248, -22,70,195,36,11,250,22,216,20,15,159,38,34,36,250,22,65,20,15,159,41, -35,36,248,80,158,42,34,248,80,158,43,35,202,249,22,67,20,15,159,43,36, -36,248,80,158,44,35,248,80,158,45,35,204,197,250,22,252,47,2,11,6,10, -10,98,97,100,32,115,121,110,116,97,120,41,197,34,20,99,159,34,16,2,2, -14,2,11,16,3,18,99,2,23,52,37,36,35,16,4,51,11,61,120,42,3, -1,7,101,110,118,50,54,49,56,43,16,4,50,11,61,108,44,3,1,7,101, -110,118,50,54,49,57,45,18,16,2,158,62,105,102,46,52,53,18,16,2,158, -2,0,52,54,11,16,5,93,2,4,89,162,34,35,47,9,223,0,27,248,22, -223,195,28,28,192,249,22,190,248,22,70,195,36,11,250,22,216,20,15,159,38, -34,34,251,22,65,20,15,159,42,35,34,248,22,84,200,20,15,159,42,36,34, -249,22,67,20,15,159,44,37,34,248,22,86,202,197,250,22,252,47,2,11,6, -10,10,98,97,100,32,115,121,110,116,97,120,47,197,34,20,99,159,34,16,0, -16,4,18,99,2,23,57,37,36,35,16,4,56,11,2,42,3,1,7,101,110, -118,50,54,50,49,48,16,4,55,11,2,44,3,1,7,101,110,118,50,54,50, -50,49,18,16,2,158,2,46,57,58,18,158,94,10,64,118,111,105,100,50,57, -18,16,2,158,2,0,57,59,11,16,5,93,2,3,89,162,34,35,50,9,223, -0,27,248,22,223,195,28,28,192,28,249,22,190,248,22,70,195,36,248,80,158, -36,34,248,22,84,194,11,11,27,248,22,84,194,27,248,80,158,38,35,248,80, -158,39,35,198,250,22,216,20,15,159,40,34,38,249,22,65,67,99,97,108,108, -47,101,99,51,250,22,67,2,10,248,22,65,202,249,80,158,47,36,248,80,158, -48,37,203,9,199,250,22,252,47,2,11,6,10,10,98,97,100,32,115,121,110, -116,97,120,52,197,34,20,99,159,34,16,4,2,16,2,11,2,18,2,21,16, -1,18,100,2,23,8,29,37,36,35,16,4,8,28,11,2,30,3,1,7,101, -110,118,50,54,50,52,53,16,4,8,27,11,2,44,3,1,7,101,110,118,50, -54,50,53,54,16,6,8,26,11,63,118,97,114,55,65,101,120,112,114,115,56, -3,1,7,101,110,118,50,54,50,54,57,2,57,11,16,5,93,2,7,27,89, -162,8,36,38,8,26,69,109,97,107,101,45,99,111,114,101,58,223,1,250,22, -65,70,108,101,116,45,118,97,108,117,101,115,59,248,22,65,249,22,65,21,97, -64,116,121,112,101,60,65,109,97,107,101,114,61,64,112,114,101,100,62,66,97, -99,99,101,115,115,63,66,109,117,116,97,116,101,64,26,8,22,65,76,109,97, -107,101,45,115,116,114,117,99,116,45,116,121,112,101,65,249,22,65,65,113,117, -111,116,101,66,23,17,23,17,248,22,70,23,19,34,11,64,110,117,108,108,67, -23,16,252,22,67,66,118,97,108,117,101,115,68,2,60,2,61,2,62,249,80, -158,44,34,28,248,22,63,23,15,9,250,22,67,251,22,65,1,26,109,97,107, -101,45,115,116,114,117,99,116,45,102,105,101,108,100,45,97,99,99,101,115,115, -111,114,69,2,63,34,249,22,65,2,66,248,22,58,23,24,251,22,65,1,25, -109,97,107,101,45,115,116,114,117,99,116,45,102,105,101,108,100,45,109,117,116, -97,116,111,114,70,2,64,34,249,22,65,2,66,248,22,58,23,24,249,32,71, -89,162,8,100,36,51,64,108,111,111,112,72,222,28,248,22,63,193,9,250,22, -67,251,22,65,2,69,2,63,200,249,22,65,2,66,248,22,58,202,251,22,65, -2,70,2,64,200,249,22,65,2,66,248,22,58,202,27,248,22,59,197,27,248, -22,177,199,28,248,22,63,194,9,250,22,67,251,22,65,2,69,2,63,199,249, -22,65,2,66,248,22,58,203,251,22,65,2,70,2,64,199,249,22,65,2,66, -248,22,58,203,249,2,71,248,22,59,199,248,22,177,198,248,22,59,23,20,35, -9,89,162,8,36,35,8,29,9,224,1,0,87,94,28,248,80,158,36,35,195, -250,22,252,47,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,73,197, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,74,0,0,0,1,0,0,6,0,9,0,23,0, +28,0,35,0,42,0,57,0,65,0,75,0,82,0,88,0,100,0,105,0,117, +0,131,0,138,0,143,0,148,0,162,0,178,0,180,0,182,0,185,0,195,0, +205,0,216,0,221,0,227,0,232,0,239,0,246,0,252,0,24,1,51,1,64, +1,74,1,84,1,94,1,104,1,113,1,125,1,137,1,153,1,167,1,181,1, +187,1,219,1,249,1,3,2,19,2,122,2,147,2,153,2,159,2,198,2,204, +2,210,2,216,2,255,2,5,3,11,3,22,3,28,3,88,3,211,3,231,3, +4,4,20,4,38,4,54,4,69,4,93,4,213,4,0,0,65,12,0,0,65, +98,101,103,105,110,29,11,11,73,100,101,102,105,110,101,45,115,116,114,117,99, +116,64,119,104,101,110,66,108,101,116,47,101,99,66,117,110,108,101,115,115,74, +45,100,101,102,105,110,101,45,115,121,110,116,97,120,67,45,100,101,102,105,110, +101,69,109,107,45,100,101,102,105,110,101,66,108,97,109,98,100,97,65,35,37, +115,116,120,71,35,37,113,113,45,97,110,100,45,111,114,64,104,101,114,101,71, +35,37,100,115,45,104,101,108,112,101,114,73,35,37,115,116,114,117,99,116,45, +105,110,102,111,66,35,37,99,111,110,100,64,99,111,100,101,64,98,111,100,121, +73,100,101,102,105,110,101,45,118,97,108,117,101,115,75,100,101,102,105,110,101, +45,115,121,110,116,97,120,101,115,61,120,61,108,62,105,102,3,1,7,101,110, +118,50,54,50,54,69,109,97,107,101,45,99,111,114,101,70,108,101,116,45,118, +97,108,117,101,115,64,116,121,112,101,65,109,97,107,101,114,64,112,114,101,100, +66,97,99,99,101,115,115,66,109,117,116,97,116,101,65,113,117,111,116,101,1, +26,109,97,107,101,45,115,116,114,117,99,116,45,102,105,101,108,100,45,97,99, +99,101,115,115,111,114,1,25,109,97,107,101,45,115,116,114,117,99,116,45,102, +105,101,108,100,45,109,117,116,97,116,111,114,72,115,121,110,116,97,120,45,101, +114,114,111,114,69,105,110,115,112,101,99,116,111,114,3,1,7,101,110,118,50, +54,51,52,3,1,7,101,110,118,50,54,52,56,3,1,7,101,110,118,50,54, +53,49,68,35,37,107,101,114,110,101,108,30,2,11,67,115,116,120,45,99,100, +114,6,30,2,11,67,115,116,120,45,99,97,114,5,30,2,11,71,105,100,101, +110,116,105,102,105,101,114,63,2,30,2,12,69,113,113,45,97,112,112,101,110, +100,0,30,2,11,69,115,116,120,45,62,108,105,115,116,4,95,8,193,11,16, +0,97,10,35,11,97,159,2,14,9,11,159,2,15,9,11,159,2,16,9,11, +159,2,12,9,11,159,2,11,9,11,16,0,96,10,34,11,16,12,2,3,2, +2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,2, +18,96,2,13,8,48,8,47,8,46,16,4,11,11,2,13,3,1,7,101,110, +118,50,54,49,48,18,102,2,13,8,48,8,47,8,46,8,50,16,4,11,11, +64,98,97,115,101,3,1,7,101,110,118,50,54,49,50,16,4,11,11,2,17, +3,1,7,101,110,118,50,54,49,51,16,4,11,11,2,18,3,1,7,101,110, +118,50,54,49,52,16,4,11,11,65,102,105,114,115,116,3,1,7,101,110,118, +50,54,49,53,16,4,11,11,65,112,98,111,100,121,3,1,7,101,110,118,50, +54,49,54,97,8,48,8,47,8,46,8,50,16,4,11,11,2,9,3,1,7, +101,110,118,50,54,49,49,18,158,2,19,8,52,18,158,2,20,8,52,97,8, +48,8,47,8,46,16,4,11,11,2,21,3,1,7,101,110,118,50,54,49,56, +16,4,11,11,2,22,3,1,7,101,110,118,50,54,49,57,18,158,2,13,8, +55,18,158,2,23,8,55,18,158,2,1,8,55,97,8,48,8,47,8,46,16, +4,11,11,2,21,3,1,7,101,110,118,50,54,50,49,16,4,11,11,2,22, +3,1,7,101,110,118,50,54,50,50,18,158,2,13,8,59,18,158,2,23,8, +59,18,158,94,10,64,118,111,105,100,8,59,18,158,2,1,8,59,18,99,2, +13,8,48,8,47,8,46,16,4,11,11,2,17,3,1,7,101,110,118,50,54, +50,52,16,4,11,11,2,22,3,1,7,101,110,118,50,54,50,53,16,6,11, +11,63,118,97,114,65,101,120,112,114,115,2,24,2,24,32,65,89,162,8,100, +36,51,64,108,111,111,112,222,28,248,22,63,193,9,250,22,67,251,22,65,2, +33,2,30,200,249,22,65,2,32,248,22,58,202,251,22,65,2,34,2,31,200, +249,22,65,2,32,248,22,58,202,27,248,22,59,197,27,248,22,177,2,199,28, +248,22,63,194,9,250,22,67,251,22,65,2,33,2,30,199,249,22,65,2,32, +248,22,58,203,251,22,65,2,34,2,31,199,249,22,65,2,32,248,22,58,203, +249,2,65,248,22,59,199,248,22,177,2,198,32,66,89,162,35,37,42,2,35, +222,252,22,1,22,175,8,11,198,197,199,16,6,11,11,2,35,78,98,117,105, +108,100,45,115,116,114,117,99,116,45,110,97,109,101,115,2,37,2,37,16,4, +11,11,2,18,3,1,7,101,110,118,50,54,51,51,16,4,11,11,63,115,116, +120,3,1,7,101,110,118,50,54,51,50,16,4,11,11,2,25,3,1,7,101, +110,118,50,54,50,56,99,8,48,8,47,8,46,8,70,8,69,8,68,8,67, +18,158,94,10,77,99,117,114,114,101,110,116,45,105,110,115,112,101,99,116,111, +114,8,71,18,103,2,13,8,48,8,47,8,46,8,70,8,69,8,68,8,67, +16,10,11,11,64,110,97,109,101,71,102,105,101,108,100,45,110,97,109,101,115, +2,36,68,115,117,112,101,114,45,105,100,2,38,2,38,2,38,2,38,16,4, +11,11,73,100,101,102,105,110,101,100,45,110,97,109,101,115,3,1,7,101,110, +118,50,54,52,57,16,6,11,11,76,115,117,112,101,114,45,105,100,47,115,116, +114,117,99,116,58,68,115,116,120,45,105,110,102,111,2,39,2,39,159,34,20, +99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114,74,35,37,100, +101,102,105,110,101,45,101,116,45,97,108,2,2,10,10,10,34,80,158,34,34, +20,99,159,34,16,0,16,0,11,11,16,0,34,11,16,6,2,3,2,4,2, +5,2,6,2,7,2,8,16,6,11,11,11,11,11,11,16,6,2,3,2,4, +2,5,2,6,2,7,2,8,34,40,97,16,5,94,2,8,2,7,27,20,15, +159,35,34,39,27,89,162,8,36,35,37,2,9,224,2,1,89,162,8,36,35, +53,9,225,1,0,2,27,248,80,158,38,34,197,27,248,80,158,39,35,194,28, +248,80,158,39,36,193,250,22,152,3,198,250,22,67,200,248,22,65,199,249,80, +158,46,37,248,80,158,47,38,248,80,158,48,34,203,9,200,27,248,80,158,40, +34,195,250,22,152,3,20,15,159,42,35,39,250,22,65,201,248,22,65,248,80, +158,47,35,201,250,22,67,2,10,248,80,158,49,34,203,249,80,158,50,37,248, +80,158,51,38,204,9,201,249,22,7,248,195,20,15,159,39,36,39,248,195,20, +15,159,39,37,39,39,20,99,159,34,16,5,2,41,2,42,2,43,2,44,2, +45,16,4,33,49,33,51,33,53,33,54,11,16,5,93,2,4,89,162,34,35, +47,9,223,0,27,248,22,159,3,195,28,28,192,249,22,190,2,248,22,70,195, +36,11,250,22,152,3,20,15,159,38,34,36,250,22,65,20,15,159,41,35,36, +248,80,158,42,34,248,80,158,43,35,202,249,22,67,20,15,159,43,36,36,248, +80,158,44,35,248,80,158,45,35,204,197,250,22,175,8,11,6,10,10,98,97, +100,32,115,121,110,116,97,120,197,34,20,99,159,34,16,2,2,42,2,41,16, +3,33,56,33,57,33,58,11,16,5,93,2,6,89,162,34,35,47,9,223,0, +27,248,22,159,3,195,28,28,192,249,22,190,2,248,22,70,195,36,11,250,22, +152,3,20,15,159,38,34,34,251,22,65,20,15,159,42,35,34,248,22,84,200, +20,15,159,42,36,34,249,22,67,20,15,159,44,37,34,248,22,86,202,197,250, +22,175,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,34,20,99, +159,34,16,0,16,4,33,60,33,61,33,62,33,63,11,16,5,93,2,5,89, +162,34,35,50,9,223,0,27,248,22,159,3,195,28,28,192,28,249,22,190,2, +248,22,70,195,36,248,80,158,36,34,248,22,84,194,11,11,27,248,22,84,194, +27,248,80,158,38,35,248,80,158,39,35,198,250,22,152,3,20,15,159,40,34, +38,249,22,65,67,99,97,108,108,47,101,99,250,22,67,2,10,248,22,65,202, +249,80,158,47,36,248,80,158,48,37,203,9,199,250,22,175,8,11,6,10,10, +98,97,100,32,115,121,110,116,97,120,197,34,20,99,159,34,16,4,2,43,2, +41,2,44,2,45,16,1,33,64,11,16,5,93,2,3,27,89,162,8,36,38, +8,26,2,25,223,1,250,22,65,2,26,248,22,65,249,22,65,21,97,2,27, +2,28,2,29,2,30,2,31,26,8,22,65,76,109,97,107,101,45,115,116,114, +117,99,116,45,116,121,112,101,249,22,65,2,32,23,17,23,17,248,22,70,23, +19,34,11,64,110,117,108,108,23,16,252,22,67,66,118,97,108,117,101,115,2, +27,2,28,2,29,249,80,158,44,34,28,248,22,63,23,15,9,250,22,67,251, +22,65,2,33,2,30,34,249,22,65,2,32,248,22,58,23,24,251,22,65,2, +34,2,31,34,249,22,65,2,32,248,22,58,23,24,249,2,65,248,22,59,23, +20,35,9,89,162,8,36,35,8,29,9,224,1,0,87,94,28,248,80,158,36, +35,195,250,22,175,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197, 12,27,248,80,158,37,36,248,80,158,38,37,197,87,100,27,248,22,56,194,28, -192,192,249,32,74,89,162,35,37,42,72,115,121,110,116,97,120,45,101,114,114, -111,114,75,222,252,22,1,22,252,47,2,11,198,197,199,198,6,17,17,101,109, -112,116,121,32,100,101,99,108,97,114,97,116,105,111,110,76,27,248,80,158,38, -38,194,28,192,192,249,2,74,198,6,18,18,105,108,108,101,103,97,108,32,117, -115,101,32,111,102,32,96,46,39,77,27,250,22,191,36,248,22,70,197,37,28, -192,192,249,2,74,198,6,21,21,119,114,111,110,103,32,110,117,109,98,101,114, -32,111,102,32,112,97,114,116,115,78,27,248,80,158,38,35,248,22,58,195,28, -192,192,27,28,248,80,158,39,39,248,22,58,196,28,248,80,158,39,35,248,80, -158,40,40,248,22,58,197,28,248,80,158,39,39,248,80,158,40,37,248,22,58, -197,28,248,80,158,39,35,248,80,158,40,40,248,80,158,41,37,248,22,58,198, -248,80,158,39,41,248,80,158,40,37,248,80,158,41,37,248,22,58,198,11,11, -11,11,28,192,192,249,2,74,199,6,55,55,102,105,114,115,116,32,112,97,114, -116,32,109,117,115,116,32,98,101,32,97,110,32,105,100,101,110,116,105,102,105, -101,114,32,111,114,32,112,97,105,114,32,111,102,32,105,100,101,110,116,105,102, -105,101,114,115,79,27,248,80,158,38,38,248,22,84,195,28,192,192,28,248,80, -158,38,39,248,22,84,195,249,2,74,198,6,41,41,105,108,108,101,103,97,108, -32,117,115,101,32,111,102,32,96,46,39,32,105,110,32,102,105,101,108,100,32, -110,97,109,101,32,115,101,113,117,101,110,99,101,80,249,2,74,198,6,30,30, -102,105,101,108,100,32,110,97,109,101,115,32,109,117,115,116,32,98,101,32,97, -32,115,101,113,117,101,110,99,101,81,249,22,3,89,162,34,35,41,9,224,4, -5,27,248,80,158,37,35,196,28,192,192,250,2,74,196,6,27,27,102,105,101, -108,100,32,110,97,109,101,32,110,111,116,32,97,32,105,100,101,110,116,105,102, -105,101,114,82,198,248,80,158,39,36,248,22,84,196,28,249,22,77,247,22,252, -105,3,21,93,70,101,120,112,114,101,115,115,105,111,110,83,249,2,74,197,6, -35,35,97,108,108,111,119,101,100,32,111,110,108,121,32,105,110,32,100,101,102, -105,110,105,116,105,111,110,32,99,111,110,116,101,120,116,115,84,12,27,28,248, -80,158,38,35,248,22,58,195,248,22,58,194,248,80,158,38,40,248,22,58,195, -27,248,80,158,39,36,248,22,84,196,27,28,248,22,63,248,22,86,197,20,15, -159,39,34,43,248,22,93,196,27,28,248,80,158,41,35,248,22,58,198,11,248, -80,158,41,40,248,80,158,42,37,248,22,58,199,27,249,22,2,89,162,8,36, -35,39,9,223,6,250,22,216,195,196,195,27,248,22,50,248,22,217,201,27,249, -22,2,22,50,249,22,2,22,217,203,249,22,2,22,48,249,22,71,250,22,65, -249,22,252,166,1,6,7,7,115,116,114,117,99,116,58,85,202,249,22,252,166, -1,6,5,5,109,97,107,101,45,86,202,249,22,252,166,1,202,6,1,1,63, -87,249,22,1,22,71,249,22,2,89,162,8,36,35,43,9,223,9,249,22,65, -250,22,252,166,1,197,6,1,1,45,88,198,252,22,252,166,1,6,4,4,115, -101,116,45,89,199,6,1,1,45,90,200,6,1,1,33,91,200,91,159,36,11, -90,161,36,34,11,251,80,158,47,42,206,199,198,10,27,250,22,216,20,15,159, -47,35,43,250,22,65,2,0,250,22,65,2,38,204,27,251,23,23,23,21,28, -23,19,69,105,110,115,112,101,99,116,111,114,92,11,23,15,23,20,28,23,15, -251,22,65,2,59,248,22,65,249,22,65,21,93,2,92,23,22,21,95,2,46, -96,2,46,2,92,94,63,110,111,116,93,94,70,105,110,115,112,101,99,116,111, -114,63,94,2,92,11,96,76,114,97,105,115,101,45,116,121,112,101,45,101,114, -114,111,114,95,94,2,66,2,7,6,15,15,105,110,115,112,101,99,116,111,114, -32,111,114,32,35,102,96,2,92,196,192,250,22,65,2,40,248,22,65,23,17, -203,206,28,196,250,22,225,195,75,100,105,115,97,112,112,101,97,114,101,100,45, -117,115,101,97,248,22,252,108,3,200,192,35,20,99,159,34,16,9,2,18,2, -16,2,21,2,11,30,98,2,12,69,115,116,120,45,108,105,115,116,63,99,8, -30,100,2,12,69,115,116,120,45,112,97,105,114,63,101,11,2,14,30,102,2, -12,69,115,116,120,45,110,117,108,108,63,103,10,30,104,2,24,72,103,101,116, -45,115,116,120,45,105,110,102,111,105,0,16,2,18,158,93,101,77,99,117,114, -114,101,110,116,45,105,110,115,112,101,99,116,111,114,106,8,34,37,36,35,16, -4,8,33,11,2,58,3,1,7,101,110,118,50,54,50,56,107,16,4,8,32, -11,63,115,116,120,108,3,1,7,101,110,118,50,54,51,50,109,16,4,8,31, -11,2,32,3,1,7,101,110,118,50,54,51,51,110,16,6,8,30,11,2,75, -78,98,117,105,108,100,45,115,116,114,117,99,116,45,110,97,109,101,115,111,3, -1,7,101,110,118,50,54,51,52,112,2,112,8,34,18,104,2,23,8,38,37, -36,35,8,33,8,32,8,31,8,30,16,10,8,37,11,64,110,97,109,101,113, -71,102,105,101,108,100,45,110,97,109,101,115,114,2,92,68,115,117,112,101,114, -45,105,100,115,3,1,7,101,110,118,50,54,52,56,116,2,116,2,116,2,116, -16,4,8,36,11,73,100,101,102,105,110,101,100,45,110,97,109,101,115,117,3, -1,7,101,110,118,50,54,52,57,118,16,6,8,35,11,76,115,117,112,101,114, -45,105,100,47,115,116,114,117,99,116,58,119,68,115,116,120,45,105,110,102,111, -120,3,1,7,101,110,118,50,54,53,49,121,2,121,11,9,93,68,35,37,107, -101,114,110,101,108,122,98,2,122,2,12,2,19,2,26,2,25,2,24,0}; - EVAL_ONE_SIZED_STR((char *)expr, 3127); +192,192,249,2,66,198,6,17,17,101,109,112,116,121,32,100,101,99,108,97,114, +97,116,105,111,110,27,248,80,158,38,38,194,28,192,192,249,2,66,198,6,18, +18,105,108,108,101,103,97,108,32,117,115,101,32,111,102,32,96,46,39,27,250, +22,191,2,36,248,22,70,197,37,28,192,192,249,2,66,198,6,21,21,119,114, +111,110,103,32,110,117,109,98,101,114,32,111,102,32,112,97,114,116,115,27,248, +80,158,38,35,248,22,58,195,28,192,192,27,28,248,80,158,39,39,248,22,58, +196,28,248,80,158,39,35,248,80,158,40,40,248,22,58,197,28,248,80,158,39, +39,248,80,158,40,37,248,22,58,197,28,248,80,158,39,35,248,80,158,40,40, +248,80,158,41,37,248,22,58,198,248,80,158,39,41,248,80,158,40,37,248,80, +158,41,37,248,22,58,198,11,11,11,11,28,192,192,249,2,66,199,6,55,55, +102,105,114,115,116,32,112,97,114,116,32,109,117,115,116,32,98,101,32,97,110, +32,105,100,101,110,116,105,102,105,101,114,32,111,114,32,112,97,105,114,32,111, +102,32,105,100,101,110,116,105,102,105,101,114,115,27,248,80,158,38,38,248,22, +84,195,28,192,192,28,248,80,158,38,39,248,22,84,195,249,2,66,198,6,41, +41,105,108,108,101,103,97,108,32,117,115,101,32,111,102,32,96,46,39,32,105, +110,32,102,105,101,108,100,32,110,97,109,101,32,115,101,113,117,101,110,99,101, +249,2,66,198,6,30,30,102,105,101,108,100,32,110,97,109,101,115,32,109,117, +115,116,32,98,101,32,97,32,115,101,113,117,101,110,99,101,249,22,3,89,162, +34,35,41,9,224,4,5,27,248,80,158,37,35,196,28,192,192,250,2,66,196, +6,27,27,102,105,101,108,100,32,110,97,109,101,32,110,111,116,32,97,32,105, +100,101,110,116,105,102,105,101,114,198,248,80,158,39,36,248,22,84,196,28,249, +22,77,247,22,169,13,21,93,70,101,120,112,114,101,115,115,105,111,110,249,2, +66,197,6,35,35,97,108,108,111,119,101,100,32,111,110,108,121,32,105,110,32, +100,101,102,105,110,105,116,105,111,110,32,99,111,110,116,101,120,116,115,12,27, +28,248,80,158,38,35,248,22,58,195,248,22,58,194,248,80,158,38,40,248,22, +58,195,27,248,80,158,39,36,248,22,84,196,27,28,248,22,63,248,22,86,197, +20,15,159,39,34,43,248,22,93,196,27,28,248,80,158,41,35,248,22,58,198, +11,248,80,158,41,40,248,80,158,42,37,248,22,58,199,27,249,22,2,89,162, +8,36,35,39,9,223,6,250,22,152,3,195,196,195,27,248,22,50,248,22,153, +3,201,27,249,22,2,22,50,249,22,2,22,153,3,203,249,22,2,22,48,249, +22,71,250,22,65,249,22,166,6,6,7,7,115,116,114,117,99,116,58,202,249, +22,166,6,6,5,5,109,97,107,101,45,202,249,22,166,6,202,6,1,1,63, +249,22,1,22,71,249,22,2,89,162,8,36,35,43,9,223,9,249,22,65,250, +22,166,6,197,6,1,1,45,198,252,22,166,6,6,4,4,115,101,116,45,199, +6,1,1,45,200,6,1,1,33,200,91,159,36,11,90,161,36,34,11,251,80, +158,47,42,206,199,198,10,27,250,22,152,3,20,15,159,47,35,43,250,22,65, +2,1,250,22,65,2,19,204,27,251,23,23,23,21,28,23,19,2,36,11,23, +15,23,20,28,23,15,251,22,65,2,26,248,22,65,249,22,65,21,93,2,36, +23,22,21,95,2,23,96,2,23,2,36,94,63,110,111,116,94,70,105,110,115, +112,101,99,116,111,114,63,2,36,11,96,76,114,97,105,115,101,45,116,121,112, +101,45,101,114,114,111,114,94,2,32,2,3,6,15,15,105,110,115,112,101,99, +116,111,114,32,111,114,32,35,102,2,36,196,192,250,22,65,2,20,248,22,65, +23,17,203,206,28,196,250,22,161,3,195,75,100,105,115,97,112,112,101,97,114, +101,100,45,117,115,101,248,22,172,13,200,192,35,20,99,159,34,16,9,2,44, +2,43,2,45,2,41,30,2,11,69,115,116,120,45,108,105,115,116,63,8,30, +2,11,69,115,116,120,45,112,97,105,114,63,11,2,42,30,2,11,69,115,116, +120,45,110,117,108,108,63,10,30,2,14,72,103,101,116,45,115,116,120,45,105, +110,102,111,0,16,2,33,72,33,73,11,9,93,2,40,98,2,40,2,11,2, +12,2,16,2,15,2,14,0}; + EVAL_ONE_SIZED_STR((char *)expr, 3304); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,21,252,37,1,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,74,35,37,115,109, -97,108,108,45,115,99,104,101,109,101,1,29,2,11,11,10,10,10,34,80,158, -34,34,20,99,159,34,16,0,16,0,11,11,16,0,34,11,16,13,67,45,100, -101,102,105,110,101,3,64,108,101,116,42,4,73,100,101,102,105,110,101,45,115, -116,114,117,99,116,5,66,108,101,116,47,101,99,6,70,113,117,97,115,105,113, -117,111,116,101,7,63,97,110,100,8,64,119,104,101,110,9,62,111,114,10,64, -99,111,110,100,11,66,117,110,108,101,115,115,12,66,108,101,116,114,101,99,13, -74,45,100,101,102,105,110,101,45,115,121,110,116,97,120,14,63,108,101,116,15, -16,13,74,35,37,100,101,102,105,110,101,45,101,116,45,97,108,16,71,35,37, -113,113,45,97,110,100,45,111,114,17,2,16,2,16,2,17,2,17,2,16,2, -17,66,35,37,99,111,110,100,18,2,16,2,17,2,16,2,17,16,13,2,3, -2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2, -14,2,15,34,47,9,9,97,68,35,37,107,101,114,110,101,108,19,65,35,37, -115,116,120,20,2,17,2,18,2,16,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 305); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,17,0,0,0,1,0,0,5,0,19,0,24,0, +35,0,42,0,49,0,54,0,62,0,66,0,70,0,77,0,80,0,95,0,107, +0,122,0,129,0,0,0,48,1,0,0,64,108,101,116,42,73,100,101,102,105, +110,101,45,115,116,114,117,99,116,64,119,104,101,110,70,113,117,97,115,105,113, +117,111,116,101,66,117,110,108,101,115,115,66,108,101,116,47,101,99,64,99,111, +110,100,67,45,100,101,102,105,110,101,63,97,110,100,63,108,101,116,66,108,101, +116,114,101,99,62,111,114,74,45,100,101,102,105,110,101,45,115,121,110,116,97, +120,71,35,37,113,113,45,97,110,100,45,111,114,74,35,37,100,101,102,105,110, +101,45,101,116,45,97,108,66,35,37,99,111,110,100,159,34,20,99,159,34,16, +1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,96,114,74,35,37,115, +109,97,108,108,45,115,99,104,101,109,101,29,11,11,10,10,10,34,80,158,34, +34,20,99,159,34,16,0,16,0,11,11,16,0,34,11,16,13,2,1,2,2, +2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2, +13,16,13,2,14,2,15,2,15,2,14,2,15,2,15,2,16,2,15,2,14, +2,14,2,14,2,14,2,15,16,13,2,1,2,2,2,3,2,4,2,5,2, +6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,34,47,9,9,97,68, +35,37,107,101,114,110,101,108,65,35,37,115,116,120,2,14,2,16,2,15,9, +0}; + EVAL_ONE_SIZED_STR((char *)expr, 357); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,233,252,170,53,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,115,64,35,37,115,99, -1,29,2,11,11,10,10,18,95,11,37,96,35,8,254,1,11,16,2,64,115, -101,116,33,3,68,35,37,107,101,114,110,101,108,4,42,80,158,34,34,20,99, -159,42,16,43,30,5,2,2,64,46,46,46,63,6,254,1,30,7,2,2,68, -115,116,120,45,109,101,109,113,8,254,1,30,9,2,2,72,115,116,120,45,109, -101,109,113,45,112,111,115,10,254,1,30,11,2,2,73,115,116,120,45,109,101, -109,113,42,45,112,111,115,12,254,1,30,13,2,2,76,112,105,99,107,45,115, -112,101,99,105,102,105,99,105,116,121,14,254,1,30,15,2,2,1,27,109,97, -107,101,45,109,97,116,99,104,38,101,110,118,47,101,120,116,114,97,99,116,45, -118,97,114,115,16,254,1,30,17,2,2,69,101,108,108,105,112,115,105,115,63, -18,254,1,30,19,65,35,37,115,116,120,20,69,115,116,120,45,110,117,108,108, -63,21,10,30,22,2,20,67,115,116,120,45,99,100,114,23,6,30,24,2,20, -67,115,116,120,45,99,97,114,25,5,30,26,2,2,1,21,103,101,116,45,101, -108,108,105,112,115,105,115,45,110,101,115,116,105,110,103,115,27,254,1,30,28, -2,2,76,102,108,97,116,116,101,110,45,110,101,115,116,105,110,103,115,29,254, -1,30,30,2,2,65,97,112,112,45,101,31,254,1,30,32,2,20,69,115,116, -120,45,112,97,105,114,63,33,11,30,34,2,2,63,97,112,112,35,254,1,30, -36,2,2,70,97,112,112,45,97,112,112,101,110,100,37,254,1,30,38,2,20, -71,105,100,101,110,116,105,102,105,101,114,63,39,2,30,40,2,20,71,115,116, -120,45,118,101,99,116,111,114,63,41,15,30,42,71,35,37,113,113,45,97,110, -100,45,111,114,43,69,113,113,45,97,112,112,101,110,100,44,0,30,45,2,2, -74,109,97,107,101,45,109,97,116,99,104,38,101,110,118,46,254,1,30,47,2, -2,74,103,101,116,45,109,97,116,99,104,45,118,97,114,115,48,254,1,30,49, -2,2,72,109,97,107,101,45,112,101,120,112,97,110,100,50,254,1,30,51,2, -2,76,101,108,108,105,112,115,105,115,45,115,117,98,45,101,110,118,52,254,1, -30,53,2,2,72,101,120,116,114,97,99,116,45,118,97,114,115,54,254,1,30, -55,2,2,74,97,112,112,108,121,45,108,105,115,116,45,114,101,102,56,254,1, -30,57,2,2,70,97,112,112,108,121,45,116,111,45,114,58,254,1,30,59,2, -2,70,97,112,112,108,121,45,99,111,110,115,60,254,1,30,61,2,2,77,99, -104,101,99,107,45,110,111,116,45,112,97,116,116,101,114,110,62,254,1,30,63, -2,2,1,23,109,117,108,116,105,112,108,101,45,101,108,108,105,112,115,105,115, -45,118,97,114,115,63,64,254,1,30,65,2,2,77,115,116,120,45,115,109,97, -108,108,101,114,45,116,104,97,110,63,66,254,1,30,67,2,2,68,115,116,120, -45,115,105,122,101,68,254,1,30,69,2,2,72,110,111,45,101,108,108,105,112, -115,101,115,63,70,254,1,30,71,2,2,1,21,115,116,114,117,99,116,58,115, -121,110,116,97,120,45,109,97,112,112,105,110,103,72,254,1,30,73,2,2,1, -20,45,109,97,107,101,45,115,121,110,116,97,120,45,109,97,112,112,105,110,103, -74,254,1,30,75,2,2,76,45,115,121,110,116,97,120,45,109,97,112,112,105, -110,103,63,76,254,1,30,77,2,2,78,115,121,110,116,97,120,45,109,97,112, -112,105,110,103,45,114,101,102,78,254,1,30,79,2,2,79,115,121,110,116,97, -120,45,109,97,112,112,105,110,103,45,115,101,116,33,80,254,1,30,81,2,2, -1,21,45,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,100,101,112, -116,104,82,254,1,30,83,2,2,1,22,45,115,121,110,116,97,120,45,109,97, -112,112,105,110,103,45,118,97,108,118,97,114,84,254,1,30,85,2,2,79,109, -97,107,101,45,115,121,110,116,97,120,45,109,97,112,112,105,110,103,86,254,1, -30,87,2,2,75,115,121,110,116,97,120,45,109,97,112,112,105,110,103,63,88, -254,1,30,89,2,2,1,20,115,121,110,116,97,120,45,109,97,112,112,105,110, -103,45,100,101,112,116,104,90,254,1,30,91,2,2,1,21,115,121,110,116,97, -120,45,109,97,112,112,105,110,103,45,118,97,108,118,97,114,92,254,1,16,3, -18,98,63,46,46,46,93,41,98,40,10,34,11,94,159,74,35,37,115,109,97, -108,108,45,115,99,104,101,109,101,94,9,11,159,2,20,9,11,16,72,2,56, -2,2,2,46,2,2,2,16,2,2,2,8,2,2,2,86,2,2,2,48,2, -2,2,37,2,2,2,82,2,2,2,50,2,2,2,90,2,2,2,84,2,2, -2,76,2,2,2,35,2,2,2,66,2,2,2,10,2,2,2,78,2,2,2, -12,2,2,2,68,2,2,2,92,2,2,2,62,2,2,2,60,2,2,2,54, -2,2,2,64,2,2,2,31,2,2,2,58,2,2,2,27,2,2,2,29,2, -2,2,70,2,2,2,18,2,2,2,72,2,2,2,6,2,2,2,14,2,2, -2,80,2,2,2,88,2,2,2,52,2,2,2,74,2,2,96,39,35,11,16, -0,35,16,4,38,11,61,115,95,3,1,7,101,110,118,50,54,53,53,96,18, -104,2,93,49,40,39,35,16,10,48,11,61,112,97,67,112,114,111,116,111,45, -114,98,61,107,99,64,100,101,115,116,100,3,1,7,101,110,118,50,55,51,53, -101,2,101,2,101,2,101,16,6,47,11,68,101,120,112,97,110,100,101,114,102, -63,116,111,112,103,3,1,7,101,110,118,50,55,51,57,104,3,1,7,101,110, -118,50,55,51,55,105,16,6,46,11,2,102,2,103,3,1,7,101,110,118,50, -55,52,49,106,2,106,16,14,45,11,2,97,2,98,69,108,111,99,97,108,45, -116,111,112,107,73,117,115,101,45,101,108,108,105,112,115,101,115,63,108,72,117, -115,101,45,116,97,105,108,45,112,111,115,109,65,104,97,115,104,33,110,3,1, -7,101,110,118,50,55,52,50,111,2,111,2,111,2,111,2,111,2,111,16,10, -44,11,66,112,45,104,101,97,100,112,68,101,108,45,99,111,117,110,116,113,66, -114,101,115,116,45,112,114,67,108,97,115,116,45,101,108,115,3,1,7,101,110, -118,50,55,52,51,116,2,116,2,116,2,116,16,4,43,11,64,108,111,111,112, -117,3,1,7,101,110,118,50,55,52,54,118,16,4,42,11,2,113,3,1,7, -101,110,118,50,55,52,55,119,18,98,2,3,51,40,39,35,16,6,50,11,64, -115,101,108,102,120,63,115,116,120,121,3,1,7,101,110,118,50,56,52,49,122, -2,122,11,11,16,27,2,74,2,82,2,84,2,76,2,6,2,35,2,37,2, -31,2,60,2,56,2,58,2,62,2,52,2,18,2,54,2,29,2,27,2,16, -2,64,2,14,2,72,2,8,2,12,2,68,2,66,2,78,2,80,8,27,16, -9,10,10,10,10,10,10,10,10,10,16,9,2,48,2,46,2,50,2,86,2, -70,2,10,2,90,2,92,2,88,16,9,11,11,11,11,11,11,11,11,11,16, -9,2,48,2,46,2,50,2,86,2,70,2,10,2,90,2,92,2,88,43,43, -9,132,83,159,34,93,80,159,34,8,53,35,89,162,8,64,37,47,63,115,117, -98,123,223,0,28,28,195,28,248,80,158,35,47,195,27,248,80,158,36,42,196, -28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,22,47,248,22, -217,194,249,22,230,194,20,15,159,38,34,8,43,11,248,22,252,17,2,27,248, -80,158,38,43,198,28,248,22,47,248,22,217,194,249,22,230,194,20,15,159,39, -34,8,43,11,11,11,11,11,91,159,36,11,90,161,36,34,11,27,248,80,158, -38,42,248,80,158,39,42,199,28,28,248,80,158,38,47,193,27,248,80,158,39, -43,194,28,248,22,47,248,22,217,194,249,22,230,194,20,15,159,40,34,8,43, -11,11,27,248,80,158,39,42,194,27,32,124,89,162,8,36,35,37,9,222,248, -22,65,248,22,65,194,28,28,248,80,158,40,47,194,27,248,80,158,41,43,195, -28,248,22,47,248,22,217,194,249,22,230,194,20,15,159,42,34,8,43,11,11, -249,80,159,41,8,54,35,248,80,158,42,42,196,32,125,89,162,8,36,35,38, -9,222,248,22,65,248,22,65,248,22,65,195,249,22,7,195,194,249,22,7,194, -22,65,27,250,80,159,40,8,53,35,199,248,80,158,41,43,201,10,249,22,71, -249,22,2,198,196,250,80,159,42,8,53,35,201,198,10,28,248,80,158,35,47, -195,27,248,80,158,36,43,196,28,28,196,28,248,80,158,36,50,193,28,28,248, -22,47,248,22,217,194,249,22,230,194,20,15,159,37,34,8,43,11,248,80,158, -36,47,248,80,158,37,42,197,11,11,11,250,80,159,38,8,53,35,197,248,80, -158,39,43,248,80,158,40,42,200,11,249,22,72,250,80,159,40,8,53,35,199, -248,80,158,41,43,201,201,250,80,159,40,8,53,35,199,248,80,158,41,42,201, -201,28,248,80,158,35,50,195,28,249,22,5,89,162,8,36,35,38,9,223,4, -28,248,22,213,194,249,22,228,194,195,11,195,9,248,22,65,195,28,249,80,158, -36,51,196,11,250,80,159,37,8,53,35,196,248,22,252,236,1,248,22,217,199, -198,9,83,159,34,93,80,159,34,8,54,35,89,162,8,64,36,44,2,117,223, -0,28,28,248,80,158,35,47,194,27,248,80,158,36,43,195,28,248,22,47,248, -22,217,194,249,22,230,194,20,15,159,37,34,8,43,11,11,27,248,80,158,36, -42,195,27,89,162,8,36,35,38,9,223,4,248,22,65,248,194,195,28,28,248, -80,158,37,47,194,27,248,80,158,38,43,195,28,248,22,47,248,22,217,194,249, -22,230,194,20,15,159,39,34,8,43,11,11,27,248,80,158,38,42,195,27,89, -162,8,36,35,39,9,223,6,248,22,65,248,22,65,248,195,196,28,28,248,80, -158,39,47,194,27,248,80,158,40,43,195,28,248,22,47,248,22,217,194,249,22, -230,194,20,15,159,41,34,8,43,11,11,249,80,159,40,8,54,35,248,80,158, -41,42,196,89,162,8,36,35,40,9,223,8,248,22,65,248,22,65,248,22,65, -248,196,197,249,22,7,195,194,249,22,7,195,194,249,22,7,195,196,83,159,34, -93,80,159,34,8,52,35,89,162,8,100,36,8,35,2,117,223,0,28,248,22, -193,195,193,249,22,216,11,249,22,65,27,248,22,178,200,28,248,22,193,193,198, -249,22,216,11,249,22,65,27,248,22,178,198,28,248,22,193,193,203,249,22,216, -11,249,22,65,27,248,22,178,198,28,248,22,193,193,23,16,249,22,216,11,249, -22,65,27,248,22,178,198,28,248,22,193,193,23,21,249,22,216,11,249,22,65, -27,248,22,178,198,28,248,22,193,193,23,26,249,22,216,11,249,22,65,249,80, -159,8,31,8,52,35,23,32,248,22,178,199,20,15,159,8,29,35,8,43,20, -15,159,58,35,8,43,20,15,159,53,35,8,43,20,15,159,48,35,8,43,20, -15,159,43,35,8,43,20,15,159,38,35,8,43,83,159,34,93,80,159,34,8, -51,35,89,162,8,64,37,48,2,117,223,0,28,28,248,80,158,35,47,194,27, -248,80,158,36,43,195,28,248,22,47,248,22,217,194,249,22,230,194,20,15,159, -37,34,8,43,11,11,27,248,80,158,36,42,195,27,248,22,177,197,27,248,80, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,116,0,0,0,1,0,0,3,0,8,0,17,0, +22,0,31,0,44,0,58,0,75,0,104,0,114,0,120,0,128,0,136,0,159, +0,176,0,182,0,192,0,196,0,207,0,219,0,231,0,246,0,5,1,18,1, +35,1,48,1,63,1,74,1,85,1,103,1,128,1,146,1,155,1,168,1,191, +1,213,1,230,1,249,1,13,2,36,2,60,2,80,2,96,2,118,2,141,2, +145,2,160,2,162,2,170,2,175,2,185,2,194,2,198,2,208,2,218,2,227, +2,237,2,242,2,252,2,3,3,5,3,8,3,13,3,23,3,27,3,31,3, +33,3,37,3,43,3,100,3,110,3,121,3,125,3,133,3,143,3,147,3,155, +3,175,3,188,3,193,3,198,3,207,3,214,3,216,3,220,3,225,3,227,3, +229,3,234,3,241,3,250,3,0,4,19,4,72,4,82,4,87,4,248,4,18, +5,219,5,246,5,117,6,37,7,146,7,27,8,250,8,217,9,149,10,105,11, +214,11,67,12,165,12,91,13,200,13,23,14,96,14,0,0,212,54,0,0,29, +11,11,64,115,101,116,33,68,35,37,107,101,114,110,101,108,64,46,46,46,63, +68,115,116,120,45,109,101,109,113,72,115,116,120,45,109,101,109,113,45,112,111, +115,73,115,116,120,45,109,101,109,113,42,45,112,111,115,76,112,105,99,107,45, +115,112,101,99,105,102,105,99,105,116,121,1,27,109,97,107,101,45,109,97,116, +99,104,38,101,110,118,47,101,120,116,114,97,99,116,45,118,97,114,115,69,101, +108,108,105,112,115,105,115,63,65,35,37,115,116,120,67,115,116,120,45,99,100, +114,67,115,116,120,45,99,97,114,1,21,103,101,116,45,101,108,108,105,112,115, +105,115,45,110,101,115,116,105,110,103,115,76,102,108,97,116,116,101,110,45,110, +101,115,116,105,110,103,115,65,97,112,112,45,101,69,115,116,120,45,112,97,105, +114,63,63,97,112,112,70,97,112,112,45,97,112,112,101,110,100,71,105,100,101, +110,116,105,102,105,101,114,63,71,115,116,120,45,118,101,99,116,111,114,63,74, +109,97,107,101,45,109,97,116,99,104,38,101,110,118,74,103,101,116,45,109,97, +116,99,104,45,118,97,114,115,72,109,97,107,101,45,112,101,120,112,97,110,100, +76,101,108,108,105,112,115,105,115,45,115,117,98,45,101,110,118,72,101,120,116, +114,97,99,116,45,118,97,114,115,74,97,112,112,108,121,45,108,105,115,116,45, +114,101,102,70,97,112,112,108,121,45,116,111,45,114,70,97,112,112,108,121,45, +99,111,110,115,77,99,104,101,99,107,45,110,111,116,45,112,97,116,116,101,114, +110,1,23,109,117,108,116,105,112,108,101,45,101,108,108,105,112,115,105,115,45, +118,97,114,115,63,77,115,116,120,45,115,109,97,108,108,101,114,45,116,104,97, +110,63,68,115,116,120,45,115,105,122,101,72,110,111,45,101,108,108,105,112,115, +101,115,63,1,21,115,116,114,117,99,116,58,115,121,110,116,97,120,45,109,97, +112,112,105,110,103,1,20,45,109,97,107,101,45,115,121,110,116,97,120,45,109, +97,112,112,105,110,103,76,45,115,121,110,116,97,120,45,109,97,112,112,105,110, +103,63,78,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,114,101,102, +79,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,115,101,116,33,1, +21,45,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,100,101,112,116, +104,1,22,45,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,118,97, +108,118,97,114,79,109,97,107,101,45,115,121,110,116,97,120,45,109,97,112,112, +105,110,103,75,115,121,110,116,97,120,45,109,97,112,112,105,110,103,63,1,20, +115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,100,101,112,116,104,1, +21,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,118,97,108,118,97, +114,63,46,46,46,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,61, +112,67,112,114,111,116,111,45,114,64,100,101,115,116,3,1,7,101,110,118,50, +55,51,53,68,101,120,112,97,110,100,101,114,63,116,111,112,3,1,7,101,110, +118,50,55,52,49,3,1,7,101,110,118,50,55,52,50,68,101,108,45,99,111, +117,110,116,3,1,7,101,110,118,50,55,52,51,64,108,111,111,112,3,1,7, +101,110,118,50,56,52,49,66,108,97,109,98,100,97,61,101,62,105,102,64,108, +105,115,116,69,115,116,120,45,62,108,105,115,116,63,101,115,99,63,108,101,116, +61,108,63,109,97,112,65,113,117,111,116,101,6,54,54,109,105,115,112,108,97, +99,101,100,32,101,108,108,105,112,115,101,115,32,105,110,32,112,97,116,116,101, +114,110,32,40,102,111,108,108,111,119,115,32,111,116,104,101,114,32,101,108,108, +105,112,115,101,115,41,69,112,114,101,45,105,116,101,109,115,70,112,111,115,116, +45,105,116,101,109,115,63,111,107,63,67,99,111,110,115,47,35,102,69,97,112, +112,101,110,100,47,35,102,63,99,97,112,67,115,121,110,116,97,120,63,79,109, +111,100,117,108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,72,113,117, +111,116,101,45,115,121,110,116,97,120,64,110,117,108,108,64,119,114,97,112,68, +115,121,110,116,97,120,45,101,66,115,121,110,116,97,120,61,114,63,99,97,114, +64,99,97,100,114,61,97,61,98,64,118,97,108,115,66,97,112,112,101,110,100, +68,115,104,97,108,108,111,119,115,65,97,112,112,108,121,78,112,97,116,116,101, +114,110,45,115,117,98,115,116,105,116,117,116,101,6,50,50,109,105,115,115,105, +110,103,32,101,108,108,105,112,115,101,115,32,119,105,116,104,32,112,97,116,116, +101,114,110,32,118,97,114,105,97,98,108,101,32,105,110,32,116,101,109,112,108, +97,116,101,95,8,193,11,16,2,2,2,2,3,95,35,11,16,0,97,10,34, +11,94,159,2,47,9,11,159,2,11,9,11,16,72,2,16,2,1,2,22,2, +1,2,9,2,1,2,8,2,1,2,32,2,1,2,37,2,1,2,23,2,1, +2,10,2,1,2,19,2,1,2,38,2,1,2,24,2,1,2,39,2,1,2, +41,2,1,2,40,2,1,2,42,2,1,2,14,2,1,2,43,2,1,2,7, +2,1,2,45,2,1,2,4,2,1,2,25,2,1,2,26,2,1,2,31,2, +1,2,18,2,1,2,29,2,1,2,27,2,1,2,44,2,1,2,28,2,1, +2,34,2,1,2,35,2,1,2,6,2,1,2,15,2,1,2,30,2,1,2, +33,2,1,2,5,2,1,2,36,2,1,18,97,2,46,8,97,8,96,8,95, +16,4,11,11,61,115,3,1,7,101,110,118,50,54,53,53,18,103,2,46,8, +97,8,96,8,95,16,10,11,11,2,48,2,49,61,107,2,50,2,51,2,51, +2,51,2,51,16,6,11,11,2,52,2,53,3,1,7,101,110,118,50,55,51, +57,3,1,7,101,110,118,50,55,51,55,16,6,11,11,2,52,2,53,2,54, +2,54,16,14,11,11,2,48,2,49,69,108,111,99,97,108,45,116,111,112,73, +117,115,101,45,101,108,108,105,112,115,101,115,63,72,117,115,101,45,116,97,105, +108,45,112,111,115,65,104,97,115,104,33,2,55,2,55,2,55,2,55,2,55, +2,55,16,10,11,11,66,112,45,104,101,97,100,2,56,66,114,101,115,116,45, +112,67,108,97,115,116,45,101,108,2,57,2,57,2,57,2,57,16,4,11,11, +2,58,3,1,7,101,110,118,50,55,52,54,16,4,11,11,2,56,3,1,7, +101,110,118,50,55,52,55,18,97,2,2,8,97,8,96,8,95,16,6,11,11, +64,115,101,108,102,63,115,116,120,2,59,2,59,32,101,89,162,8,100,37,45, +2,58,222,28,248,22,63,195,11,28,28,248,22,149,3,248,22,58,196,249,22, +164,3,194,248,22,58,197,11,193,27,248,22,177,2,195,27,248,22,59,197,28, +248,22,63,193,11,28,28,248,22,149,3,248,22,58,194,249,22,164,3,196,248, +22,58,195,11,193,27,248,22,177,2,195,27,248,22,59,195,28,248,22,63,193, +11,28,28,248,22,149,3,248,22,58,194,249,22,164,3,198,248,22,58,195,11, +193,250,2,101,199,248,22,177,2,197,248,22,59,196,32,102,89,162,8,100,37, +53,2,58,222,28,248,22,63,195,11,28,249,22,164,3,194,27,248,22,58,198, +28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248, +22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, +192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, +149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, +28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248, +22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, +192,248,2,103,248,22,58,194,193,250,2,102,195,248,22,177,2,197,248,22,59, +198,32,103,89,162,8,64,35,44,2,58,222,28,248,22,149,3,193,192,27,248, +22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, +192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, +149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, +28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2, +103,248,22,58,194,32,104,89,162,8,100,38,44,2,58,222,28,248,22,149,3, +196,27,250,22,122,196,248,22,153,3,200,9,87,94,28,249,22,5,89,162,8, +36,35,38,9,223,6,249,22,164,3,195,194,194,251,22,175,8,248,22,153,3, +199,6,30,30,118,97,114,105,97,98,108,101,32,117,115,101,100,32,116,119,105, +99,101,32,105,110,32,112,97,116,116,101,114,110,199,200,12,250,22,121,196,248, +22,153,3,200,249,22,57,201,197,28,248,22,56,196,87,94,251,2,104,196,197, +198,248,22,58,200,251,2,104,196,197,198,248,22,59,200,12,32,105,89,162,8, +64,35,45,2,58,222,28,248,22,63,193,9,28,248,22,85,193,27,248,22,59, +194,28,248,22,63,193,9,28,248,22,85,193,27,248,22,59,194,28,248,22,63, +193,9,28,248,22,85,193,248,2,105,248,22,59,194,249,22,57,248,22,83,195, +248,2,105,248,22,59,196,249,22,57,248,22,83,195,27,248,22,59,196,28,248, +22,63,193,9,28,248,22,85,193,248,2,105,248,22,59,194,249,22,57,248,22, +83,195,248,2,105,248,22,59,196,249,22,57,248,22,83,195,27,248,22,59,196, +28,248,22,63,193,9,28,248,22,85,193,27,248,22,59,194,28,248,22,63,193, +9,28,248,22,85,193,248,2,105,248,22,59,194,249,22,57,248,22,83,195,248, +2,105,248,22,59,196,249,22,57,248,22,83,195,27,248,22,59,196,28,248,22, +63,193,9,28,248,22,85,193,248,2,105,248,22,59,194,249,22,57,248,22,83, +195,248,2,105,248,22,59,196,32,106,89,162,8,64,35,45,2,58,222,28,248, +22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,27,248,22,59,196, +28,248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,27,248,22, +59,196,28,248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,248, +2,106,248,22,59,196,248,2,106,248,22,59,194,27,248,22,59,194,28,248,22, +63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,248,2,106,248,22,59, +196,248,2,106,248,22,59,194,27,248,22,59,194,28,248,22,63,193,9,28,248, +22,85,193,249,22,57,248,22,83,195,27,248,22,59,196,28,248,22,63,193,9, +28,248,22,85,193,249,22,57,248,22,83,195,248,2,106,248,22,59,196,248,2, +106,248,22,59,194,27,248,22,59,194,28,248,22,63,193,9,28,248,22,85,193, +249,22,57,248,22,83,195,248,2,106,248,22,59,196,248,2,106,248,22,59,194, +32,107,89,162,8,64,36,55,2,81,222,28,248,22,129,3,194,192,27,250,22, +65,2,92,2,90,196,27,248,22,178,2,196,28,248,22,129,3,193,193,27,250, +22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27, +250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193, +27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193, +193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3, +193,193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129, +3,193,193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22, +129,3,193,193,249,2,107,250,22,65,2,92,2,90,198,248,22,178,2,195,32, +108,89,162,8,64,39,47,2,58,222,28,28,248,22,56,195,248,22,56,196,11, +27,248,22,58,196,27,248,22,58,198,28,28,248,22,56,194,248,22,56,193,11, +252,2,108,199,200,248,22,58,199,248,22,58,198,10,28,248,22,56,193,252,2, +108,199,200,198,248,22,58,198,11,28,248,22,149,3,194,28,248,22,149,3,193, +28,249,22,164,3,195,194,249,22,57,196,11,11,11,11,28,248,22,56,196,27, +248,22,58,197,28,28,248,22,56,196,248,22,56,193,11,252,2,108,198,199,248, +22,58,201,248,22,58,198,10,28,248,22,56,193,252,2,108,198,199,200,248,22, +58,198,11,28,248,22,149,3,196,28,248,22,149,3,193,28,249,22,164,3,197, +194,249,22,57,196,10,11,11,11,28,248,22,149,3,195,28,248,22,149,3,196, +28,249,22,164,3,196,197,249,22,57,28,198,194,195,248,22,145,8,199,11,11, +11,32,109,89,162,8,100,35,44,2,58,222,28,248,22,149,3,193,192,27,248, +22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, +192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, +149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, +28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2, +109,248,22,58,194,32,110,89,162,8,100,35,44,2,58,222,28,248,22,149,3, +193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248, +22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58, +194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27, +248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, +193,192,248,2,110,248,22,58,194,32,111,89,162,8,64,36,41,2,58,222,28, +248,22,149,3,194,28,249,22,164,3,195,194,250,22,175,8,2,83,2,94,195, +12,27,248,22,58,195,28,248,22,149,3,193,28,249,22,164,3,194,195,250,22, +175,8,2,83,2,94,196,12,27,248,22,58,194,28,248,22,149,3,193,28,249, +22,164,3,194,196,250,22,175,8,2,83,2,94,197,12,249,2,111,196,248,22, +58,195,32,112,89,162,8,64,36,52,2,58,222,28,248,22,63,194,9,28,248, +193,248,22,58,195,249,22,57,27,248,22,58,197,28,248,22,149,3,193,192,27, +248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, +193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248, +22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58, +194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27, +248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, +193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2,113,248,22,58,194, +249,2,112,196,248,22,59,198,249,2,112,194,248,22,59,196,32,113,89,162,8, +64,35,44,2,58,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, +149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, +28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248, +22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, +192,27,248,22,58,194,28,248,22,149,3,193,192,248,2,113,248,22,58,194,32, +114,89,162,8,64,35,40,2,58,222,28,248,22,63,193,11,28,248,22,56,248, +22,58,194,27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58, +194,10,27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58,194, +10,248,2,115,248,22,59,194,248,2,114,248,22,59,194,32,115,89,162,8,64, +35,39,2,58,222,28,248,22,63,193,11,28,248,22,56,248,22,58,194,10,27, +248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58,194,10,27,248, +22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58,194,10,248,2,115, +248,22,59,194,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16, +0,83,158,40,20,96,115,64,35,37,115,99,2,1,10,10,18,94,11,8,95, +42,80,158,34,34,20,99,159,42,16,43,30,2,1,2,4,193,30,2,1,2, +5,193,30,2,1,2,6,193,30,2,1,2,7,193,30,2,1,2,8,193,30, +2,1,2,9,193,30,2,1,2,10,193,30,2,11,69,115,116,120,45,110,117, +108,108,63,10,30,2,11,2,12,6,30,2,11,2,13,5,30,2,1,2,14, +193,30,2,1,2,15,193,30,2,1,2,16,193,30,2,11,2,17,11,30,2, +1,2,18,193,30,2,1,2,19,193,30,2,11,2,20,2,30,2,11,2,21, +15,30,71,35,37,113,113,45,97,110,100,45,111,114,69,113,113,45,97,112,112, +101,110,100,0,30,2,1,2,22,193,30,2,1,2,23,193,30,2,1,2,24, +193,30,2,1,2,25,193,30,2,1,2,26,193,30,2,1,2,27,193,30,2, +1,2,28,193,30,2,1,2,29,193,30,2,1,2,30,193,30,2,1,2,31, +193,30,2,1,2,32,193,30,2,1,2,33,193,30,2,1,2,34,193,30,2, +1,2,35,193,30,2,1,2,36,193,30,2,1,2,37,193,30,2,1,2,38, +193,30,2,1,2,39,193,30,2,1,2,40,193,30,2,1,2,41,193,30,2, +1,2,42,193,30,2,1,2,43,193,30,2,1,2,44,193,30,2,1,2,45, +193,16,3,33,98,33,99,33,100,11,11,16,27,2,36,2,40,2,41,2,37, +2,4,2,18,2,19,2,16,2,29,2,27,2,28,2,30,2,25,2,10,2, +26,2,15,2,14,2,9,2,31,2,8,2,35,2,5,2,7,2,33,2,32, +2,38,2,39,8,27,16,9,10,10,10,10,10,10,10,10,10,16,9,2,23, +2,22,2,24,2,42,2,34,2,6,2,44,2,45,2,43,16,9,11,11,11, +11,11,11,11,11,11,16,9,2,23,2,22,2,24,2,42,2,34,2,6,2, +44,2,45,2,43,43,43,9,132,83,158,34,16,2,89,162,8,64,37,47,63, +115,117,98,223,0,28,28,195,28,248,80,158,35,47,195,27,248,80,158,36,42, +196,28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,22,47,248, +22,153,3,194,249,22,166,3,194,20,15,159,38,34,8,43,11,248,22,145,8, +27,248,80,158,38,43,198,28,248,22,47,248,22,153,3,194,249,22,166,3,194, +20,15,159,39,34,8,43,11,11,11,11,11,91,159,36,11,90,161,36,34,11, +27,248,80,158,38,42,248,80,158,39,42,199,28,28,248,80,158,38,47,193,27, +248,80,158,39,43,194,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20, +15,159,40,34,8,43,11,11,27,248,80,158,39,42,194,27,32,0,89,162,8, +36,35,37,9,222,248,22,65,248,22,65,194,28,28,248,80,158,40,47,194,27, +248,80,158,41,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20, +15,159,42,34,8,43,11,11,249,80,159,41,8,54,35,248,80,158,42,42,196, +32,0,89,162,8,36,35,38,9,222,248,22,65,248,22,65,248,22,65,195,249, +22,7,195,194,249,22,7,194,22,65,27,250,80,159,40,8,53,35,199,248,80, +158,41,43,201,10,249,22,71,249,22,2,198,196,250,80,159,42,8,53,35,201, +198,10,28,248,80,158,35,47,195,27,248,80,158,36,43,196,28,28,196,28,248, +80,158,36,50,193,28,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20, +15,159,37,34,8,43,11,248,80,158,36,47,248,80,158,37,42,197,11,11,11, +250,80,159,38,8,53,35,197,248,80,158,39,43,248,80,158,40,42,200,11,249, +22,72,250,80,159,40,8,53,35,199,248,80,158,41,43,201,201,250,80,159,40, +8,53,35,199,248,80,158,41,42,201,201,28,248,80,158,35,50,195,28,249,22, +5,89,162,8,36,35,38,9,223,4,28,248,22,149,3,194,249,22,164,3,194, +195,11,195,9,248,22,65,195,28,249,80,158,36,51,196,11,250,80,159,37,8, +53,35,196,248,22,172,7,248,22,153,3,199,198,9,80,159,34,8,53,35,83, +158,34,16,2,89,162,8,64,36,44,2,58,223,0,28,28,248,80,158,35,47, +194,27,248,80,158,36,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3, +194,20,15,159,37,34,8,43,11,11,27,248,80,158,36,42,195,27,89,162,8, +36,35,38,9,223,4,248,22,65,248,194,195,28,28,248,80,158,37,47,194,27, +248,80,158,38,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20, +15,159,39,34,8,43,11,11,27,248,80,158,38,42,195,27,89,162,8,36,35, +39,9,223,6,248,22,65,248,22,65,248,195,196,28,28,248,80,158,39,47,194, +27,248,80,158,40,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194, +20,15,159,41,34,8,43,11,11,249,80,159,40,8,54,35,248,80,158,41,42, +196,89,162,8,36,35,40,9,223,8,248,22,65,248,22,65,248,22,65,248,196, +197,249,22,7,195,194,249,22,7,195,194,249,22,7,195,196,80,159,34,8,54, +35,83,158,34,16,2,89,162,8,100,36,8,35,2,58,223,0,28,248,22,129, +3,195,193,249,22,152,3,11,249,22,65,27,248,22,178,2,200,28,248,22,129, +3,193,198,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129, +3,193,203,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129, +3,193,23,16,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22, +129,3,193,23,21,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248, +22,129,3,193,23,26,249,22,152,3,11,249,22,65,249,80,159,8,31,8,52, +35,23,32,248,22,178,2,199,20,15,159,8,29,35,8,43,20,15,159,58,35, +8,43,20,15,159,53,35,8,43,20,15,159,48,35,8,43,20,15,159,43,35, +8,43,20,15,159,38,35,8,43,80,159,34,8,52,35,83,158,34,16,2,89, +162,8,64,37,48,2,58,223,0,28,28,248,80,158,35,47,194,27,248,80,158, +36,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,37, +34,8,43,11,11,27,248,80,158,36,42,195,27,248,22,177,2,197,27,248,80, 158,38,43,197,28,28,248,80,158,38,47,195,27,248,80,158,39,43,196,28,248, -22,47,248,22,217,194,249,22,230,194,20,15,159,40,34,8,43,11,11,27,248, -80,158,39,42,196,27,248,22,177,196,27,248,80,158,41,43,198,28,28,248,80, -158,41,47,195,27,248,80,158,42,43,196,28,248,22,47,248,22,217,194,249,22, -230,194,20,15,159,43,34,8,43,11,11,250,80,159,43,8,51,35,248,80,158, -44,42,198,248,22,177,197,248,80,158,44,43,198,250,22,7,196,197,195,250,22, -7,196,197,195,250,22,7,197,196,198,83,159,34,93,80,159,34,8,47,35,89, -162,34,43,8,45,63,109,38,101,126,223,0,28,28,199,28,248,80,158,35,47, -198,27,248,80,158,36,42,199,28,248,80,158,36,47,193,28,27,248,80,158,37, -43,194,28,248,22,47,248,22,217,194,249,22,230,194,20,15,159,38,34,8,43, -11,248,22,252,17,2,27,248,80,158,38,43,201,28,248,22,47,248,22,217,194, -249,22,230,194,20,15,159,39,34,8,43,11,11,11,11,11,28,248,80,158,35, -41,248,80,158,36,42,248,80,158,37,42,200,27,248,80,158,36,43,199,27,249, -80,159,38,44,35,195,199,91,159,37,11,90,161,37,34,11,26,9,80,159,48, -8,47,35,23,15,23,16,23,17,23,18,205,205,10,11,11,28,201,250,22,7, -249,22,2,22,65,200,11,11,27,249,80,159,42,45,35,198,32,127,89,162,8, -44,35,35,9,222,10,250,22,7,250,22,65,66,108,97,109,98,100,97,128,21, -93,61,101,129,251,22,67,62,105,102,130,21,94,69,115,116,120,45,108,105,115, -116,63,131,2,129,27,248,80,159,52,46,35,205,28,249,22,252,21,2,194,21, -94,64,108,105,115,116,132,2,129,28,23,25,21,94,69,115,116,120,45,62,108, -105,115,116,133,2,129,21,94,2,132,94,2,133,2,129,28,248,22,63,204,250, -22,67,66,97,110,100,109,97,112,134,250,22,65,2,128,21,93,2,129,198,21, -93,94,2,133,2,129,250,22,65,66,108,101,116,47,101,99,135,63,101,115,99, -136,250,22,65,63,108,101,116,137,248,22,65,249,22,65,61,108,138,250,22,67, -63,109,97,112,139,250,22,65,2,128,21,93,2,129,250,22,67,73,115,116,120, -45,99,104,101,99,107,47,101,115,99,140,23,18,21,93,2,136,21,93,94,2, -133,2,129,251,22,65,2,130,21,94,65,110,117,108,108,63,141,2,138,249,22, -65,65,113,117,111,116,101,142,27,249,22,2,32,143,89,97,8,44,35,35,9, -222,23,26,28,23,38,249,22,1,22,67,194,192,249,22,67,28,23,37,71,115, -116,120,45,114,111,116,97,116,101,42,144,70,115,116,120,45,114,111,116,97,116, -101,145,21,93,2,138,21,93,11,197,11,27,249,22,65,248,80,158,38,43,201, -248,80,158,38,43,248,80,158,39,42,202,27,248,80,158,37,42,248,80,158,38, -42,201,91,159,36,11,90,161,36,34,11,28,248,80,158,39,41,195,249,22,7, -34,10,28,248,80,158,39,47,195,87,94,28,27,248,80,158,40,43,196,28,248, -22,47,248,22,217,194,249,22,230,194,20,15,159,41,34,8,43,11,251,22,252, -47,2,248,22,217,202,6,54,54,109,105,115,112,108,97,99,101,100,32,101,108, -108,105,112,115,101,115,32,105,110,32,112,97,116,116,101,114,110,32,40,102,111, -108,108,111,119,115,32,111,116,104,101,114,32,101,108,108,105,112,115,101,115,41, -146,202,248,80,158,43,43,199,12,251,80,159,42,8,48,35,201,202,248,80,158, -43,42,199,35,249,22,7,35,11,91,159,43,11,90,161,37,34,11,28,23,17, -26,9,80,159,56,8,47,35,23,23,23,24,23,25,23,26,23,21,23,21,23, -29,11,11,250,22,7,11,11,11,90,161,37,37,11,26,9,80,159,56,8,47, -35,23,23,23,24,23,25,23,26,23,20,23,28,23,29,23,30,10,90,161,37, -40,11,28,23,17,250,22,7,195,196,11,26,9,80,159,56,8,47,35,23,23, -23,24,23,25,23,26,23,21,23,21,23,29,28,23,30,248,22,252,17,2,206, -11,11,28,23,17,250,22,7,249,22,71,203,200,11,11,250,22,7,250,22,65, -2,128,21,93,2,129,250,22,65,71,108,101,116,42,45,118,97,108,117,101,115, -147,248,22,65,249,22,65,21,95,69,112,114,101,45,105,116,101,109,115,148,70, -112,111,115,116,45,105,116,101,109,115,149,63,111,107,63,150,251,22,65,74,115, -112,108,105,116,45,115,116,120,45,108,105,115,116,151,2,129,23,25,23,26,251, -22,67,2,130,2,150,27,27,249,80,159,8,30,48,35,23,23,2,148,27,249, -80,159,8,31,48,35,23,21,2,149,28,23,23,28,28,248,22,56,194,28,249, -22,252,19,2,248,22,58,196,2,132,28,248,22,56,248,22,59,195,248,22,63, -248,22,86,195,11,11,11,250,22,65,67,99,111,110,115,47,35,102,152,248,22, -84,197,195,250,22,65,69,97,112,112,101,110,100,47,35,102,153,196,195,251,22, -67,2,130,197,196,21,93,11,28,23,19,28,23,36,250,22,65,2,137,21,93, -94,63,99,97,112,154,96,2,130,94,67,115,121,110,116,97,120,63,155,2,129, -2,129,2,154,195,250,22,65,2,137,21,93,94,2,154,2,129,195,192,21,93, -11,28,202,202,199,28,200,23,25,11,28,248,80,158,35,47,198,27,248,80,158, -36,43,199,28,28,200,28,248,22,47,248,22,217,194,249,22,230,194,20,15,159, -37,34,8,43,11,11,28,28,248,80,158,36,47,248,80,158,37,42,200,248,80, -158,36,41,248,80,158,37,42,248,80,158,38,42,201,11,27,248,80,158,37,43, -248,80,158,38,42,201,26,9,80,159,45,8,47,35,204,205,206,23,15,201,201, -11,23,19,11,251,22,252,47,2,248,22,217,199,6,29,29,109,105,115,112,108, -97,99,101,100,32,101,108,108,105,112,115,101,115,32,105,110,32,112,97,116,116, -101,114,110,156,199,196,91,159,43,11,90,161,37,34,11,28,206,26,9,80,159, -53,8,47,35,23,20,23,21,23,22,23,23,23,18,23,18,23,26,11,11,250, -22,7,11,11,11,90,161,37,37,11,26,9,80,159,53,8,47,35,23,20,23, -21,23,22,23,23,248,80,158,54,42,23,25,23,25,23,26,23,27,10,90,161, -37,40,11,28,206,250,22,7,195,196,11,26,9,80,159,53,8,47,35,23,20, -23,21,23,22,23,23,23,18,23,18,23,26,28,23,27,248,22,252,17,2,206, -11,11,28,206,250,22,7,249,22,71,203,200,11,11,250,22,7,250,22,65,2, -128,21,93,2,129,251,22,67,2,130,21,94,2,33,2,129,27,27,249,80,159, -58,48,35,23,20,21,94,2,25,2,129,27,249,80,159,59,48,35,23,18,21, -94,2,23,2,129,28,23,20,28,28,248,22,56,194,28,249,22,252,19,2,248, -22,58,196,2,132,28,248,22,56,248,22,59,195,248,22,63,248,22,86,195,11, -11,11,250,22,65,2,152,248,22,84,197,195,250,22,65,2,153,196,195,251,22, -67,2,130,197,196,21,93,11,28,23,16,28,23,30,250,22,65,2,137,21,93, -94,2,154,96,2,130,94,2,155,2,129,2,129,2,154,195,250,22,65,2,137, -21,93,94,2,154,2,129,195,192,21,93,11,28,202,202,199,28,200,23,22,11, -28,248,80,158,35,41,198,28,196,250,22,7,9,11,11,250,22,7,71,115,116, -120,45,110,117,108,108,47,35,102,157,11,11,28,248,80,158,35,50,198,28,249, -22,5,89,162,8,36,35,38,9,223,7,28,248,22,213,194,249,22,228,194,195, -11,197,28,196,250,22,7,9,11,11,250,22,7,250,22,65,2,128,21,93,2, -129,251,22,67,2,130,21,94,2,39,2,129,250,22,67,2,130,250,22,65,79, -109,111,100,117,108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,158,2, -129,249,22,65,72,113,117,111,116,101,45,115,121,110,116,97,120,159,23,23,21, -94,64,110,117,108,108,160,11,21,93,11,11,11,28,28,199,28,248,22,47,248, -22,217,199,249,22,230,199,20,15,159,36,34,8,43,11,11,251,22,252,47,2, -248,22,217,198,6,29,29,109,105,115,112,108,97,99,101,100,32,101,108,108,105, -112,115,101,115,32,105,110,32,112,97,116,116,101,114,110,161,198,201,28,196,250, -22,7,248,22,65,201,11,11,250,22,7,27,28,204,32,162,89,162,8,36,35, -38,64,119,114,97,112,163,222,250,22,65,2,128,21,93,2,129,195,32,164,89, -162,8,36,35,40,2,163,222,250,22,65,2,128,21,93,2,129,249,22,65,2, -132,197,28,205,248,193,21,96,1,20,100,97,116,117,109,45,62,115,121,110,116, -97,120,45,111,98,106,101,99,116,165,2,154,2,129,2,154,248,193,2,129,10, -204,28,249,80,158,36,51,199,11,27,248,22,252,236,1,248,22,217,200,28,28, -197,11,27,248,22,252,17,2,202,28,192,192,249,22,4,80,159,38,8,49,35, -195,27,248,22,252,233,1,248,22,217,201,26,10,80,159,46,8,50,35,202,23, -17,23,19,205,206,23,15,23,16,202,248,22,252,17,2,23,21,9,91,159,37, -11,90,161,37,34,11,26,9,80,159,47,8,47,35,206,23,15,23,16,23,17, -204,23,18,23,20,23,21,11,28,200,250,22,7,195,11,11,250,22,7,250,22, -65,2,128,21,93,2,129,251,22,67,2,130,21,95,2,41,2,129,11,249,80, -159,50,48,35,204,21,94,72,118,101,99,116,111,114,45,62,108,105,115,116,166, -94,68,115,121,110,116,97,120,45,101,167,2,129,21,93,11,196,11,28,196,250, -22,7,9,11,11,250,22,7,250,22,65,2,128,21,93,2,129,250,22,67,2, -130,27,250,22,67,66,101,113,117,97,108,63,168,248,22,217,23,19,21,93,94, -2,167,2,129,28,23,19,250,22,65,63,97,110,100,169,21,94,2,155,2,129, -195,192,21,94,2,160,11,11,11,83,159,34,93,80,159,34,8,50,35,89,162, -8,64,44,8,31,2,117,223,0,28,248,22,193,201,250,22,7,250,22,65,2, -128,21,93,2,129,251,22,67,2,130,250,22,65,2,41,2,129,206,23,20,21, -93,11,204,11,91,159,37,11,90,161,37,34,11,27,249,22,252,234,1,248,22, -217,201,248,22,178,23,15,26,9,80,159,47,8,47,35,23,17,23,18,23,19, -23,20,201,201,23,16,248,22,252,17,2,23,23,11,26,10,80,159,47,8,50, -35,206,23,15,23,16,23,17,23,18,23,19,23,20,248,22,178,23,22,28,23, -22,23,22,203,27,249,80,159,50,48,35,205,250,22,65,74,115,116,120,45,118, -101,99,116,111,114,45,114,101,102,170,2,129,248,22,178,23,28,28,248,22,63, -23,25,192,28,204,28,28,248,22,56,193,28,249,22,252,19,2,248,22,58,195, -2,132,28,248,22,56,248,22,59,194,248,22,63,248,22,86,194,11,11,11,250, -22,65,2,152,248,22,84,196,23,27,250,22,65,2,153,195,23,27,251,22,67, -2,130,196,23,28,21,93,11,83,159,34,93,80,159,34,8,49,35,89,162,8, -36,35,39,9,223,0,248,22,252,17,2,28,248,22,47,248,22,217,196,249,22, -230,196,20,15,159,37,34,8,43,11,83,159,34,93,80,159,34,8,48,35,89, -162,8,64,38,46,2,117,223,0,28,248,80,158,35,41,196,249,22,7,198,10, -28,248,80,158,35,47,196,87,94,28,27,248,80,158,36,43,197,28,248,22,47, -248,22,217,194,249,22,230,194,20,15,159,37,34,8,43,11,251,22,252,47,2, -248,22,217,198,2,146,198,248,80,158,39,43,200,12,27,248,80,158,36,42,197, -27,248,22,177,199,28,248,80,158,37,41,194,249,22,7,194,10,28,248,80,158, -37,47,194,87,94,28,27,248,80,158,38,43,195,28,248,22,47,248,22,217,194, -249,22,230,194,20,15,159,39,34,8,43,11,251,22,252,47,2,248,22,217,200, -2,146,200,248,80,158,41,43,198,12,251,80,159,40,8,48,35,199,200,248,80, -158,41,42,198,248,22,177,197,249,22,7,248,22,177,195,11,249,22,7,248,22, -177,199,11,83,159,34,93,80,159,34,34,35,89,162,34,35,38,2,6,223,0, -28,248,22,47,248,22,217,195,249,22,230,195,20,15,159,36,34,8,43,11,83, -159,34,93,80,159,34,35,35,32,171,89,162,34,36,38,2,8,222,249,22,5, -89,162,8,36,35,38,9,223,2,28,248,22,213,194,249,22,228,194,195,11,195, -83,159,34,93,80,159,34,36,35,32,172,89,162,34,36,42,2,10,222,28,248, -22,63,194,11,28,28,248,22,213,248,22,58,195,249,22,228,194,248,22,58,196, -11,34,27,248,22,59,195,28,248,22,63,193,11,28,28,248,22,213,248,22,58, -194,249,22,228,195,248,22,58,195,11,35,250,32,173,89,162,8,100,37,45,2, -117,222,28,248,22,63,195,11,28,28,248,22,213,248,22,58,196,249,22,228,194, -248,22,58,197,11,193,27,248,22,177,195,27,248,22,59,197,28,248,22,63,193, -11,28,28,248,22,213,248,22,58,194,249,22,228,196,248,22,58,195,11,193,27, -248,22,177,195,27,248,22,59,195,28,248,22,63,193,11,28,28,248,22,213,248, -22,58,194,249,22,228,198,248,22,58,195,11,193,250,2,173,199,248,22,177,197, -248,22,59,196,196,36,248,22,59,196,83,159,34,93,80,159,34,37,35,32,174, -89,162,34,36,40,2,12,222,250,32,175,89,162,8,100,37,53,2,117,222,28, -248,22,63,195,11,28,249,22,228,194,27,248,22,58,198,28,248,22,213,193,192, -27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193, -192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213, -193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22, -213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28,248, -22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28, -248,22,213,193,192,248,32,176,89,162,8,64,35,44,2,117,222,28,248,22,213, -193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22, -213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28,248, -22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28, -248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,248,2,176,248,22, -58,194,248,22,58,194,193,250,2,175,195,248,22,177,197,248,22,59,198,195,34, -196,83,159,34,93,80,159,34,38,35,32,177,89,162,34,36,38,2,14,222,28, -249,22,252,19,2,194,195,248,22,65,193,249,22,65,194,195,83,159,34,93,80, -159,34,39,35,89,162,8,36,40,54,2,16,223,0,91,159,37,11,90,161,37, -34,11,26,9,80,159,46,8,47,35,205,206,23,16,23,17,23,15,23,15,10, -10,11,28,200,27,247,22,116,87,94,251,32,178,89,162,8,100,38,44,2,117, -222,28,248,22,213,196,27,250,22,122,196,248,22,217,200,9,87,94,28,249,22, -5,89,162,8,36,35,38,9,223,6,249,22,228,195,194,194,251,22,252,47,2, -248,22,217,199,6,30,30,118,97,114,105,97,98,108,101,32,117,115,101,100,32, -116,119,105,99,101,32,105,110,32,112,97,116,116,101,114,110,179,199,200,12,250, -22,121,196,248,22,217,200,249,22,57,201,197,28,248,22,56,196,87,94,251,2, -178,196,197,198,248,22,58,200,251,2,178,196,197,198,248,22,59,200,12,196,201, -202,197,193,28,249,22,252,21,2,194,21,95,2,128,93,2,129,2,129,28,201, -21,95,2,128,94,2,129,2,158,2,129,21,95,2,128,93,2,129,2,129,250, -22,65,2,128,249,22,67,2,129,249,80,158,44,52,28,23,16,21,93,2,158, -9,9,248,80,159,41,46,35,196,83,159,34,93,80,159,34,53,35,89,162,34, -39,46,2,46,223,0,253,80,158,40,39,199,200,201,202,11,203,83,159,34,93, -80,159,34,54,35,89,162,34,38,45,2,48,223,0,253,80,158,40,39,199,200, -201,202,10,11,83,159,34,93,80,159,34,46,35,32,180,89,162,34,35,38,2, -31,222,28,28,248,22,56,193,28,249,22,252,19,2,248,22,58,195,2,128,249, -22,252,21,2,248,22,84,195,21,93,2,129,11,11,248,22,93,193,249,22,67, -194,21,93,2,129,83,159,34,93,80,159,34,48,35,32,181,89,162,34,36,40, -2,35,222,28,28,248,22,56,193,28,249,22,252,19,2,248,22,58,195,2,128, -249,22,252,21,2,248,22,84,195,21,93,2,129,11,11,27,248,22,93,194,28, -249,22,252,19,2,194,2,129,194,28,28,248,22,56,193,28,249,22,252,19,2, -248,22,58,195,2,132,28,248,22,56,248,22,59,194,28,249,22,252,19,2,248, -22,84,195,2,129,248,22,63,248,22,86,194,11,11,11,11,249,22,65,2,132, -196,249,22,65,195,196,249,22,65,194,195,83,159,34,93,80,159,34,49,35,32, -182,89,162,34,36,40,2,37,222,28,28,248,22,56,193,28,249,22,252,19,2, -248,22,58,195,2,132,28,248,22,56,248,22,59,194,248,22,63,248,22,86,194, -11,11,11,250,22,65,2,152,248,22,84,196,196,250,22,65,2,153,195,196,83, -159,34,93,80,159,34,55,35,89,162,34,38,56,2,50,223,0,91,159,36,10, -90,161,35,34,10,195,90,161,35,35,10,89,162,34,40,8,59,2,102,226,2, -5,3,1,28,28,199,28,248,80,158,38,47,197,27,248,80,158,39,42,198,28, -248,80,158,39,47,193,28,27,248,80,158,40,43,194,28,248,22,47,248,22,217, -194,249,22,230,194,20,15,159,41,34,8,43,11,248,22,252,17,2,27,248,80, -158,41,43,200,28,248,22,47,248,22,217,194,249,22,230,194,20,15,159,42,34, -8,43,11,11,11,11,11,91,159,40,11,90,161,35,34,11,248,80,158,44,43, -203,90,161,37,35,11,27,248,80,158,45,42,248,80,158,46,42,205,27,248,80, -158,46,43,248,80,158,47,42,206,28,28,248,80,158,46,47,194,27,248,80,158, -47,43,195,28,248,22,47,248,22,217,194,249,22,230,194,20,15,159,48,34,8, +22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,40,34,8,43,11,11, +27,248,80,158,39,42,196,27,248,22,177,2,196,27,248,80,158,41,43,198,28, +28,248,80,158,41,47,195,27,248,80,158,42,43,196,28,248,22,47,248,22,153, +3,194,249,22,166,3,194,20,15,159,43,34,8,43,11,11,250,80,159,43,8, +51,35,248,80,158,44,42,198,248,22,177,2,197,248,80,158,44,43,198,250,22, +7,196,197,195,250,22,7,196,197,195,250,22,7,197,196,198,80,159,34,8,51, +35,83,158,34,16,2,89,162,34,43,8,45,63,109,38,101,223,0,28,28,199, +28,248,80,158,35,47,198,27,248,80,158,36,42,199,28,248,80,158,36,47,193, +28,27,248,80,158,37,43,194,28,248,22,47,248,22,153,3,194,249,22,166,3, +194,20,15,159,38,34,8,43,11,248,22,145,8,27,248,80,158,38,43,201,28, +248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,39,34,8,43,11, +11,11,11,11,28,248,80,158,35,41,248,80,158,36,42,248,80,158,37,42,200, +27,248,80,158,36,43,199,27,249,80,159,38,44,35,195,199,91,159,37,11,90, +161,37,34,11,26,9,80,159,48,8,47,35,23,15,23,16,23,17,23,18,205, +205,10,11,11,28,201,250,22,7,249,22,2,22,65,200,11,11,27,249,80,159, +42,45,35,198,32,0,89,162,8,44,35,35,9,222,10,250,22,7,250,22,65, +2,60,21,93,2,61,251,22,67,2,62,21,94,69,115,116,120,45,108,105,115, +116,63,2,61,27,248,80,159,52,46,35,205,28,249,22,149,8,194,21,94,2, +63,2,61,28,23,25,21,94,2,64,2,61,21,94,2,63,94,2,64,2,61, +28,248,22,63,204,250,22,67,66,97,110,100,109,97,112,250,22,65,2,60,21, +93,2,61,198,21,93,94,2,64,2,61,250,22,65,66,108,101,116,47,101,99, +2,65,250,22,65,2,66,248,22,65,249,22,65,2,67,250,22,67,2,68,250, +22,65,2,60,21,93,2,61,250,22,67,73,115,116,120,45,99,104,101,99,107, +47,101,115,99,23,18,21,93,2,65,21,93,94,2,64,2,61,251,22,65,2, +62,21,94,65,110,117,108,108,63,2,67,249,22,65,2,69,27,249,22,2,32, +0,89,97,8,44,35,35,9,222,23,26,28,23,38,249,22,1,22,67,194,192, +249,22,67,28,23,37,71,115,116,120,45,114,111,116,97,116,101,42,70,115,116, +120,45,114,111,116,97,116,101,21,93,2,67,21,93,11,197,11,27,249,22,65, +248,80,158,38,43,201,248,80,158,38,43,248,80,158,39,42,202,27,248,80,158, +37,42,248,80,158,38,42,201,91,159,36,11,90,161,36,34,11,28,248,80,158, +39,41,195,249,22,7,34,10,28,248,80,158,39,47,195,87,94,28,27,248,80, +158,40,43,196,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159, +41,34,8,43,11,251,22,175,8,248,22,153,3,202,2,70,202,248,80,158,43, +43,199,12,251,80,159,42,8,48,35,201,202,248,80,158,43,42,199,35,249,22, +7,35,11,91,159,43,11,90,161,37,34,11,28,23,17,26,9,80,159,56,8, +47,35,23,23,23,24,23,25,23,26,23,21,23,21,23,29,11,11,250,22,7, +11,11,11,90,161,37,37,11,26,9,80,159,56,8,47,35,23,23,23,24,23, +25,23,26,23,20,23,28,23,29,23,30,10,90,161,37,40,11,28,23,17,250, +22,7,195,196,11,26,9,80,159,56,8,47,35,23,23,23,24,23,25,23,26, +23,21,23,21,23,29,28,23,30,248,22,145,8,206,11,11,28,23,17,250,22, +7,249,22,71,203,200,11,11,250,22,7,250,22,65,2,60,21,93,2,61,250, +22,65,71,108,101,116,42,45,118,97,108,117,101,115,248,22,65,249,22,65,21, +95,2,71,2,72,2,73,251,22,65,74,115,112,108,105,116,45,115,116,120,45, +108,105,115,116,2,61,23,25,23,26,251,22,67,2,62,2,73,27,27,249,80, +159,8,30,48,35,23,23,2,71,27,249,80,159,8,31,48,35,23,21,2,72, +28,23,23,28,28,248,22,56,194,28,249,22,147,8,248,22,58,196,2,63,28, +248,22,56,248,22,59,195,248,22,63,248,22,86,195,11,11,11,250,22,65,2, +74,248,22,84,197,195,250,22,65,2,75,196,195,251,22,67,2,62,197,196,21, +93,11,28,23,19,28,23,36,250,22,65,2,66,21,93,94,2,76,96,2,62, +94,2,77,2,61,2,61,2,76,195,250,22,65,2,66,21,93,94,2,76,2, +61,195,192,21,93,11,28,202,202,199,28,200,23,25,11,28,248,80,158,35,47, +198,27,248,80,158,36,43,199,28,28,200,28,248,22,47,248,22,153,3,194,249, +22,166,3,194,20,15,159,37,34,8,43,11,11,28,28,248,80,158,36,47,248, +80,158,37,42,200,248,80,158,36,41,248,80,158,37,42,248,80,158,38,42,201, +11,27,248,80,158,37,43,248,80,158,38,42,201,26,9,80,159,45,8,47,35, +204,205,206,23,15,201,201,11,23,19,11,251,22,175,8,248,22,153,3,199,6, +29,29,109,105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115,32, +105,110,32,112,97,116,116,101,114,110,199,196,91,159,43,11,90,161,37,34,11, +28,206,26,9,80,159,53,8,47,35,23,20,23,21,23,22,23,23,23,18,23, +18,23,26,11,11,250,22,7,11,11,11,90,161,37,37,11,26,9,80,159,53, +8,47,35,23,20,23,21,23,22,23,23,248,80,158,54,42,23,25,23,25,23, +26,23,27,10,90,161,37,40,11,28,206,250,22,7,195,196,11,26,9,80,159, +53,8,47,35,23,20,23,21,23,22,23,23,23,18,23,18,23,26,28,23,27, +248,22,145,8,206,11,11,28,206,250,22,7,249,22,71,203,200,11,11,250,22, +7,250,22,65,2,60,21,93,2,61,251,22,67,2,62,21,94,2,17,2,61, +27,27,249,80,159,58,48,35,23,20,21,94,2,13,2,61,27,249,80,159,59, +48,35,23,18,21,94,2,12,2,61,28,23,20,28,28,248,22,56,194,28,249, +22,147,8,248,22,58,196,2,63,28,248,22,56,248,22,59,195,248,22,63,248, +22,86,195,11,11,11,250,22,65,2,74,248,22,84,197,195,250,22,65,2,75, +196,195,251,22,67,2,62,197,196,21,93,11,28,23,16,28,23,30,250,22,65, +2,66,21,93,94,2,76,96,2,62,94,2,77,2,61,2,61,2,76,195,250, +22,65,2,66,21,93,94,2,76,2,61,195,192,21,93,11,28,202,202,199,28, +200,23,22,11,28,248,80,158,35,41,198,28,196,250,22,7,9,11,11,250,22, +7,71,115,116,120,45,110,117,108,108,47,35,102,11,11,28,248,80,158,35,50, +198,28,249,22,5,89,162,8,36,35,38,9,223,7,28,248,22,149,3,194,249, +22,164,3,194,195,11,197,28,196,250,22,7,9,11,11,250,22,7,250,22,65, +2,60,21,93,2,61,251,22,67,2,62,21,94,2,20,2,61,250,22,67,2, +62,250,22,65,2,78,2,61,249,22,65,2,79,23,23,21,94,2,80,11,21, +93,11,11,11,28,28,199,28,248,22,47,248,22,153,3,199,249,22,166,3,199, +20,15,159,36,34,8,43,11,11,251,22,175,8,248,22,153,3,198,6,29,29, +109,105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115,32,105,110, +32,112,97,116,116,101,114,110,198,201,28,196,250,22,7,248,22,65,201,11,11, +250,22,7,27,28,204,32,0,89,162,8,36,35,38,2,81,222,250,22,65,2, +60,21,93,2,61,195,32,0,89,162,8,36,35,40,2,81,222,250,22,65,2, +60,21,93,2,61,249,22,65,2,63,197,28,205,248,193,21,96,1,20,100,97, +116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,2,76,2, +61,2,76,248,193,2,61,10,204,28,249,80,158,36,51,199,11,27,248,22,172, +7,248,22,153,3,200,28,28,197,11,27,248,22,145,8,202,28,192,192,249,22, +4,80,159,38,8,49,35,195,27,248,22,169,7,248,22,153,3,201,26,10,80, +159,46,8,50,35,202,23,17,23,19,205,206,23,15,23,16,202,248,22,145,8, +23,21,9,91,159,37,11,90,161,37,34,11,26,9,80,159,47,8,47,35,206, +23,15,23,16,23,17,204,23,18,23,20,23,21,11,28,200,250,22,7,195,11, +11,250,22,7,250,22,65,2,60,21,93,2,61,251,22,67,2,62,21,95,2, +21,2,61,11,249,80,159,50,48,35,204,21,94,72,118,101,99,116,111,114,45, +62,108,105,115,116,94,2,82,2,61,21,93,11,196,11,28,196,250,22,7,9, +11,11,250,22,7,250,22,65,2,60,21,93,2,61,250,22,67,2,62,27,250, +22,67,66,101,113,117,97,108,63,248,22,153,3,23,19,21,93,94,2,82,2, +61,28,23,19,250,22,65,63,97,110,100,21,94,2,77,2,61,195,192,21,94, +2,80,11,11,11,80,159,34,8,47,35,83,158,34,16,2,89,162,8,64,44, +8,31,2,58,223,0,28,248,22,129,3,201,250,22,7,250,22,65,2,60,21, +93,2,61,251,22,67,2,62,250,22,65,2,21,2,61,206,23,20,21,93,11, +204,11,91,159,37,11,90,161,37,34,11,27,249,22,170,7,248,22,153,3,201, +248,22,178,2,23,15,26,9,80,159,47,8,47,35,23,17,23,18,23,19,23, +20,201,201,23,16,248,22,145,8,23,23,11,26,10,80,159,47,8,50,35,206, +23,15,23,16,23,17,23,18,23,19,23,20,248,22,178,2,23,22,28,23,22, +23,22,203,27,249,80,159,50,48,35,205,250,22,65,74,115,116,120,45,118,101, +99,116,111,114,45,114,101,102,2,61,248,22,178,2,23,28,28,248,22,63,23, +25,192,28,204,28,28,248,22,56,193,28,249,22,147,8,248,22,58,195,2,63, +28,248,22,56,248,22,59,194,248,22,63,248,22,86,194,11,11,11,250,22,65, +2,74,248,22,84,196,23,27,250,22,65,2,75,195,23,27,251,22,67,2,62, +196,23,28,21,93,11,80,159,34,8,50,35,83,158,34,16,2,89,162,8,36, +35,39,9,223,0,248,22,145,8,28,248,22,47,248,22,153,3,196,249,22,166, +3,196,20,15,159,37,34,8,43,11,80,159,34,8,49,35,83,158,34,16,2, +89,162,8,64,38,46,2,58,223,0,28,248,80,158,35,41,196,249,22,7,198, +10,28,248,80,158,35,47,196,87,94,28,27,248,80,158,36,43,197,28,248,22, +47,248,22,153,3,194,249,22,166,3,194,20,15,159,37,34,8,43,11,251,22, +175,8,248,22,153,3,198,2,70,198,248,80,158,39,43,200,12,27,248,80,158, +36,42,197,27,248,22,177,2,199,28,248,80,158,37,41,194,249,22,7,194,10, +28,248,80,158,37,47,194,87,94,28,27,248,80,158,38,43,195,28,248,22,47, +248,22,153,3,194,249,22,166,3,194,20,15,159,39,34,8,43,11,251,22,175, +8,248,22,153,3,200,2,70,200,248,80,158,41,43,198,12,251,80,159,40,8, +48,35,199,200,248,80,158,41,42,198,248,22,177,2,197,249,22,7,248,22,177, +2,195,11,249,22,7,248,22,177,2,199,11,80,159,34,8,48,35,83,158,34, +16,2,89,162,34,35,38,2,4,223,0,28,248,22,47,248,22,153,3,195,249, +22,166,3,195,20,15,159,36,34,8,43,11,80,159,34,34,35,83,158,34,16, +2,32,0,89,162,34,36,38,2,5,222,249,22,5,89,162,8,36,35,38,9, +223,2,28,248,22,149,3,194,249,22,164,3,194,195,11,195,80,159,34,35,35, +83,158,34,16,2,32,0,89,162,34,36,42,2,6,222,28,248,22,63,194,11, +28,28,248,22,149,3,248,22,58,195,249,22,164,3,194,248,22,58,196,11,34, +27,248,22,59,195,28,248,22,63,193,11,28,28,248,22,149,3,248,22,58,194, +249,22,164,3,195,248,22,58,195,11,35,250,2,101,196,36,248,22,59,196,80, +159,34,36,35,83,158,34,16,2,32,0,89,162,34,36,40,2,7,222,250,2, +102,195,34,196,80,159,34,37,35,83,158,34,16,2,32,0,89,162,34,36,38, +2,8,222,28,249,22,147,8,194,195,248,22,65,193,249,22,65,194,195,80,159, +34,38,35,83,158,34,16,2,89,162,8,36,40,54,2,9,223,0,91,159,37, +11,90,161,37,34,11,26,9,80,159,46,8,47,35,205,206,23,16,23,17,23, +15,23,15,10,10,11,28,200,27,247,22,116,87,94,251,2,104,196,201,202,197, +193,28,249,22,149,8,194,21,95,2,60,93,2,61,2,61,28,201,21,95,2, +60,94,2,61,2,78,2,61,21,95,2,60,93,2,61,2,61,250,22,65,2, +60,249,22,67,2,61,249,80,158,44,52,28,23,16,21,93,2,78,9,9,248, +80,159,41,46,35,196,80,159,34,39,35,83,158,34,16,2,89,162,34,39,46, +2,22,223,0,253,80,158,40,39,199,200,201,202,11,203,80,159,34,53,35,83, +158,34,16,2,89,162,34,38,45,2,23,223,0,253,80,158,40,39,199,200,201, +202,10,11,80,159,34,54,35,83,158,34,16,2,32,0,89,162,34,35,38,2, +16,222,28,28,248,22,56,193,28,249,22,147,8,248,22,58,195,2,60,249,22, +149,8,248,22,84,195,21,93,2,61,11,11,248,22,93,193,249,22,67,194,21, +93,2,61,80,159,34,46,35,83,158,34,16,2,32,0,89,162,34,36,40,2, +18,222,28,28,248,22,56,193,28,249,22,147,8,248,22,58,195,2,60,249,22, +149,8,248,22,84,195,21,93,2,61,11,11,27,248,22,93,194,28,249,22,147, +8,194,2,61,194,28,28,248,22,56,193,28,249,22,147,8,248,22,58,195,2, +63,28,248,22,56,248,22,59,194,28,249,22,147,8,248,22,84,195,2,61,248, +22,63,248,22,86,194,11,11,11,11,249,22,65,2,63,196,249,22,65,195,196, +249,22,65,194,195,80,159,34,48,35,83,158,34,16,2,32,0,89,162,34,36, +40,2,19,222,28,28,248,22,56,193,28,249,22,147,8,248,22,58,195,2,63, +28,248,22,56,248,22,59,194,248,22,63,248,22,86,194,11,11,11,250,22,65, +2,74,248,22,84,196,196,250,22,65,2,75,195,196,80,159,34,49,35,83,158, +34,16,2,89,162,34,38,56,2,24,223,0,91,159,36,10,90,161,35,34,10, +195,90,161,35,35,10,89,162,34,40,8,59,2,52,226,2,5,3,1,28,28, +199,28,248,80,158,38,47,197,27,248,80,158,39,42,198,28,248,80,158,39,47, +193,28,27,248,80,158,40,43,194,28,248,22,47,248,22,153,3,194,249,22,166, +3,194,20,15,159,41,34,8,43,11,248,22,145,8,27,248,80,158,41,43,200, +28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,42,34,8,43, +11,11,11,11,11,91,159,40,11,90,161,35,34,11,248,80,158,44,43,203,90, +161,37,35,11,27,248,80,158,45,42,248,80,158,46,42,205,27,248,80,158,46, +43,248,80,158,47,42,206,28,28,248,80,158,46,47,194,27,248,80,158,47,43, +195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,48,34,8, 43,11,11,27,248,80,158,47,42,195,27,248,80,158,48,43,196,28,28,248,80, -158,48,47,194,27,248,80,158,49,43,195,28,248,22,47,248,22,217,194,249,22, -230,194,20,15,159,50,34,8,43,11,11,27,248,80,158,49,42,195,27,248,80, -158,50,43,196,28,28,248,80,158,50,47,194,27,248,80,158,51,43,195,28,248, -22,47,248,22,217,194,249,22,230,194,20,15,159,52,34,8,43,11,11,27,248, -80,158,51,42,195,27,248,80,158,52,43,196,28,28,248,80,158,52,47,194,27, -248,80,158,53,43,195,28,248,22,47,248,22,217,194,249,22,230,194,20,15,159, -54,34,8,43,11,11,27,248,80,158,53,42,195,27,248,80,158,54,43,196,28, -28,248,80,158,54,47,194,27,248,80,158,55,43,195,28,248,22,47,248,22,217, -194,249,22,230,194,20,15,159,56,34,8,43,11,11,250,80,159,56,8,51,35, -248,80,158,57,42,197,39,248,80,158,57,43,197,250,22,7,38,196,195,250,22, -7,37,196,195,250,22,7,36,196,195,250,22,7,35,196,195,250,22,7,34,196, -195,90,161,35,38,11,28,248,22,193,194,192,249,22,216,11,249,22,65,27,248, -22,178,199,28,248,22,193,193,197,249,22,216,11,249,22,65,27,248,22,178,198, -28,248,22,193,193,202,249,22,216,11,249,22,65,27,248,22,178,198,28,248,22, -193,193,23,15,249,22,216,11,249,22,65,27,248,22,178,198,28,248,22,193,193, -23,20,249,22,216,11,249,22,65,27,248,22,178,198,28,248,22,193,193,23,25, -249,22,216,11,249,22,65,27,248,22,178,198,28,248,22,193,193,23,30,249,22, -216,11,249,22,65,27,248,22,178,198,28,248,22,193,193,23,35,249,22,216,11, -249,22,65,249,80,159,8,50,8,52,35,23,41,248,22,178,199,20,15,159,8, -48,35,8,43,20,15,159,8,43,35,8,43,20,15,159,8,38,35,8,43,20, -15,159,8,33,35,8,43,20,15,159,8,28,35,8,43,20,15,159,57,35,8, -43,20,15,159,52,35,8,43,20,15,159,47,35,8,43,90,161,35,39,11,28, -203,249,80,159,45,44,35,198,202,11,87,94,28,248,22,63,198,251,22,1,22, -252,47,2,66,115,121,110,116,97,120,183,6,48,48,110,111,32,112,97,116,116, -101,114,110,32,118,97,114,105,97,98,108,101,115,32,98,101,102,111,114,101,32, -101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112,108,97,116,101,184, -28,249,22,252,19,2,205,201,248,22,65,204,249,22,65,205,201,12,27,28,204, -249,22,2,89,162,34,35,43,9,226,12,10,15,14,251,80,158,41,56,200,196, -198,197,200,11,27,28,205,28,248,22,63,194,9,28,248,22,85,194,27,248,22, -59,195,28,248,22,63,193,9,28,248,22,85,193,248,32,185,89,162,8,64,35, -45,2,117,222,28,248,22,63,193,9,28,248,22,85,193,27,248,22,59,194,28, -248,22,63,193,9,28,248,22,85,193,27,248,22,59,194,28,248,22,63,193,9, -28,248,22,85,193,248,2,185,248,22,59,194,249,22,57,248,22,83,195,248,2, -185,248,22,59,196,249,22,57,248,22,83,195,27,248,22,59,196,28,248,22,63, -193,9,28,248,22,85,193,248,2,185,248,22,59,194,249,22,57,248,22,83,195, -248,2,185,248,22,59,196,249,22,57,248,22,83,195,27,248,22,59,196,28,248, -22,63,193,9,28,248,22,85,193,27,248,22,59,194,28,248,22,63,193,9,28, -248,22,85,193,248,2,185,248,22,59,194,249,22,57,248,22,83,195,248,2,185, -248,22,59,196,249,22,57,248,22,83,195,27,248,22,59,196,28,248,22,63,193, -9,28,248,22,85,193,248,2,185,248,22,59,194,249,22,57,248,22,83,195,248, -2,185,248,22,59,196,248,22,59,194,249,22,57,248,22,83,195,248,2,185,248, -22,59,196,249,22,57,248,22,83,196,27,248,22,59,197,28,248,22,63,193,9, -28,248,22,85,193,248,2,185,248,22,59,194,249,22,57,248,22,83,195,248,2, -185,248,22,59,196,11,27,28,206,28,248,22,63,195,9,28,248,22,85,195,249, -22,57,248,22,83,197,27,248,22,59,198,28,248,22,63,193,9,28,248,22,85, -193,249,22,57,248,22,83,195,248,32,186,89,162,8,64,35,45,2,117,222,28, -248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,27,248,22,59, -196,28,248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,27,248, -22,59,196,28,248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195, -248,2,186,248,22,59,196,248,2,186,248,22,59,194,27,248,22,59,194,28,248, -22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,248,2,186,248,22, -59,196,248,2,186,248,22,59,194,27,248,22,59,194,28,248,22,63,193,9,28, -248,22,85,193,249,22,57,248,22,83,195,27,248,22,59,196,28,248,22,63,193, -9,28,248,22,85,193,249,22,57,248,22,83,195,248,2,186,248,22,59,196,248, -2,186,248,22,59,194,27,248,22,59,194,28,248,22,63,193,9,28,248,22,85, -193,249,22,57,248,22,83,195,248,2,186,248,22,59,196,248,2,186,248,22,59, -194,248,22,59,196,248,2,186,248,22,59,194,27,248,22,59,196,28,248,22,63, -193,9,28,248,22,85,193,249,22,57,248,22,83,195,248,2,186,248,22,59,196, -248,2,186,248,22,59,194,11,27,28,23,15,248,80,159,48,57,35,195,11,27, -28,23,16,248,80,159,49,57,35,195,11,27,28,248,22,63,196,12,28,248,22, -63,197,251,22,1,22,252,47,2,2,183,6,29,29,116,111,111,32,109,97,110, +158,48,47,194,27,248,80,158,49,43,195,28,248,22,47,248,22,153,3,194,249, +22,166,3,194,20,15,159,50,34,8,43,11,11,27,248,80,158,49,42,195,27, +248,80,158,50,43,196,28,28,248,80,158,50,47,194,27,248,80,158,51,43,195, +28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,52,34,8,43, +11,11,27,248,80,158,51,42,195,27,248,80,158,52,43,196,28,28,248,80,158, +52,47,194,27,248,80,158,53,43,195,28,248,22,47,248,22,153,3,194,249,22, +166,3,194,20,15,159,54,34,8,43,11,11,27,248,80,158,53,42,195,27,248, +80,158,54,43,196,28,28,248,80,158,54,47,194,27,248,80,158,55,43,195,28, +248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,56,34,8,43,11, +11,250,80,159,56,8,51,35,248,80,158,57,42,197,39,248,80,158,57,43,197, +250,22,7,38,196,195,250,22,7,37,196,195,250,22,7,36,196,195,250,22,7, +35,196,195,250,22,7,34,196,195,90,161,35,38,11,28,248,22,129,3,194,192, +249,22,152,3,11,249,22,65,27,248,22,178,2,199,28,248,22,129,3,193,197, +249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3,193,202, +249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3,193,23, +15,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3,193, +23,20,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3, +193,23,25,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129, +3,193,23,30,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22, +129,3,193,23,35,249,22,152,3,11,249,22,65,249,80,159,8,50,8,52,35, +23,41,248,22,178,2,199,20,15,159,8,48,35,8,43,20,15,159,8,43,35, +8,43,20,15,159,8,38,35,8,43,20,15,159,8,33,35,8,43,20,15,159, +8,28,35,8,43,20,15,159,57,35,8,43,20,15,159,52,35,8,43,20,15, +159,47,35,8,43,90,161,35,39,11,28,203,249,80,159,45,44,35,198,202,11, +87,94,28,248,22,63,198,251,22,1,22,175,8,2,83,6,48,48,110,111,32, +112,97,116,116,101,114,110,32,118,97,114,105,97,98,108,101,115,32,98,101,102, +111,114,101,32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112,108, +97,116,101,28,249,22,147,8,205,201,248,22,65,204,249,22,65,205,201,12,27, +28,204,249,22,2,89,162,34,35,43,9,226,12,10,15,14,251,80,158,41,56, +200,196,198,197,200,11,27,28,205,28,248,22,63,194,9,28,248,22,85,194,27, +248,22,59,195,28,248,22,63,193,9,28,248,22,85,193,248,2,105,248,22,59, +194,249,22,57,248,22,83,195,248,2,105,248,22,59,196,249,22,57,248,22,83, +196,27,248,22,59,197,28,248,22,63,193,9,28,248,22,85,193,248,2,105,248, +22,59,194,249,22,57,248,22,83,195,248,2,105,248,22,59,196,11,27,28,206, +28,248,22,63,195,9,28,248,22,85,195,249,22,57,248,22,83,197,27,248,22, +59,198,28,248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,248, +2,106,248,22,59,196,248,2,106,248,22,59,194,27,248,22,59,196,28,248,22, +63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,248,2,106,248,22,59, +196,248,2,106,248,22,59,194,11,27,28,23,15,248,80,159,48,57,35,195,11, +27,28,23,16,248,80,159,49,57,35,195,11,27,28,248,22,63,196,12,28,248, +22,63,197,251,22,1,22,175,8,2,83,6,29,29,116,111,111,32,109,97,110, 121,32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112,108,97,116, -101,187,28,249,22,252,19,2,23,19,23,15,248,22,65,23,18,249,22,65,23, -19,23,15,12,27,253,24,19,23,15,23,24,23,25,10,23,27,23,28,27,253, -24,20,23,18,28,23,25,249,22,71,205,206,11,23,18,10,11,23,29,28,23, -19,250,22,65,2,128,21,93,61,114,188,27,27,27,249,22,2,89,162,8,36, -35,43,9,225,25,30,27,250,80,159,39,58,35,2,188,249,80,159,41,37,35, -200,197,196,204,28,28,249,22,188,35,248,22,70,195,28,249,22,188,34,23,17, -28,248,22,63,202,249,22,252,21,2,200,21,95,2,128,93,2,188,94,63,99, -97,114,189,2,188,11,11,11,248,22,58,193,28,28,249,22,188,36,248,22,70, -195,28,249,22,188,34,23,17,28,248,22,63,202,249,22,252,21,2,200,21,95, -2,128,93,2,188,95,2,132,94,2,189,2,188,94,64,99,97,100,114,190,2, -188,11,11,11,250,22,67,2,139,21,95,2,128,94,61,97,191,61,98,192,95, -2,132,2,191,2,192,249,80,158,8,28,52,197,9,27,250,22,67,2,139,250, -22,65,2,128,64,118,97,108,115,193,249,22,65,23,15,28,248,22,63,23,19, -2,193,21,95,66,97,112,112,101,110,100,194,68,115,104,97,108,108,111,119,115, -195,2,193,249,80,158,8,29,52,198,9,28,248,22,193,23,17,192,27,250,22, -65,65,97,112,112,108,121,196,2,194,196,27,248,22,178,23,19,28,248,22,193, -193,193,27,250,22,65,2,196,2,194,197,27,248,22,178,195,28,248,22,193,193, -193,27,250,22,65,2,196,2,194,197,27,248,22,178,195,28,248,22,193,193,193, -27,250,22,65,2,196,2,194,197,27,248,22,178,195,28,248,22,193,193,193,27, -250,22,65,2,196,2,194,197,27,248,22,178,195,28,248,22,193,193,193,27,250, -22,65,2,196,2,194,197,27,248,22,178,195,28,248,22,193,193,193,27,250,22, -65,2,196,2,194,197,27,248,22,178,195,28,248,22,193,193,193,27,250,22,65, -2,196,2,194,197,27,248,22,178,195,28,248,22,193,193,193,27,250,22,65,2, -196,2,194,197,27,248,22,178,195,28,248,22,193,193,193,27,250,22,65,2,196, -2,194,197,27,248,22,178,195,28,248,22,193,193,193,249,32,197,89,162,8,64, -36,55,2,163,222,28,248,22,193,194,192,27,250,22,65,2,196,2,194,196,27, -248,22,178,196,28,248,22,193,193,193,27,250,22,65,2,196,2,194,197,27,248, -22,178,195,28,248,22,193,193,193,27,250,22,65,2,196,2,194,197,27,248,22, -178,195,28,248,22,193,193,193,27,250,22,65,2,196,2,194,197,27,248,22,178, -195,28,248,22,193,193,193,27,250,22,65,2,196,2,194,197,27,248,22,178,195, -28,248,22,193,193,193,27,250,22,65,2,196,2,194,197,27,248,22,178,195,28, -248,22,193,193,193,27,250,22,65,2,196,2,194,197,27,248,22,178,195,28,248, -22,193,193,193,249,2,197,250,22,65,2,196,2,194,198,248,22,178,195,250,22, -65,2,196,2,194,198,248,22,178,195,28,248,22,63,201,192,250,22,65,2,137, -248,22,65,249,22,65,2,195,249,22,67,2,132,249,80,158,8,32,52,249,22, -2,89,162,8,36,35,43,9,225,34,39,36,250,80,159,39,58,35,2,188,249, -80,159,41,37,35,200,197,196,23,20,9,195,27,248,80,159,57,59,35,199,28, -249,22,252,19,2,194,2,160,193,250,22,65,2,194,196,195,12,28,248,80,158, -38,47,197,27,248,80,158,39,43,198,28,28,200,28,248,22,47,248,22,217,194, -249,22,230,194,20,15,159,40,34,8,43,11,11,28,28,248,80,158,39,47,248, -80,158,40,42,199,248,80,158,39,41,248,80,158,40,42,248,80,158,41,42,200, -11,27,248,80,158,40,43,248,80,158,41,42,200,253,215,198,205,198,11,23,16, -23,17,251,22,252,47,2,2,183,6,30,30,109,105,115,112,108,97,99,101,100, -32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112,108,97,116,101, -198,198,196,27,253,215,199,205,199,23,15,23,16,23,17,27,253,216,248,80,158, -47,42,206,206,23,15,23,16,23,17,23,18,28,200,250,22,65,2,128,21,93, -2,188,251,80,158,47,8,26,206,248,80,159,48,59,35,201,248,80,159,48,59, -35,200,206,12,28,249,80,158,39,51,198,11,27,253,214,248,22,252,236,1,248, -22,217,205,204,203,206,23,15,23,16,28,198,250,22,65,2,128,21,93,2,188, -249,22,65,72,108,105,115,116,45,62,118,101,99,116,111,114,199,249,22,65,2, -133,248,80,159,46,59,35,200,12,28,248,80,158,38,50,197,28,249,22,5,89, -162,8,36,35,38,9,223,6,28,248,22,213,194,249,22,228,194,195,11,196,28, -197,250,22,65,2,128,21,93,2,188,249,22,65,2,159,201,12,28,197,27,249, -22,5,89,162,8,36,35,38,9,223,7,28,248,22,213,194,249,22,228,194,195, -11,200,28,192,250,22,65,2,128,21,93,2,188,250,80,159,44,58,35,2,188, -249,80,159,46,36,35,205,206,23,15,87,95,28,200,28,28,248,22,47,248,22, -217,199,249,22,230,199,20,15,159,40,34,8,43,11,251,22,252,47,2,2,183, -6,30,30,109,105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115, -32,105,110,32,116,101,109,112,108,97,116,101,200,198,201,12,12,249,80,159,40, -8,27,35,199,200,250,22,65,2,128,21,93,2,188,249,22,65,2,159,202,28, -28,28,248,22,47,248,22,217,198,249,22,230,198,20,15,159,39,34,8,43,11, -199,11,12,248,202,197,28,248,22,63,197,28,197,21,95,2,128,93,2,188,2, -160,12,28,197,250,22,65,2,128,21,93,2,188,249,22,65,2,159,201,12,27, -28,197,11,247,22,116,27,253,216,203,204,203,10,28,204,248,22,178,248,22,70, -206,11,28,204,11,89,162,8,36,35,42,9,223,7,27,250,22,122,196,248,22, -217,198,9,28,28,248,22,56,193,249,22,5,89,162,8,36,35,38,9,223,4, -249,22,228,195,194,194,11,12,250,22,121,196,248,22,217,198,249,22,57,199,197, -28,198,250,22,65,2,128,21,93,2,188,27,27,248,80,159,44,59,35,198,28, -28,248,22,56,193,249,22,252,19,2,248,22,58,195,78,112,97,116,116,101,114, -110,45,115,117,98,115,116,105,116,117,116,101,201,11,192,27,28,206,251,22,216, -23,18,2,100,23,18,23,18,11,250,22,65,1,26,100,97,116,117,109,45,62, -115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112,101,202,249, -22,65,2,159,197,196,28,248,80,159,43,8,28,35,203,251,22,65,1,20,99, -97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111,114,203,250, -22,65,2,128,9,199,249,22,65,2,142,23,15,249,22,65,2,159,250,22,216, -11,2,93,23,18,192,249,22,1,22,71,249,22,124,197,32,204,89,162,8,36, -36,36,9,222,193,83,159,34,93,80,159,34,59,35,32,205,89,162,34,35,38, -2,58,222,28,28,248,22,56,193,28,249,22,252,19,2,248,22,58,195,2,128, -249,22,252,21,2,248,22,84,195,21,93,2,188,11,11,248,22,93,193,249,22, -67,194,21,93,2,188,83,159,34,93,80,159,34,8,26,35,89,162,34,38,50, -2,60,223,0,28,28,248,22,56,195,28,249,22,252,19,2,248,22,58,197,2, -159,28,249,22,252,19,2,248,22,84,197,248,80,158,37,43,199,27,249,22,252, -19,2,198,2,160,28,192,192,28,248,22,56,197,28,249,22,252,19,2,248,22, -58,199,2,159,249,22,252,19,2,248,22,84,199,248,80,158,38,42,200,11,11, -11,11,11,249,22,65,2,159,198,28,28,248,22,56,196,249,22,252,19,2,248, -22,58,198,2,201,11,28,28,248,22,56,195,28,249,22,252,19,2,248,22,58, -197,2,159,249,22,252,19,2,248,22,84,197,248,80,158,37,43,199,11,11,250, -22,67,2,201,249,22,65,2,159,27,249,22,57,248,22,84,203,248,22,101,204, -28,248,22,213,200,252,22,216,204,197,204,204,204,192,248,22,86,199,28,28,248, -22,56,195,249,22,252,19,2,2,201,248,22,58,197,11,250,22,67,2,201,249, -22,65,2,159,27,249,22,57,248,22,101,203,248,22,101,204,28,248,22,213,200, -252,22,216,204,197,204,204,204,192,249,80,158,39,52,248,22,86,200,248,22,86, -201,27,247,22,54,27,249,22,57,195,248,22,101,200,27,28,248,22,213,197,252, -22,216,201,198,201,201,201,193,252,22,67,2,201,249,22,65,2,159,199,199,202, -248,22,86,204,28,249,22,252,19,2,197,2,160,251,80,158,38,8,26,197,198, -21,94,2,201,94,2,159,9,200,28,28,248,22,56,196,28,249,22,252,19,2, -248,22,58,198,2,159,27,248,22,58,197,249,22,190,44,249,80,159,39,8,30, -35,196,45,11,11,251,80,158,38,8,26,197,198,249,22,65,2,201,201,200,251, -80,158,38,8,26,197,198,27,247,22,54,251,22,65,2,201,249,22,65,2,159, -198,196,204,200,83,159,34,93,80,159,34,8,29,35,89,162,34,36,47,2,66, -223,0,249,22,190,196,27,248,22,177,198,28,249,22,189,194,35,34,28,248,22, -213,197,249,80,159,39,8,30,35,248,22,217,199,194,28,248,22,56,197,27,249, -80,159,40,8,30,35,248,22,58,200,195,249,22,179,194,249,80,159,42,8,30, -35,248,22,59,202,249,22,180,199,198,28,248,22,252,229,1,197,249,80,159,39, -8,30,35,248,22,252,236,1,199,194,28,248,22,113,197,248,22,177,249,80,159, -40,8,30,35,248,22,114,200,248,22,178,196,35,83,159,34,93,80,159,34,8, -30,35,89,162,34,36,49,2,68,223,0,28,249,22,189,196,35,34,28,248,22, -213,194,27,248,22,217,195,28,249,22,189,197,35,34,28,248,22,213,193,249,80, -159,37,8,30,35,248,22,217,195,197,28,248,22,56,193,27,249,80,159,38,8, -30,35,248,22,58,196,198,249,22,179,194,249,80,159,40,8,30,35,248,22,59, -198,249,22,180,202,198,28,248,22,252,229,1,193,249,80,159,37,8,30,35,248, -22,252,236,1,195,197,28,248,22,113,193,248,22,177,249,80,159,38,8,30,35, -248,22,114,196,248,22,178,199,35,28,248,22,56,194,27,27,248,22,58,196,28, -249,22,189,198,35,34,28,248,22,213,193,249,80,159,38,8,30,35,248,22,217, -195,198,28,248,22,56,193,27,249,80,159,39,8,30,35,248,22,58,196,199,249, -22,179,194,249,80,159,41,8,30,35,248,22,59,198,249,22,180,203,198,28,248, -22,252,229,1,193,249,80,159,38,8,30,35,248,22,252,236,1,195,198,28,248, -22,113,193,248,22,177,249,80,159,39,8,30,35,248,22,114,196,248,22,178,200, -35,249,22,179,194,27,248,22,59,198,27,249,22,180,201,198,28,249,22,189,194, -35,34,28,248,22,213,194,249,80,159,41,8,30,35,248,22,217,196,194,28,248, -22,56,194,27,249,80,159,42,8,30,35,248,22,58,197,195,249,22,179,194,249, -80,159,44,8,30,35,248,22,59,199,249,22,180,199,198,28,248,22,252,229,1, -194,249,80,159,41,8,30,35,248,22,252,236,1,196,194,28,248,22,113,194,248, -22,177,249,80,159,42,8,30,35,248,22,114,197,248,22,178,196,35,28,248,22, -252,229,1,194,27,248,22,252,236,1,195,28,249,22,189,197,35,34,28,248,22, -213,193,249,80,159,37,8,30,35,248,22,217,195,197,28,248,22,56,193,27,249, -80,159,38,8,30,35,248,22,58,196,198,249,22,179,194,249,80,159,40,8,30, -35,248,22,59,198,249,22,180,202,198,28,248,22,252,229,1,193,249,80,159,37, -8,30,35,248,22,252,236,1,195,197,28,248,22,113,193,248,22,177,249,80,159, -38,8,30,35,248,22,114,196,248,22,178,199,35,28,248,22,113,194,248,22,177, -27,248,22,114,196,27,248,22,178,198,28,249,22,189,194,35,34,28,248,22,213, -194,249,80,159,39,8,30,35,248,22,217,196,194,28,248,22,56,194,27,249,80, -159,40,8,30,35,248,22,58,197,195,249,22,179,194,249,80,159,42,8,30,35, -248,22,59,199,249,22,180,199,198,28,248,22,252,229,1,194,249,80,159,39,8, -30,35,248,22,252,236,1,196,194,28,248,22,113,194,248,22,177,249,80,159,40, -8,30,35,248,22,114,197,248,22,178,196,35,35,83,159,34,93,80,159,34,58, -35,32,206,89,162,34,37,40,2,56,222,28,28,194,249,22,188,195,196,11,28, -249,22,252,19,2,195,34,192,28,249,22,252,19,2,195,35,249,22,65,63,99, -100,114,207,194,28,249,22,252,19,2,195,36,249,22,65,64,99,100,100,114,208, -194,28,249,22,252,19,2,195,37,249,22,65,65,99,100,100,100,114,209,194,28, -249,22,252,19,2,195,38,249,22,65,66,99,100,100,100,100,114,210,194,250,22, -65,69,108,105,115,116,45,116,97,105,108,211,195,196,28,249,22,252,19,2,195, -34,249,22,65,2,189,194,28,249,22,252,19,2,195,35,249,22,65,2,190,194, -28,249,22,252,19,2,195,36,249,22,65,65,99,97,100,100,114,212,194,28,249, -22,252,19,2,195,37,249,22,65,66,99,97,100,100,100,114,213,194,250,22,65, -68,108,105,115,116,45,114,101,102,214,195,196,83,159,34,93,80,159,34,44,35, -89,162,34,36,41,2,27,223,0,250,80,159,37,8,53,35,197,196,10,83,159, -34,93,80,159,34,56,35,89,162,8,36,38,54,2,52,223,0,27,249,22,5, -89,162,34,35,45,9,223,4,27,28,248,22,56,195,248,22,58,195,194,27,248, -22,56,196,28,28,248,22,56,194,248,22,56,195,11,252,32,215,89,162,8,64, -39,47,2,117,222,28,28,248,22,56,195,248,22,56,196,11,27,248,22,58,196, -27,248,22,58,198,28,28,248,22,56,194,248,22,56,193,11,252,2,215,199,200, -248,22,58,199,248,22,58,198,10,28,248,22,56,193,252,2,215,199,200,198,248, -22,58,198,11,28,248,22,213,194,28,248,22,213,193,28,249,22,228,195,194,249, -22,57,196,11,11,11,11,28,248,22,56,196,27,248,22,58,197,28,28,248,22, -56,196,248,22,56,193,11,252,2,215,198,199,248,22,58,201,248,22,58,198,10, -28,248,22,56,193,252,2,215,198,199,200,248,22,58,198,11,28,248,22,213,196, -28,248,22,213,193,28,249,22,228,197,194,249,22,57,196,10,11,11,11,28,248, -22,213,195,28,248,22,213,196,28,249,22,228,196,197,249,22,57,28,198,194,195, -248,22,252,17,2,199,11,11,11,198,200,248,22,58,199,248,22,58,200,10,28, -248,22,56,195,252,2,215,198,200,198,248,22,58,200,11,28,248,22,213,194,28, -248,22,213,195,28,249,22,228,195,196,249,22,57,28,194,195,197,248,22,252,17, -2,195,11,11,11,197,87,94,28,192,12,251,22,1,22,252,47,2,2,183,6, -49,49,116,111,111,32,102,101,119,32,101,108,108,105,112,115,101,115,32,102,111, -114,32,112,97,116,116,101,114,110,32,118,97,114,105,97,98,108,101,32,105,110, -32,116,101,109,112,108,97,116,101,216,27,28,248,22,213,200,199,27,248,22,58, -201,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22, -58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248, -22,58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,248, -32,217,89,162,8,100,35,44,2,117,222,28,248,22,213,193,192,27,248,22,58, -194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22, -58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248, -22,58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27, -248,22,58,194,28,248,22,213,193,192,248,2,217,248,22,58,194,248,22,58,194, -28,249,22,252,19,2,203,194,248,22,65,202,249,22,65,203,194,192,83,159,34, -93,80,159,34,57,35,32,218,89,162,34,35,37,2,54,222,249,22,2,32,219, -89,162,8,36,35,44,9,222,28,248,22,213,193,192,27,248,22,58,194,28,248, -22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28, -248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194, -28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,248,32,220,89, -162,8,100,35,44,2,117,222,28,248,22,213,193,192,27,248,22,58,194,28,248, -22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28, -248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194, -28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58, -194,28,248,22,213,193,192,248,2,220,248,22,58,194,248,22,58,194,194,83,159, -34,93,80,159,34,8,27,35,32,221,89,162,34,36,38,2,62,222,249,22,3, -89,162,34,35,42,9,223,2,28,248,22,56,194,27,248,22,58,195,28,248,22, -213,193,28,249,22,228,194,195,250,22,252,47,2,2,183,6,50,50,109,105,115, -115,105,110,103,32,101,108,108,105,112,115,101,115,32,119,105,116,104,32,112,97, -116,116,101,114,110,32,118,97,114,105,97,98,108,101,32,105,110,32,116,101,109, -112,108,97,116,101,222,196,12,27,248,22,58,194,28,248,22,213,193,28,249,22, -228,194,196,250,22,252,47,2,2,183,2,222,197,12,249,32,223,89,162,8,64, -36,41,2,117,222,28,248,22,213,194,28,249,22,228,195,194,250,22,252,47,2, -2,183,2,222,195,12,27,248,22,58,195,28,248,22,213,193,28,249,22,228,194, -195,250,22,252,47,2,2,183,2,222,196,12,27,248,22,58,194,28,248,22,213, -193,28,249,22,228,194,196,250,22,252,47,2,2,183,2,222,197,12,249,2,223, -196,248,22,58,195,196,248,22,58,195,12,195,83,159,34,93,80,159,34,40,35, -89,162,34,35,41,2,18,223,0,28,248,80,158,35,47,194,27,248,80,158,36, -42,195,28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,22,47, -248,22,217,194,249,22,230,194,20,15,159,38,34,8,43,11,248,22,252,17,2, -27,248,80,158,38,43,197,28,248,22,47,248,22,217,194,249,22,230,194,20,15, -159,39,34,8,43,11,11,11,11,83,159,34,93,80,159,34,45,35,32,224,89, -162,34,36,39,2,29,222,249,32,225,89,162,8,64,36,52,2,117,222,28,248, -22,63,194,9,28,248,193,248,22,58,195,249,22,57,27,248,22,58,197,28,248, -22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28, -248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194, -28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58, -194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22, -58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248, -22,58,194,28,248,22,213,193,192,248,32,226,89,162,8,64,35,44,2,117,222, -28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58, -194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22, -58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248, -22,58,194,28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,248, -2,226,248,22,58,194,248,22,58,194,249,2,225,196,248,22,59,198,249,2,225, -194,248,22,59,196,195,194,83,159,34,93,80,159,34,8,28,35,32,227,89,162, -34,35,37,2,64,222,248,32,228,89,162,8,64,35,40,2,117,222,28,248,22, -63,193,11,28,248,22,56,248,22,58,194,27,248,22,59,194,28,248,22,63,193, -11,28,248,22,56,248,22,58,194,10,27,248,22,59,194,28,248,22,63,193,11, -28,248,22,56,248,22,58,194,10,248,32,229,89,162,8,64,35,39,2,117,222, -28,248,22,63,193,11,28,248,22,56,248,22,58,194,10,27,248,22,59,194,28, -248,22,63,193,11,28,248,22,56,248,22,58,194,10,27,248,22,59,194,28,248, -22,63,193,11,28,248,22,56,248,22,58,194,10,248,2,229,248,22,59,194,248, -22,59,194,248,2,228,248,22,59,194,193,83,159,34,93,80,159,34,8,31,35, -89,162,34,35,41,2,70,223,0,28,248,80,158,35,47,194,28,27,248,80,158, -36,43,195,28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,80, -158,37,47,193,28,248,80,159,37,8,31,35,248,80,158,38,43,194,248,80,159, -37,8,31,35,248,80,158,38,42,194,11,28,248,80,158,37,50,193,248,22,252, -17,2,28,248,22,47,248,22,217,195,249,22,230,195,20,15,159,39,34,8,43, -11,10,27,248,80,158,37,42,194,28,248,80,158,37,47,193,28,248,80,159,37, -8,31,35,248,80,158,38,43,194,248,80,159,37,8,31,35,248,80,158,38,42, -194,11,28,248,80,158,37,50,193,248,22,252,17,2,28,248,22,47,248,22,217, -195,249,22,230,195,20,15,159,39,34,8,43,11,10,11,28,248,80,158,36,50, -193,248,22,252,17,2,28,248,22,47,248,22,217,195,249,22,230,195,20,15,159, -38,34,8,43,11,10,27,248,80,158,36,42,195,28,248,80,158,36,47,193,28, -27,248,80,158,37,43,194,28,248,80,158,37,47,193,28,248,80,159,37,8,31, +101,28,249,22,147,8,23,19,23,15,248,22,65,23,18,249,22,65,23,19,23, +15,12,27,253,24,19,23,15,23,24,23,25,10,23,27,23,28,27,253,24,20, +23,18,28,23,25,249,22,71,205,206,11,23,18,10,11,23,29,28,23,19,250, +22,65,2,60,21,93,2,84,27,27,27,249,22,2,89,162,8,36,35,43,9, +225,25,30,27,250,80,159,39,58,35,2,84,249,80,159,41,37,35,200,197,196, +204,28,28,249,22,188,2,35,248,22,70,195,28,249,22,188,2,34,23,17,28, +248,22,63,202,249,22,149,8,200,21,95,2,60,93,2,84,94,2,85,2,84, +11,11,11,248,22,58,193,28,28,249,22,188,2,36,248,22,70,195,28,249,22, +188,2,34,23,17,28,248,22,63,202,249,22,149,8,200,21,95,2,60,93,2, +84,95,2,63,94,2,85,2,84,94,2,86,2,84,11,11,11,250,22,67,2, +68,21,95,2,60,94,2,87,2,88,95,2,63,2,87,2,88,249,80,158,8, +28,52,197,9,27,250,22,67,2,68,250,22,65,2,60,2,89,249,22,65,23, +15,28,248,22,63,23,19,2,89,21,95,2,90,2,91,2,89,249,80,158,8, +29,52,198,9,28,248,22,129,3,23,17,192,27,250,22,65,2,92,2,90,196, +27,248,22,178,2,23,19,28,248,22,129,3,193,193,27,250,22,65,2,92,2, +90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250,22,65,2,92, +2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250,22,65,2, +92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250,22,65, +2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250,22, +65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250, +22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27, +250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193, +27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193, +193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3, +193,193,249,2,107,250,22,65,2,92,2,90,198,248,22,178,2,195,28,248,22, +63,201,192,250,22,65,2,66,248,22,65,249,22,65,2,91,249,22,67,2,63, +249,80,158,8,32,52,249,22,2,89,162,8,36,35,43,9,225,34,39,36,250, +80,159,39,58,35,2,84,249,80,159,41,37,35,200,197,196,23,20,9,195,27, +248,80,159,57,59,35,199,28,249,22,147,8,194,2,80,193,250,22,65,2,90, +196,195,12,28,248,80,158,38,47,197,27,248,80,158,39,43,198,28,28,200,28, +248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,40,34,8,43,11, +11,28,28,248,80,158,39,47,248,80,158,40,42,199,248,80,158,39,41,248,80, +158,40,42,248,80,158,41,42,200,11,27,248,80,158,40,43,248,80,158,41,42, +200,253,215,198,205,198,11,23,16,23,17,251,22,175,8,2,83,6,30,30,109, +105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115,32,105,110,32, +116,101,109,112,108,97,116,101,198,196,27,253,215,199,205,199,23,15,23,16,23, +17,27,253,216,248,80,158,47,42,206,206,23,15,23,16,23,17,23,18,28,200, +250,22,65,2,60,21,93,2,84,251,80,158,47,8,26,206,248,80,159,48,59, +35,201,248,80,159,48,59,35,200,206,12,28,249,80,158,39,51,198,11,27,253, +214,248,22,172,7,248,22,153,3,205,204,203,206,23,15,23,16,28,198,250,22, +65,2,60,21,93,2,84,249,22,65,72,108,105,115,116,45,62,118,101,99,116, +111,114,249,22,65,2,64,248,80,159,46,59,35,200,12,28,248,80,158,38,50, +197,28,249,22,5,89,162,8,36,35,38,9,223,6,28,248,22,149,3,194,249, +22,164,3,194,195,11,196,28,197,250,22,65,2,60,21,93,2,84,249,22,65, +2,79,201,12,28,197,27,249,22,5,89,162,8,36,35,38,9,223,7,28,248, +22,149,3,194,249,22,164,3,194,195,11,200,28,192,250,22,65,2,60,21,93, +2,84,250,80,159,44,58,35,2,84,249,80,159,46,36,35,205,206,23,15,87, +95,28,200,28,28,248,22,47,248,22,153,3,199,249,22,166,3,199,20,15,159, +40,34,8,43,11,251,22,175,8,2,83,6,30,30,109,105,115,112,108,97,99, +101,100,32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112,108,97, +116,101,198,201,12,12,249,80,159,40,8,27,35,199,200,250,22,65,2,60,21, +93,2,84,249,22,65,2,79,202,28,28,28,248,22,47,248,22,153,3,198,249, +22,166,3,198,20,15,159,39,34,8,43,11,199,11,12,248,202,197,28,248,22, +63,197,28,197,21,95,2,60,93,2,84,2,80,12,28,197,250,22,65,2,60, +21,93,2,84,249,22,65,2,79,201,12,27,28,197,11,247,22,116,27,253,216, +203,204,203,10,28,204,248,22,178,2,248,22,70,206,11,28,204,11,89,162,8, +36,35,42,9,223,7,27,250,22,122,196,248,22,153,3,198,9,28,28,248,22, +56,193,249,22,5,89,162,8,36,35,38,9,223,4,249,22,164,3,195,194,194, +11,12,250,22,121,196,248,22,153,3,198,249,22,57,199,197,28,198,250,22,65, +2,60,21,93,2,84,27,27,248,80,159,44,59,35,198,28,28,248,22,56,193, +249,22,147,8,248,22,58,195,2,93,11,192,27,28,206,251,22,152,3,23,18, +2,50,23,18,23,18,11,250,22,65,1,26,100,97,116,117,109,45,62,115,121, +110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112,101,249,22,65,2, +79,197,196,28,248,80,159,43,8,28,35,203,251,22,65,1,20,99,97,116,99, +104,45,101,108,108,105,112,115,105,115,45,101,114,114,111,114,250,22,65,2,60, +9,199,249,22,65,2,69,23,15,249,22,65,2,79,250,22,152,3,11,2,46, +23,18,192,249,22,1,22,71,249,22,124,197,32,0,89,162,8,36,36,36,9, +222,193,80,159,34,55,35,83,158,34,16,2,32,0,89,162,34,35,38,2,28, +222,28,28,248,22,56,193,28,249,22,147,8,248,22,58,195,2,60,249,22,149, +8,248,22,84,195,21,93,2,84,11,11,248,22,93,193,249,22,67,194,21,93, +2,84,80,159,34,59,35,83,158,34,16,2,89,162,34,38,50,2,29,223,0, +28,28,248,22,56,195,28,249,22,147,8,248,22,58,197,2,79,28,249,22,147, +8,248,22,84,197,248,80,158,37,43,199,27,249,22,147,8,198,2,80,28,192, +192,28,248,22,56,197,28,249,22,147,8,248,22,58,199,2,79,249,22,147,8, +248,22,84,199,248,80,158,38,42,200,11,11,11,11,11,249,22,65,2,79,198, +28,28,248,22,56,196,249,22,147,8,248,22,58,198,2,93,11,28,28,248,22, +56,195,28,249,22,147,8,248,22,58,197,2,79,249,22,147,8,248,22,84,197, +248,80,158,37,43,199,11,11,250,22,67,2,93,249,22,65,2,79,27,249,22, +57,248,22,84,203,248,22,101,204,28,248,22,149,3,200,252,22,152,3,204,197, +204,204,204,192,248,22,86,199,28,28,248,22,56,195,249,22,147,8,2,93,248, +22,58,197,11,250,22,67,2,93,249,22,65,2,79,27,249,22,57,248,22,101, +203,248,22,101,204,28,248,22,149,3,200,252,22,152,3,204,197,204,204,204,192, +249,80,158,39,52,248,22,86,200,248,22,86,201,27,247,22,54,27,249,22,57, +195,248,22,101,200,27,28,248,22,149,3,197,252,22,152,3,201,198,201,201,201, +193,252,22,67,2,93,249,22,65,2,79,199,199,202,248,22,86,204,28,249,22, +147,8,197,2,80,251,80,158,38,8,26,197,198,21,94,2,93,94,2,79,9, +200,28,28,248,22,56,196,28,249,22,147,8,248,22,58,198,2,79,27,248,22, +58,197,249,22,190,2,44,249,80,159,39,8,30,35,196,45,11,11,251,80,158, +38,8,26,197,198,249,22,65,2,93,201,200,251,80,158,38,8,26,197,198,27, +247,22,54,251,22,65,2,93,249,22,65,2,79,198,196,204,200,80,159,34,8, +26,35,83,158,34,16,2,89,162,34,36,47,2,32,223,0,249,22,190,2,196, +27,248,22,177,2,198,28,249,22,189,2,194,35,34,28,248,22,149,3,197,249, +80,159,39,8,30,35,248,22,153,3,199,194,28,248,22,56,197,27,249,80,159, +40,8,30,35,248,22,58,200,195,249,22,179,2,194,249,80,159,42,8,30,35, +248,22,59,202,249,22,180,2,199,198,28,248,22,165,7,197,249,80,159,39,8, +30,35,248,22,172,7,199,194,28,248,22,113,197,248,22,177,2,249,80,159,40, +8,30,35,248,22,114,200,248,22,178,2,196,35,80,159,34,8,29,35,83,158, +34,16,2,89,162,34,36,49,2,33,223,0,28,249,22,189,2,196,35,34,28, +248,22,149,3,194,27,248,22,153,3,195,28,249,22,189,2,197,35,34,28,248, +22,149,3,193,249,80,159,37,8,30,35,248,22,153,3,195,197,28,248,22,56, +193,27,249,80,159,38,8,30,35,248,22,58,196,198,249,22,179,2,194,249,80, +159,40,8,30,35,248,22,59,198,249,22,180,2,202,198,28,248,22,165,7,193, +249,80,159,37,8,30,35,248,22,172,7,195,197,28,248,22,113,193,248,22,177, +2,249,80,159,38,8,30,35,248,22,114,196,248,22,178,2,199,35,28,248,22, +56,194,27,27,248,22,58,196,28,249,22,189,2,198,35,34,28,248,22,149,3, +193,249,80,159,38,8,30,35,248,22,153,3,195,198,28,248,22,56,193,27,249, +80,159,39,8,30,35,248,22,58,196,199,249,22,179,2,194,249,80,159,41,8, +30,35,248,22,59,198,249,22,180,2,203,198,28,248,22,165,7,193,249,80,159, +38,8,30,35,248,22,172,7,195,198,28,248,22,113,193,248,22,177,2,249,80, +159,39,8,30,35,248,22,114,196,248,22,178,2,200,35,249,22,179,2,194,27, +248,22,59,198,27,249,22,180,2,201,198,28,249,22,189,2,194,35,34,28,248, +22,149,3,194,249,80,159,41,8,30,35,248,22,153,3,196,194,28,248,22,56, +194,27,249,80,159,42,8,30,35,248,22,58,197,195,249,22,179,2,194,249,80, +159,44,8,30,35,248,22,59,199,249,22,180,2,199,198,28,248,22,165,7,194, +249,80,159,41,8,30,35,248,22,172,7,196,194,28,248,22,113,194,248,22,177, +2,249,80,159,42,8,30,35,248,22,114,197,248,22,178,2,196,35,28,248,22, +165,7,194,27,248,22,172,7,195,28,249,22,189,2,197,35,34,28,248,22,149, +3,193,249,80,159,37,8,30,35,248,22,153,3,195,197,28,248,22,56,193,27, +249,80,159,38,8,30,35,248,22,58,196,198,249,22,179,2,194,249,80,159,40, +8,30,35,248,22,59,198,249,22,180,2,202,198,28,248,22,165,7,193,249,80, +159,37,8,30,35,248,22,172,7,195,197,28,248,22,113,193,248,22,177,2,249, +80,159,38,8,30,35,248,22,114,196,248,22,178,2,199,35,28,248,22,113,194, +248,22,177,2,27,248,22,114,196,27,248,22,178,2,198,28,249,22,189,2,194, +35,34,28,248,22,149,3,194,249,80,159,39,8,30,35,248,22,153,3,196,194, +28,248,22,56,194,27,249,80,159,40,8,30,35,248,22,58,197,195,249,22,179, +2,194,249,80,159,42,8,30,35,248,22,59,199,249,22,180,2,199,198,28,248, +22,165,7,194,249,80,159,39,8,30,35,248,22,172,7,196,194,28,248,22,113, +194,248,22,177,2,249,80,159,40,8,30,35,248,22,114,197,248,22,178,2,196, +35,35,80,159,34,8,30,35,83,158,34,16,2,32,0,89,162,34,37,40,2, +27,222,28,28,194,249,22,188,2,195,196,11,28,249,22,147,8,195,34,192,28, +249,22,147,8,195,35,249,22,65,63,99,100,114,194,28,249,22,147,8,195,36, +249,22,65,64,99,100,100,114,194,28,249,22,147,8,195,37,249,22,65,65,99, +100,100,100,114,194,28,249,22,147,8,195,38,249,22,65,66,99,100,100,100,100, +114,194,250,22,65,69,108,105,115,116,45,116,97,105,108,195,196,28,249,22,147, +8,195,34,249,22,65,2,85,194,28,249,22,147,8,195,35,249,22,65,2,86, +194,28,249,22,147,8,195,36,249,22,65,65,99,97,100,100,114,194,28,249,22, +147,8,195,37,249,22,65,66,99,97,100,100,100,114,194,250,22,65,68,108,105, +115,116,45,114,101,102,195,196,80,159,34,58,35,83,158,34,16,2,89,162,34, +36,41,2,14,223,0,250,80,159,37,8,53,35,197,196,10,80,159,34,44,35, +83,158,34,16,2,89,162,8,36,38,54,2,25,223,0,27,249,22,5,89,162, +34,35,45,9,223,4,27,28,248,22,56,195,248,22,58,195,194,27,248,22,56, +196,28,28,248,22,56,194,248,22,56,195,11,252,2,108,198,200,248,22,58,199, +248,22,58,200,10,28,248,22,56,195,252,2,108,198,200,198,248,22,58,200,11, +28,248,22,149,3,194,28,248,22,149,3,195,28,249,22,164,3,195,196,249,22, +57,28,194,195,197,248,22,145,8,195,11,11,11,197,87,94,28,192,12,251,22, +1,22,175,8,2,83,6,49,49,116,111,111,32,102,101,119,32,101,108,108,105, +112,115,101,115,32,102,111,114,32,112,97,116,116,101,114,110,32,118,97,114,105, +97,98,108,101,32,105,110,32,116,101,109,112,108,97,116,101,27,28,248,22,149, +3,200,199,27,248,22,58,201,28,248,22,149,3,193,192,27,248,22,58,194,28, +248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22, +58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192, +27,248,22,58,194,28,248,22,149,3,193,192,248,2,109,248,22,58,194,28,249, +22,147,8,203,194,248,22,65,202,249,22,65,203,194,192,80,159,34,56,35,83, +158,34,16,2,32,0,89,162,34,35,37,2,26,222,249,22,2,32,0,89,162, +8,36,35,44,9,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, +149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, +28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248, +22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, +192,248,2,110,248,22,58,194,194,80,159,34,57,35,83,158,34,16,2,32,0, +89,162,34,36,38,2,30,222,249,22,3,89,162,34,35,42,9,223,2,28,248, +22,56,194,27,248,22,58,195,28,248,22,149,3,193,28,249,22,164,3,194,195, +250,22,175,8,2,83,2,94,196,12,27,248,22,58,194,28,248,22,149,3,193, +28,249,22,164,3,194,196,250,22,175,8,2,83,2,94,197,12,249,2,111,196, +248,22,58,195,12,195,80,159,34,8,27,35,83,158,34,16,2,89,162,34,35, +41,2,10,223,0,28,248,80,158,35,47,194,27,248,80,158,36,42,195,28,248, +80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,22,47,248,22,153,3, +194,249,22,166,3,194,20,15,159,38,34,8,43,11,248,22,145,8,27,248,80, +158,38,43,197,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159, +39,34,8,43,11,11,11,11,80,159,34,40,35,83,158,34,16,2,32,0,89, +162,34,36,39,2,15,222,249,2,112,195,194,80,159,34,45,35,83,158,34,16, +2,32,0,89,162,34,35,37,2,31,222,248,2,114,193,80,159,34,8,28,35, +83,158,34,16,2,89,162,34,35,41,2,34,223,0,28,248,80,158,35,47,194, +28,27,248,80,158,36,43,195,28,248,80,158,36,47,193,28,27,248,80,158,37, +43,194,28,248,80,158,37,47,193,28,248,80,159,37,8,31,35,248,80,158,38, +43,194,248,80,159,37,8,31,35,248,80,158,38,42,194,11,28,248,80,158,37, +50,193,248,22,145,8,28,248,22,47,248,22,153,3,195,249,22,166,3,195,20, +15,159,39,34,8,43,11,10,27,248,80,158,37,42,194,28,248,80,158,37,47, +193,28,248,80,159,37,8,31,35,248,80,158,38,43,194,248,80,159,37,8,31, +35,248,80,158,38,42,194,11,28,248,80,158,37,50,193,248,22,145,8,28,248, +22,47,248,22,153,3,195,249,22,166,3,195,20,15,159,39,34,8,43,11,10, +11,28,248,80,158,36,50,193,248,22,145,8,28,248,22,47,248,22,153,3,195, +249,22,166,3,195,20,15,159,38,34,8,43,11,10,27,248,80,158,36,42,195, +28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,80,158,37,47, +193,28,248,80,159,37,8,31,35,248,80,158,38,43,194,248,80,159,37,8,31, +35,248,80,158,38,42,194,11,28,248,80,158,37,50,193,248,22,145,8,28,248, +22,47,248,22,153,3,195,249,22,166,3,195,20,15,159,39,34,8,43,11,10, +27,248,80,158,37,42,194,28,248,80,158,37,47,193,28,248,80,159,37,8,31, 35,248,80,158,38,43,194,248,80,159,37,8,31,35,248,80,158,38,42,194,11, -28,248,80,158,37,50,193,248,22,252,17,2,28,248,22,47,248,22,217,195,249, -22,230,195,20,15,159,39,34,8,43,11,10,27,248,80,158,37,42,194,28,248, -80,158,37,47,193,28,248,80,159,37,8,31,35,248,80,158,38,43,194,248,80, -159,37,8,31,35,248,80,158,38,42,194,11,28,248,80,158,37,50,193,248,22, -252,17,2,28,248,22,47,248,22,217,195,249,22,230,195,20,15,159,39,34,8, -43,11,10,11,28,248,80,158,36,50,193,248,22,252,17,2,28,248,22,47,248, -22,217,195,249,22,230,195,20,15,159,38,34,8,43,11,10,11,28,248,80,158, -35,50,194,248,22,252,17,2,28,248,22,47,248,22,217,196,249,22,230,196,20, -15,159,37,34,8,43,11,10,83,159,34,97,80,159,34,8,32,35,80,159,34, -8,33,35,80,159,34,8,34,35,80,159,34,8,35,35,80,159,34,8,36,35, -26,8,22,252,102,2,74,115,121,110,116,97,120,45,109,97,112,112,105,110,103, -230,11,36,34,11,9,247,22,252,125,2,89,162,34,36,44,9,223,8,28,248, -80,158,35,50,195,250,22,252,47,2,11,6,53,53,112,97,116,116,101,114,110, -32,118,97,114,105,97,98,108,101,32,99,97,110,110,111,116,32,98,101,32,117, -115,101,100,32,111,117,116,115,105,100,101,32,111,102,32,97,32,116,101,109,112, -108,97,116,101,231,197,251,22,252,47,2,11,6,53,53,112,97,116,116,101,114, -110,32,118,97,114,105,97,98,108,101,32,99,97,110,110,111,116,32,98,101,32, -117,115,101,100,32,111,117,116,115,105,100,101,32,111,102,32,97,32,116,101,109, -112,108,97,116,101,232,198,28,249,22,232,20,15,159,40,36,8,43,248,80,158, -41,43,201,248,80,158,39,43,248,80,158,40,42,200,248,80,158,39,43,199,83, -159,34,93,80,159,34,8,37,35,249,22,252,104,2,80,158,36,8,35,34,83, -159,34,93,80,159,34,8,38,35,249,22,252,104,2,80,158,36,8,35,35,83, -159,34,93,80,159,34,8,39,35,89,162,34,36,40,2,86,223,0,248,22,252, -111,3,249,80,158,37,8,33,196,197,83,159,34,93,80,159,34,8,40,35,89, -162,34,35,38,2,88,223,0,28,248,22,252,112,3,194,248,80,158,35,8,34, -248,22,252,113,3,195,11,83,159,34,93,80,159,34,8,41,35,89,162,34,35, -38,2,90,223,0,248,80,158,35,8,37,248,22,252,113,3,195,83,159,34,93, -80,159,34,8,42,35,89,162,34,35,38,2,92,223,0,248,80,158,35,8,38, -248,22,252,113,3,195,95,2,4,2,20,2,94,9,2,4,0}; - EVAL_ONE_SIZED_STR((char *)expr, 13750); +28,248,80,158,37,50,193,248,22,145,8,28,248,22,47,248,22,153,3,195,249, +22,166,3,195,20,15,159,39,34,8,43,11,10,11,28,248,80,158,36,50,193, +248,22,145,8,28,248,22,47,248,22,153,3,195,249,22,166,3,195,20,15,159, +38,34,8,43,11,10,11,28,248,80,158,35,50,194,248,22,145,8,28,248,22, +47,248,22,153,3,196,249,22,166,3,196,20,15,159,37,34,8,43,11,10,80, +159,34,8,31,35,83,158,34,16,6,26,8,22,166,9,74,115,121,110,116,97, +120,45,109,97,112,112,105,110,103,11,36,34,11,9,247,22,189,9,89,162,34, +36,44,9,223,8,28,248,80,158,35,50,195,250,22,175,8,11,6,53,53,112, +97,116,116,101,114,110,32,118,97,114,105,97,98,108,101,32,99,97,110,110,111, +116,32,98,101,32,117,115,101,100,32,111,117,116,115,105,100,101,32,111,102,32, +97,32,116,101,109,112,108,97,116,101,197,251,22,175,8,11,6,53,53,112,97, +116,116,101,114,110,32,118,97,114,105,97,98,108,101,32,99,97,110,110,111,116, +32,98,101,32,117,115,101,100,32,111,117,116,115,105,100,101,32,111,102,32,97, +32,116,101,109,112,108,97,116,101,198,28,249,22,168,3,20,15,159,40,36,8, +43,248,80,158,41,43,201,248,80,158,39,43,248,80,158,40,42,200,248,80,158, +39,43,199,80,159,34,8,32,35,80,159,34,8,33,35,80,159,34,8,34,35, +80,159,34,8,35,35,80,159,34,8,36,35,83,158,34,16,2,249,22,168,9, +80,158,36,8,35,34,80,159,34,8,37,35,83,158,34,16,2,249,22,168,9, +80,158,36,8,35,35,80,159,34,8,38,35,83,158,34,16,2,89,162,34,36, +40,2,42,223,0,248,22,175,13,249,80,158,37,8,33,196,197,80,159,34,8, +39,35,83,158,34,16,2,89,162,34,35,38,2,43,223,0,28,248,22,176,13, +194,248,80,158,35,8,34,248,22,177,13,195,11,80,159,34,8,40,35,83,158, +34,16,2,89,162,34,35,38,2,44,223,0,248,80,158,35,8,37,248,22,177, +13,195,80,159,34,8,41,35,83,158,34,16,2,89,162,34,35,38,2,45,223, +0,248,80,158,35,8,38,248,22,177,13,195,80,159,34,8,42,35,95,2,3, +2,11,2,47,9,2,3,0}; + EVAL_ONE_SIZED_STR((char *)expr, 14287); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,179,252,206,24,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,69,35,37,115,116, -120,99,97,115,101,1,29,2,11,11,10,10,10,34,80,158,34,34,20,99,159, -34,16,5,30,3,2,2,1,26,100,97,116,117,109,45,62,115,121,110,116,97, -120,45,111,98,106,101,99,116,47,115,104,97,112,101,4,254,1,30,5,2,2, -1,20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111, -114,6,254,1,30,7,68,35,37,112,97,114,97,109,122,8,1,21,101,120,99, -101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,9,2,30, -10,2,2,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,11,254, -1,30,12,2,2,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45, -115,117,98,115,116,105,116,117,116,101,13,254,1,16,0,11,11,16,4,2,13, -2,6,2,4,2,11,38,11,16,2,73,115,121,110,116,97,120,45,99,97,115, -101,42,42,14,66,115,121,110,116,97,120,15,16,2,11,11,16,2,2,14,2, -15,34,36,95,16,5,93,78,112,97,116,116,101,114,110,45,115,117,98,115,116, -105,116,117,116,101,16,87,94,83,159,34,93,80,159,34,41,35,89,162,8,100, -37,45,64,108,111,111,112,17,223,0,28,248,22,63,196,12,87,94,27,248,22, -217,248,22,58,198,27,248,22,84,198,28,28,248,80,158,37,37,193,10,28,248, -80,158,37,38,193,28,249,22,77,248,22,217,248,80,158,40,34,196,21,102,63, -99,97,114,18,64,99,97,100,114,19,65,99,97,100,100,114,20,66,99,97,100, -100,100,114,21,63,99,100,114,22,64,99,100,100,114,23,65,99,100,100,100,114, -24,66,99,100,100,100,100,114,25,68,108,105,115,116,45,114,101,102,26,69,108, -105,115,116,45,116,97,105,108,27,28,248,80,158,37,38,248,80,158,38,35,194, -248,80,158,37,37,248,80,158,38,34,248,80,158,39,35,195,11,11,11,27,248, -22,215,194,27,250,22,122,200,196,11,28,192,250,22,121,201,198,195,250,22,121, -200,196,198,12,250,80,159,37,41,35,196,197,248,22,86,199,89,162,8,36,35, -56,9,223,0,27,248,80,158,36,34,248,80,158,37,35,196,27,248,80,158,37, -36,248,80,158,38,35,248,80,158,39,35,198,27,248,22,116,65,101,113,117,97, -108,28,27,247,22,116,87,94,250,80,159,41,41,35,196,195,197,27,28,248,22, -193,248,22,119,195,196,91,159,35,11,20,12,95,35,248,193,198,89,162,8,64, -35,42,2,17,224,2,0,28,248,22,56,195,27,248,194,248,22,58,197,27,248, -195,248,22,59,198,28,28,249,22,252,19,2,195,248,22,58,199,249,22,252,19, -2,194,248,22,59,199,11,196,249,22,57,195,194,28,248,22,47,195,27,250,22, -122,197,198,11,28,192,192,195,28,248,22,213,195,27,248,194,248,22,217,197,28, -249,22,252,19,2,248,22,217,198,194,195,251,22,216,199,196,199,199,28,248,22, -252,229,1,195,248,22,252,237,1,249,22,2,195,248,22,252,236,1,198,28,248, -22,113,195,248,22,111,248,194,248,22,114,197,194,250,22,216,20,15,159,42,34, -39,251,22,67,2,13,199,249,22,65,65,113,117,111,116,101,29,28,248,22,63, -205,9,28,250,22,122,205,248,22,217,248,22,58,23,17,11,249,32,30,89,162, -8,64,36,44,2,17,222,28,248,22,63,194,9,28,250,22,122,195,248,22,217, -248,22,58,198,11,27,248,22,86,195,28,248,22,63,193,9,28,250,22,122,196, -248,22,217,248,22,58,197,11,249,2,30,195,248,22,86,195,249,22,57,248,22, -58,195,249,2,30,197,248,22,86,197,249,22,57,248,22,58,196,27,248,22,86, -197,28,248,22,63,193,9,28,250,22,122,198,248,22,217,248,22,58,197,11,249, -2,30,197,248,22,86,195,249,22,57,248,22,58,195,249,2,30,199,248,22,86, -197,204,248,22,86,23,15,249,22,57,248,22,58,23,15,249,2,30,206,248,22, -86,23,17,28,248,22,63,203,9,28,250,22,122,203,248,22,217,248,22,58,23, -15,11,249,32,31,89,162,8,64,36,44,2,17,222,28,248,22,63,194,9,28, -250,22,122,195,248,22,217,248,22,58,198,11,27,248,22,86,195,28,248,22,63, -193,9,28,250,22,122,196,248,22,217,248,22,58,197,11,249,2,31,195,248,22, -86,195,249,22,57,248,22,84,195,249,2,31,197,248,22,86,197,249,22,57,248, -22,84,196,27,248,22,86,197,28,248,22,63,193,9,28,250,22,122,198,248,22, -217,248,22,58,197,11,249,2,31,197,248,22,86,195,249,22,57,248,22,84,195, -249,2,31,199,248,22,86,197,202,248,22,86,205,249,22,57,248,22,84,205,249, -2,31,204,248,22,86,23,15,201,34,20,99,159,35,16,5,30,32,65,35,37, -115,116,120,33,67,115,116,120,45,99,97,114,34,5,30,35,2,33,67,115,116, -120,45,99,100,114,36,6,30,37,2,33,69,115,116,120,45,62,108,105,115,116, -38,4,30,39,2,33,71,105,100,101,110,116,105,102,105,101,114,63,40,2,30, -41,2,33,69,115,116,120,45,112,97,105,114,63,42,11,16,1,18,101,64,104, -101,114,101,43,43,98,41,10,34,11,95,159,2,8,9,11,159,74,35,37,115, -109,97,108,108,45,115,99,104,101,109,101,44,9,11,159,2,33,9,11,16,14, -2,14,2,2,2,4,2,2,2,15,2,2,2,13,2,2,2,16,2,2,2, -11,2,2,2,6,2,2,98,40,10,35,11,95,159,64,35,37,115,99,45,9, -11,159,2,44,9,11,159,2,33,9,11,16,0,96,39,8,254,1,11,16,0, -16,4,38,11,63,115,116,120,46,3,1,7,101,110,118,50,56,53,51,47,16, -6,37,11,63,112,97,116,48,64,115,117,98,115,49,3,1,7,101,110,118,50, -56,53,52,50,2,50,16,6,36,11,69,104,116,45,99,111,109,109,111,110,51, -66,104,116,45,109,97,112,52,3,1,7,101,110,118,50,56,53,53,53,2,53, -16,4,35,11,71,110,101,119,45,112,97,116,116,101,114,110,54,3,1,7,101, -110,118,50,56,54,51,55,11,16,5,93,2,14,87,97,83,159,34,93,80,159, -34,8,41,35,89,162,8,36,44,8,41,2,17,223,0,28,248,22,63,200,251, -22,65,20,15,159,38,41,43,11,6,10,10,98,97,100,32,115,121,110,116,97, -120,56,197,27,26,10,80,159,45,8,41,35,204,205,206,23,15,23,16,23,17, -248,22,59,23,19,248,22,59,23,20,248,22,59,23,21,248,22,59,23,22,27, -248,22,58,202,27,248,22,58,204,27,248,22,58,206,27,248,22,58,23,16,91, -159,37,10,90,161,35,34,10,249,22,2,32,57,89,162,8,36,35,40,9,222, -28,248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58, -194,28,248,22,213,193,192,248,32,58,89,162,8,100,35,40,2,17,222,28,248, -22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,27,248,22,58,194,28, -248,22,213,193,192,27,248,22,58,194,28,248,22,213,193,192,248,2,58,248,22, -58,194,248,22,58,194,198,90,161,35,35,10,249,22,2,32,59,89,162,8,36, -35,38,9,222,250,22,216,195,247,22,54,11,209,90,161,35,36,10,248,22,178, -248,22,70,209,27,28,248,22,58,23,18,248,22,65,20,15,159,44,42,43,200, -27,252,80,158,49,41,23,19,205,205,248,80,158,50,35,23,21,248,22,252,17, -2,23,19,27,28,206,249,22,252,21,2,195,21,95,66,108,97,109,98,100,97, -60,93,61,101,61,2,61,249,22,252,21,2,195,21,95,2,60,94,2,61,79, -109,111,100,117,108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,62,2, -61,27,250,22,65,20,15,159,49,43,43,248,22,65,249,22,65,23,20,28,199, -23,19,250,22,67,250,22,216,20,15,159,58,44,43,206,23,22,23,22,28,23, -24,9,248,22,65,23,28,251,22,65,20,15,159,53,45,43,28,200,10,23,21, -250,22,65,20,15,159,56,46,43,250,22,2,89,162,8,36,36,47,9,226,25, -27,19,17,249,22,65,199,27,249,80,158,42,42,201,212,27,28,249,22,188,214, -195,28,249,22,252,19,2,195,34,64,116,97,105,108,63,28,249,22,252,19,2, -195,35,20,15,159,41,47,43,28,249,22,252,19,2,195,36,20,15,159,41,48, -43,28,249,22,252,19,2,195,37,20,15,159,41,49,43,28,249,22,252,19,2, -195,38,20,15,159,41,50,43,2,63,28,249,22,252,19,2,195,34,20,15,159, -41,51,43,28,249,22,252,19,2,195,35,20,15,159,41,52,43,28,249,22,252, -19,2,195,36,20,15,159,41,53,43,28,249,22,252,19,2,195,37,20,15,159, -41,54,43,11,28,249,22,252,19,2,194,2,63,28,248,22,193,194,198,250,22, -65,20,15,159,44,55,43,201,196,28,192,249,22,65,194,200,250,22,65,20,15, -159,44,56,43,201,196,24,17,24,18,251,22,65,20,15,159,8,26,57,43,251, -22,2,80,159,8,30,8,42,35,24,22,23,26,24,23,9,28,23,23,251,22, -65,20,15,159,8,30,8,26,43,23,27,23,25,23,21,23,21,202,28,201,250, -22,65,20,15,159,49,8,27,43,248,22,65,249,22,65,68,116,114,121,45,110, -101,120,116,64,250,22,65,20,15,159,55,8,28,43,247,22,65,23,20,195,192, -83,159,34,93,80,159,34,8,42,35,89,162,8,36,37,49,9,223,0,249,22, -65,248,22,65,196,250,22,65,20,15,159,39,58,43,28,248,22,213,200,34,27, -248,22,58,201,28,248,22,213,193,35,27,248,22,58,194,28,248,22,213,193,36, -249,32,65,89,162,8,100,36,45,2,17,222,28,248,22,213,193,193,27,248,22, -58,194,27,248,22,177,196,28,248,22,213,194,192,27,248,22,58,195,27,248,22, -177,195,28,248,22,213,194,192,27,248,22,58,195,27,248,22,177,195,28,248,22, -213,194,192,249,2,65,248,22,58,196,248,22,177,195,248,22,58,195,37,249,22, -65,20,15,159,41,59,43,202,83,159,34,93,80,159,34,8,40,35,89,162,34, -35,39,9,223,0,27,248,80,158,36,39,248,80,158,37,39,196,28,248,80,158, -36,38,193,248,80,158,36,37,193,248,80,158,36,37,248,80,158,37,39,196,83, -159,34,93,80,159,34,8,39,35,89,162,34,35,39,9,223,0,28,248,80,158, -35,38,248,80,158,36,39,248,80,158,37,39,196,248,80,158,35,37,248,80,158, -36,39,195,11,89,162,8,36,35,8,33,9,223,0,91,159,35,10,90,161,35, -34,10,28,248,80,158,36,34,195,248,22,59,248,80,158,37,35,196,11,87,94, -28,28,248,80,158,36,34,195,249,22,190,248,22,70,210,37,11,12,250,22,252, -47,2,11,6,8,8,98,97,100,32,102,111,114,109,66,197,27,248,22,58,209, -27,248,22,84,210,27,248,22,93,211,27,248,22,96,212,27,248,22,96,248,22, -59,214,27,248,22,95,248,22,59,215,87,96,28,248,80,158,42,34,195,12,250, -22,252,47,2,248,22,217,201,6,56,56,101,120,112,101,99,116,101,100,32,97, -32,112,97,114,101,110,116,104,101,115,105,122,101,100,32,115,101,113,117,101,110, -99,101,32,111,102,32,108,105,116,101,114,97,108,32,105,100,101,110,116,105,102, -105,101,114,115,67,197,249,22,3,89,162,34,35,41,9,224,9,7,28,248,80, -158,36,36,195,12,250,22,252,47,2,248,22,217,196,6,28,28,108,105,116,101, -114,97,108,32,105,115,32,110,111,116,32,97,110,32,105,100,101,110,116,105,102, -105,101,114,68,197,248,80,158,44,35,197,249,22,3,89,162,34,35,42,9,224, -9,7,28,28,248,80,158,36,34,195,250,22,191,36,248,22,70,248,80,158,40, -35,199,37,11,12,250,22,252,47,2,248,22,217,196,6,10,10,98,97,100,32, -99,108,97,117,115,101,69,197,194,27,249,22,2,80,158,44,37,195,27,249,22, -2,80,159,45,8,39,35,196,27,249,22,2,80,159,46,8,40,35,197,27,20, -15,159,45,34,43,27,20,15,159,46,35,43,27,249,22,2,89,162,34,35,43, -9,225,15,10,13,251,80,158,40,40,196,199,199,248,80,158,41,35,198,248,80, -158,50,35,200,27,28,248,80,158,49,36,201,249,22,230,202,20,15,159,50,36, -43,11,250,22,216,20,15,159,51,37,43,250,22,65,20,15,159,54,38,43,248, -22,65,249,22,65,204,28,248,22,217,23,21,23,19,250,22,65,20,15,159,8, -26,39,43,249,22,65,20,15,159,8,28,40,43,249,22,216,23,26,2,43,23, -22,26,10,80,159,8,30,8,41,35,23,19,23,18,23,16,23,28,23,25,23, -24,23,22,23,21,23,17,23,20,23,18,34,20,99,159,38,16,9,30,70,2, -33,69,115,116,120,45,108,105,115,116,63,71,8,2,37,2,39,2,32,2,41, -2,35,30,72,2,45,74,103,101,116,45,109,97,116,99,104,45,118,97,114,115, -73,0,30,74,2,45,74,109,97,107,101,45,109,97,116,99,104,38,101,110,118, -75,1,30,76,2,45,72,115,116,120,45,109,101,109,113,45,112,111,115,77,5, -16,29,18,102,63,97,114,103,78,49,41,40,39,16,4,48,11,61,120,79,3, -1,7,101,110,118,50,56,55,53,80,16,4,47,11,61,108,81,3,1,7,101, -110,118,50,56,55,55,82,16,4,46,11,2,81,3,1,7,101,110,118,50,56, -55,57,83,16,14,45,11,63,119,104,111,84,71,97,114,103,45,105,115,45,115, -116,120,63,85,64,101,120,112,114,86,63,107,119,115,87,68,108,105,116,45,99, -111,109,112,88,67,99,108,97,117,115,101,115,89,3,1,7,101,110,118,50,56, -56,48,90,2,90,2,90,2,90,2,90,2,90,16,8,44,11,68,112,97,116, -116,101,114,110,115,91,67,102,101,110,100,101,114,115,92,67,97,110,115,119,101, -114,115,93,3,1,7,101,110,118,50,56,56,52,94,2,94,2,94,18,103,64, -114,115,108,116,95,51,41,40,39,48,47,46,45,44,16,4,50,11,2,78,3, -1,7,101,110,118,50,56,56,56,96,18,103,2,62,53,41,40,39,48,47,46, -45,44,16,8,52,11,2,78,2,95,73,112,97,116,116,101,114,110,45,118,97, -114,115,115,97,2,96,2,96,2,96,18,103,2,43,55,41,40,39,48,47,46, -45,44,16,10,54,11,2,78,2,95,2,97,76,108,105,116,45,99,111,109,112, -45,105,115,45,109,111,100,63,98,2,96,2,96,2,96,2,96,18,16,2,158, -63,108,101,116,99,55,56,18,16,2,158,1,20,100,97,116,117,109,45,62,115, -121,110,116,97,120,45,111,98,106,101,99,116,100,55,57,18,16,2,158,72,113, -117,111,116,101,45,115,121,110,116,97,120,101,55,58,18,105,78,114,97,105,115, -101,45,115,121,110,116,97,120,45,101,114,114,111,114,102,8,27,41,40,39,48, -47,46,45,44,54,16,4,8,26,11,2,17,3,1,7,101,110,118,50,56,57, -48,103,16,10,59,11,2,91,2,92,1,20,117,110,102,108,97,116,45,112,97, -116,116,101,114,110,45,118,97,114,115,115,104,2,93,3,1,7,101,110,118,50, -56,57,49,105,2,105,2,105,2,105,18,109,2,64,8,32,41,40,39,48,47, -46,45,44,54,8,26,59,16,4,8,31,11,64,114,101,115,116,106,3,1,7, -101,110,118,50,56,57,50,107,16,10,8,30,11,67,112,97,116,116,101,114,110, -108,66,102,101,110,100,101,114,109,79,117,110,102,108,97,116,45,112,97,116,116, -101,114,110,45,118,97,114,115,110,66,97,110,115,119,101,114,111,3,1,7,101, -110,118,50,56,57,51,112,2,112,2,112,2,112,16,8,8,29,11,76,116,97, -105,108,45,112,97,116,116,101,114,110,45,118,97,114,113,69,116,101,109,112,45, -118,97,114,115,114,72,112,97,116,116,101,114,110,45,118,97,114,115,115,3,1, -7,101,110,118,50,56,57,57,116,3,1,7,101,110,118,50,56,57,55,117,3, -1,7,101,110,118,50,56,57,53,118,16,8,8,28,11,2,113,2,114,2,115, -3,1,7,101,110,118,50,57,48,49,119,2,119,2,119,18,110,2,99,8,35, -41,40,39,48,47,46,45,44,54,8,26,59,8,31,8,30,8,29,16,8,8, -34,11,2,113,2,114,2,115,2,119,2,119,2,119,16,8,8,33,11,71,100, -111,45,116,114,121,45,110,101,120,116,120,64,109,116,99,104,121,70,99,97,110, -116,45,102,97,105,108,63,122,3,1,7,101,110,118,50,57,48,54,123,2,123, -2,123,18,16,2,158,2,43,8,35,8,36,18,16,2,158,62,105,102,124,8, -35,8,37,18,16,2,158,2,99,8,35,8,38,18,112,2,22,8,41,41,40, -39,48,47,46,45,44,54,8,26,59,8,31,8,30,8,29,8,34,8,33,16, -6,8,40,11,71,112,97,116,116,101,114,110,45,118,97,114,125,68,116,101,109, -112,45,118,97,114,126,3,1,7,101,110,118,50,57,48,55,127,2,127,16,4, -8,39,11,63,112,111,115,128,3,1,7,101,110,118,50,57,48,56,129,18,16, -2,158,2,23,8,41,8,42,18,16,2,158,2,24,8,41,8,43,18,16,2, -158,2,25,8,41,8,44,18,16,2,158,2,18,8,41,8,45,18,16,2,158, -2,19,8,41,8,46,18,16,2,158,2,20,8,41,8,47,18,16,2,158,2, -21,8,41,8,48,18,113,2,27,8,50,41,40,39,48,47,46,45,44,54,8, -26,59,8,31,8,30,8,29,8,34,8,33,8,40,8,39,16,4,8,49,11, -68,97,99,99,101,115,115,111,114,130,3,1,7,101,110,118,50,57,48,57,131, -18,16,2,158,2,26,8,50,8,51,18,16,2,158,1,22,108,101,116,114,101, -99,45,115,121,110,116,97,120,101,115,43,118,97,108,117,101,115,132,8,35,8, -52,18,111,79,109,97,107,101,45,115,121,110,116,97,120,45,109,97,112,112,105, -110,103,133,8,54,41,40,39,48,47,46,45,44,54,8,26,59,8,31,8,30, -8,29,8,34,8,33,16,8,8,53,11,2,125,78,117,110,102,108,97,116,45, -112,97,116,116,101,114,110,45,118,97,114,134,2,126,3,1,7,101,110,118,50, -57,49,48,135,2,135,2,135,18,16,2,158,2,101,8,54,8,55,18,8,37, -18,110,2,99,8,58,41,40,39,48,47,46,45,44,54,8,26,59,8,31,8, -30,8,29,16,8,8,57,11,2,113,2,114,2,115,2,119,2,119,2,119,16, -10,8,56,11,2,120,2,121,2,122,61,109,136,2,123,2,123,2,123,2,123, -18,16,2,158,2,60,8,58,8,59,11,16,5,93,2,15,87,96,83,159,34, -93,80,159,34,51,35,89,162,8,64,37,50,2,17,223,0,28,248,22,63,196, -9,28,248,22,58,196,249,22,57,250,22,216,248,22,58,200,248,22,217,248,80, -158,41,42,248,22,58,203,198,27,248,22,59,198,27,248,22,59,200,28,248,22, -63,193,9,28,248,22,58,193,249,22,57,250,22,216,248,22,58,199,248,22,217, -248,80,158,45,42,248,22,58,200,202,250,80,159,43,51,35,202,248,22,59,199, -248,22,59,198,250,80,159,41,51,35,200,248,22,59,197,248,22,59,196,27,248, -22,59,196,27,248,22,59,198,28,248,22,63,193,9,28,248,22,58,193,249,22, -57,250,22,216,248,22,58,199,248,22,217,248,80,158,43,42,248,22,58,200,200, -250,80,159,41,51,35,200,248,22,59,199,248,22,59,198,250,80,159,39,51,35, -198,248,22,59,197,248,22,59,196,83,159,34,93,80,159,34,50,35,89,162,8, -64,36,58,2,17,223,0,28,248,22,63,195,9,27,249,80,159,37,50,35,248, -22,59,197,248,22,59,198,28,248,22,58,196,249,22,57,27,248,22,58,198,27, -248,80,158,40,41,248,22,58,201,28,248,22,193,193,193,27,248,22,65,195,27, -248,22,178,195,28,248,22,193,193,193,27,248,22,65,195,27,248,22,178,195,28, -248,22,193,193,193,27,248,22,65,195,27,248,22,178,195,28,248,22,193,193,193, -27,248,22,65,195,27,248,22,178,195,28,248,22,193,193,193,27,248,22,65,195, -27,248,22,178,195,28,248,22,193,193,193,27,248,22,65,195,27,248,22,178,195, -28,248,22,193,193,193,249,32,137,89,162,8,64,36,45,2,17,222,28,248,22, -193,194,192,27,248,22,65,194,27,248,22,178,196,28,248,22,193,193,193,27,248, -22,65,195,27,248,22,178,195,28,248,22,193,193,193,27,248,22,65,195,27,248, -22,178,195,28,248,22,193,193,193,249,2,137,248,22,65,196,248,22,178,195,248, -22,65,196,248,22,178,195,194,192,83,159,34,93,80,159,34,49,35,89,162,8, -36,35,39,9,223,0,27,249,22,252,103,3,196,32,138,89,162,8,44,34,34, -9,222,11,28,248,80,158,36,39,193,192,11,89,162,8,36,35,56,9,223,0, -91,159,35,10,90,161,35,34,10,20,15,159,35,34,44,87,94,28,28,248,80, -158,36,34,195,27,248,80,158,37,35,196,28,248,80,158,37,34,193,248,80,158, -37,36,248,80,158,38,35,194,11,11,12,250,22,252,47,2,11,6,8,8,98, -97,100,32,102,111,114,109,139,197,250,22,216,210,27,248,80,158,40,37,248,80, -158,41,35,200,27,251,80,158,44,38,197,11,9,11,27,249,22,2,80,159,43, -49,35,195,28,28,28,248,22,63,193,10,248,22,252,17,2,249,22,5,32,140, -89,162,8,36,35,35,9,222,192,195,248,80,158,42,40,195,11,249,22,65,20, -15,159,43,35,44,196,27,249,80,159,44,50,35,196,195,27,28,248,22,63,195, -9,27,27,248,22,59,198,27,248,22,59,198,28,248,22,63,193,9,27,249,32, -141,89,162,8,64,36,46,2,17,222,28,248,22,63,194,9,27,27,248,22,59, -195,27,248,22,59,197,28,248,22,63,193,9,27,27,248,22,59,196,27,248,22, -59,196,28,248,22,63,193,9,27,249,2,141,248,22,59,197,248,22,59,196,28, -248,22,58,194,192,249,22,57,248,22,58,197,194,28,248,22,58,194,192,249,22, -57,248,22,58,197,194,28,248,22,58,195,192,249,22,57,248,22,58,196,194,248, -22,59,197,248,22,59,196,28,248,22,58,194,192,249,22,57,248,22,58,197,194, -28,248,22,58,196,192,249,22,57,248,22,58,199,194,27,251,80,158,48,38,201, -198,197,201,27,28,248,22,63,197,9,28,248,22,58,197,249,22,57,250,22,216, -248,22,58,203,248,22,217,248,80,158,52,42,248,22,58,204,23,17,250,80,159, -50,51,35,23,17,248,22,59,203,248,22,59,202,250,80,159,48,51,35,23,15, -248,22,59,201,248,22,59,200,28,248,80,158,46,43,199,248,22,58,193,249,22, -65,250,22,216,24,15,198,203,27,248,22,70,196,28,248,22,193,193,20,15,159, -48,36,44,28,249,22,188,194,35,248,22,58,196,249,22,57,20,15,159,50,37, -44,197,197,34,20,99,159,37,16,10,2,41,2,35,30,142,2,33,69,115,116, -120,45,110,117,108,108,63,143,10,2,32,30,144,2,45,72,109,97,107,101,45, -112,101,120,112,97,110,100,145,2,30,146,2,45,75,115,121,110,116,97,120,45, -109,97,112,112,105,110,103,63,147,8,30,148,2,45,72,110,111,45,101,108,108, -105,112,115,101,115,63,149,4,30,150,2,45,1,20,115,121,110,116,97,120,45, -109,97,112,112,105,110,103,45,100,101,112,116,104,151,6,30,152,2,45,1,21, -115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,118,97,108,118,97,114, -153,7,2,39,16,4,18,100,2,43,8,63,41,40,39,16,4,8,62,11,2, -79,3,1,7,101,110,118,50,57,49,52,154,16,4,8,61,11,68,104,101,114, -101,45,115,116,120,155,3,1,7,101,110,118,50,57,49,54,156,16,4,8,60, -11,2,155,2,156,18,103,2,101,8,69,41,40,39,8,62,16,4,8,68,11, -2,155,2,156,16,4,8,67,11,2,155,3,1,7,101,110,118,50,57,49,56, -157,16,4,8,66,11,2,108,3,1,7,101,110,118,50,57,50,48,158,16,4, -8,65,11,71,117,110,105,113,117,101,45,118,97,114,115,159,3,1,7,101,110, -118,50,57,50,49,160,16,4,8,64,11,72,118,97,114,45,98,105,110,100,105, -110,103,115,161,3,1,7,101,110,118,50,57,50,50,162,18,106,9,8,73,41, -40,39,8,62,8,68,8,67,8,66,8,65,8,64,16,6,8,72,11,67,112, -114,111,116,111,45,114,163,76,110,111,110,45,112,97,116,116,101,114,110,45,118, -97,114,115,164,3,1,7,101,110,118,50,57,50,56,165,2,165,16,6,8,71, -11,79,98,117,105,108,100,45,102,114,111,109,45,116,101,109,112,108,97,116,101, -166,61,114,167,3,1,7,101,110,118,50,57,51,55,168,2,168,16,4,8,70, -11,63,108,101,110,169,3,1,7,101,110,118,50,57,52,48,170,18,16,2,158, -65,108,105,115,116,42,171,8,73,8,74,11,96,83,159,34,93,80,159,34,34, -35,32,172,89,162,8,36,36,42,2,4,222,28,248,22,213,194,193,27,252,22, -216,198,199,198,11,198,27,249,22,225,196,71,112,97,114,101,110,45,115,104,97, -112,101,173,28,192,250,22,225,196,2,173,195,193,83,159,34,93,80,159,34,35, -35,89,162,34,37,39,2,6,223,0,247,248,22,8,89,162,8,32,35,40,9, -226,1,4,3,2,20,14,159,80,158,37,36,89,162,34,35,39,9,225,2,1, -4,248,193,89,162,34,34,41,9,225,3,2,4,28,248,22,252,193,2,193,248, -22,252,197,2,193,251,22,252,47,2,2,15,6,47,47,105,110,99,111,109,112, -97,116,105,98,108,101,32,101,108,108,105,112,115,105,115,32,109,97,116,99,104, -32,99,111,117,110,116,115,32,102,111,114,32,116,101,109,112,108,97,116,101,174, -197,198,27,247,193,89,162,8,36,34,35,9,223,0,192,83,159,34,93,80,159, -34,37,35,65,100,117,109,109,121,175,83,159,34,93,80,159,34,38,35,89,162, -8,37,37,40,2,13,223,0,91,159,35,11,20,12,95,35,248,193,195,89,162, -8,64,35,46,2,17,226,1,4,3,0,28,248,22,56,197,27,248,194,248,22, -58,199,27,248,195,248,22,59,200,28,28,249,22,252,19,2,195,248,22,58,201, -249,22,252,19,2,194,248,22,59,201,11,198,249,22,57,195,194,28,248,22,47, -197,28,248,22,63,194,196,28,249,22,252,19,2,198,248,22,58,196,248,22,58, -195,27,248,22,59,195,27,248,22,59,197,28,248,22,63,194,198,28,249,22,252, -19,2,200,248,22,58,196,248,22,58,193,250,32,176,89,162,8,64,37,45,65, -115,108,111,111,112,177,222,28,248,22,63,194,192,28,249,22,252,19,2,194,248, -22,58,196,248,22,58,195,27,248,22,59,195,27,248,22,59,197,28,248,22,63, -194,194,28,249,22,252,19,2,196,248,22,58,196,248,22,58,193,27,248,22,59, -195,27,248,22,59,195,28,248,22,63,194,196,28,249,22,252,19,2,198,248,22, -58,196,248,22,58,193,250,2,176,199,248,22,59,197,248,22,59,196,201,248,22, -59,197,248,22,59,196,28,248,22,213,197,27,248,194,248,22,217,199,28,249,22, -252,19,2,248,22,217,200,194,197,28,248,22,213,193,192,27,252,22,216,203,198, -203,11,203,27,249,22,225,201,2,173,28,192,250,22,225,196,2,173,195,193,28, -248,22,252,229,1,197,248,22,252,237,1,249,22,2,195,248,22,252,236,1,200, -28,248,22,113,197,248,22,111,248,194,248,22,114,199,196,96,68,35,37,107,101, -114,110,101,108,178,2,33,2,44,2,8,96,2,33,2,44,2,45,2,178,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6362); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,140,0,0,0,1,0,0,3,0,31,0,53,0, +62,0,78,0,104,0,118,0,125,0,144,0,149,0,153,0,158,0,164,0,171, +0,175,0,180,0,186,0,193,0,202,0,212,0,218,0,223,0,238,0,243,0, +253,0,7,1,14,1,16,1,36,1,41,1,50,1,54,1,56,1,58,1,68, +1,78,1,83,1,93,1,107,1,111,1,124,1,132,1,142,1,159,1,169,1, +182,1,192,1,204,1,209,1,220,1,230,1,233,1,245,1,254,1,8,2,18, +2,27,2,37,2,47,2,57,2,69,2,78,2,212,2,90,3,102,3,114,3, +128,3,144,3,158,3,164,3,186,3,236,3,76,4,137,4,221,4,0,5,58, +5,74,5,90,5,106,5,126,5,154,5,190,5,225,5,244,5,250,5,0,6, +26,6,32,6,68,6,84,6,127,6,167,6,215,6,234,6,26,7,42,7,58, +7,91,7,97,7,103,7,109,7,115,7,133,7,145,7,182,7,188,7,194,7, +200,7,206,7,212,7,218,7,224,7,230,7,34,8,40,8,46,8,74,8,140, +8,164,8,170,8,176,8,241,8,247,8,253,8,81,9,186,9,202,9,231,9, +2,10,28,10,44,10,60,10,68,10,96,10,202,10,208,10,219,10,72,11,0, +0,129,25,0,0,29,11,11,1,26,100,97,116,117,109,45,62,115,121,110,116, +97,120,45,111,98,106,101,99,116,47,115,104,97,112,101,1,20,99,97,116,99, +104,45,101,108,108,105,112,115,105,115,45,101,114,114,111,114,68,35,37,112,97, +114,97,109,122,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,1, +24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115,116,105, +116,117,116,101,73,115,121,110,116,97,120,45,99,97,115,101,42,42,66,115,121, +110,116,97,120,78,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117, +116,101,64,108,111,111,112,63,99,97,114,64,99,97,100,114,65,99,97,100,100, +114,66,99,97,100,100,100,114,63,99,100,114,64,99,100,100,114,65,99,100,100, +100,114,66,99,100,100,100,100,114,68,108,105,115,116,45,114,101,102,69,108,105, +115,116,45,116,97,105,108,65,35,37,115,116,120,64,104,101,114,101,74,35,37, +115,109,97,108,108,45,115,99,104,101,109,101,64,35,37,115,99,3,1,7,101, +110,118,50,56,53,52,3,1,7,101,110,118,50,56,53,53,66,108,97,109,98, +100,97,61,101,79,109,111,100,117,108,101,45,105,100,101,110,116,105,102,105,101, +114,61,63,64,116,97,105,108,68,116,114,121,45,110,101,120,116,63,97,114,103, +61,120,61,108,3,1,7,101,110,118,50,56,56,48,3,1,7,101,110,118,50, +56,56,52,64,114,115,108,116,3,1,7,101,110,118,50,56,56,56,73,112,97, +116,116,101,114,110,45,118,97,114,115,115,63,108,101,116,72,113,117,111,116,101, +45,115,121,110,116,97,120,67,112,97,116,116,101,114,110,3,1,7,101,110,118, +50,56,57,51,76,116,97,105,108,45,112,97,116,116,101,114,110,45,118,97,114, +69,116,101,109,112,45,118,97,114,115,72,112,97,116,116,101,114,110,45,118,97, +114,115,3,1,7,101,110,118,50,57,48,49,71,100,111,45,116,114,121,45,110, +101,120,116,64,109,116,99,104,70,99,97,110,116,45,102,97,105,108,63,3,1, +7,101,110,118,50,57,48,54,62,105,102,71,112,97,116,116,101,114,110,45,118, +97,114,68,116,101,109,112,45,118,97,114,3,1,7,101,110,118,50,57,48,55, +3,1,7,101,110,118,50,57,49,48,68,104,101,114,101,45,115,116,120,3,1, +7,101,110,118,50,57,49,54,3,1,7,101,110,118,50,57,50,56,3,1,7, +101,110,118,50,57,51,55,71,112,97,114,101,110,45,115,104,97,112,101,68,35, +37,107,101,114,110,101,108,32,63,89,162,8,64,36,44,2,10,222,28,248,22, +63,194,9,28,250,22,122,195,248,22,153,3,248,22,58,198,11,27,248,22,86, +195,28,248,22,63,193,9,28,250,22,122,196,248,22,153,3,248,22,58,197,11, +249,2,63,195,248,22,86,195,249,22,57,248,22,58,195,249,2,63,197,248,22, +86,197,249,22,57,248,22,58,196,27,248,22,86,197,28,248,22,63,193,9,28, +250,22,122,198,248,22,153,3,248,22,58,197,11,249,2,63,197,248,22,86,195, +249,22,57,248,22,58,195,249,2,63,199,248,22,86,197,32,64,89,162,8,64, +36,44,2,10,222,28,248,22,63,194,9,28,250,22,122,195,248,22,153,3,248, +22,58,198,11,27,248,22,86,195,28,248,22,63,193,9,28,250,22,122,196,248, +22,153,3,248,22,58,197,11,249,2,64,195,248,22,86,195,249,22,57,248,22, +84,195,249,2,64,197,248,22,86,197,249,22,57,248,22,84,196,27,248,22,86, +197,28,248,22,63,193,9,28,250,22,122,198,248,22,153,3,248,22,58,197,11, +249,2,64,197,248,22,86,195,249,22,57,248,22,84,195,249,2,64,199,248,22, +86,197,30,2,21,67,115,116,120,45,99,97,114,5,30,2,21,67,115,116,120, +45,99,100,114,6,30,2,21,69,115,116,120,45,62,108,105,115,116,4,30,2, +21,71,105,100,101,110,116,105,102,105,101,114,63,2,30,2,21,69,115,116,120, +45,112,97,105,114,63,11,95,8,193,11,16,0,97,10,35,11,95,159,2,24, +9,11,159,2,23,9,11,159,2,21,9,11,16,0,97,10,34,11,95,159,2, +4,9,11,159,2,23,9,11,159,2,21,9,11,16,14,2,7,2,1,2,2, +2,1,2,9,2,1,2,6,2,1,2,8,2,1,2,5,2,1,2,3,2, +1,18,100,2,22,8,72,8,71,8,70,16,4,11,11,63,115,116,120,3,1, +7,101,110,118,50,56,53,51,16,6,11,11,63,112,97,116,64,115,117,98,115, +2,25,2,25,16,6,11,11,69,104,116,45,99,111,109,109,111,110,66,104,116, +45,109,97,112,2,26,2,26,16,4,11,11,71,110,101,119,45,112,97,116,116, +101,114,110,3,1,7,101,110,118,50,56,54,51,32,74,89,162,8,100,35,40, +2,10,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, +192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, +149,3,193,192,248,2,74,248,22,58,194,32,75,89,162,8,100,36,45,2,10, +222,28,248,22,149,3,193,193,27,248,22,58,194,27,248,22,177,2,196,28,248, +22,149,3,194,192,27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3, +194,192,27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3,194,192,249, +2,75,248,22,58,196,248,22,177,2,195,16,8,11,11,68,112,97,116,116,101, +114,110,115,67,102,101,110,100,101,114,115,67,97,110,115,119,101,114,115,2,36, +2,36,2,36,16,14,11,11,63,119,104,111,71,97,114,103,45,105,115,45,115, +116,120,63,64,101,120,112,114,63,107,119,115,68,108,105,116,45,99,111,109,112, +67,99,108,97,117,115,101,115,2,35,2,35,2,35,2,35,2,35,2,35,16, +4,11,11,2,34,3,1,7,101,110,118,50,56,55,57,16,4,11,11,2,34, +3,1,7,101,110,118,50,56,55,55,16,4,11,11,2,33,3,1,7,101,110, +118,50,56,55,53,18,101,2,32,8,72,8,71,8,70,8,80,8,79,8,78, +8,77,8,76,18,102,2,37,8,72,8,71,8,70,8,80,8,79,8,78,8, +77,8,76,16,4,11,11,2,32,2,38,18,102,2,29,8,72,8,71,8,70, +8,80,8,79,8,78,8,77,8,76,16,8,11,11,2,32,2,37,2,39,2, +38,2,38,2,38,16,10,11,11,2,32,2,37,2,39,76,108,105,116,45,99, +111,109,112,45,105,115,45,109,111,100,63,2,38,2,38,2,38,2,38,101,8, +72,8,71,8,70,8,80,8,79,8,78,8,77,8,76,8,84,18,158,2,22, +8,85,18,158,2,40,8,85,18,158,1,20,100,97,116,117,109,45,62,115,121, +110,116,97,120,45,111,98,106,101,99,116,8,85,18,158,2,41,8,85,16,4, +11,11,1,20,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118,97, +114,115,115,3,1,7,101,110,118,50,56,57,49,16,4,11,11,2,10,3,1, +7,101,110,118,50,56,57,48,18,104,78,114,97,105,115,101,45,115,121,110,116, +97,120,45,101,114,114,111,114,8,72,8,71,8,70,8,80,8,79,8,78,8, +77,8,76,8,84,8,91,8,90,16,8,11,11,2,44,2,45,2,46,3,1, +7,101,110,118,50,56,57,57,3,1,7,101,110,118,50,56,57,55,3,1,7, +101,110,118,50,56,57,53,16,10,11,11,2,42,66,102,101,110,100,101,114,79, +117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118,97,114,115,66,97, +110,115,119,101,114,2,43,2,43,2,43,2,43,16,4,11,11,64,114,101,115, +116,3,1,7,101,110,118,50,56,57,50,18,108,2,31,8,72,8,71,8,70, +8,80,8,79,8,78,8,77,8,76,8,84,8,91,8,90,8,95,8,94,8, +93,16,8,11,11,2,44,2,45,2,46,2,47,2,47,2,47,16,8,11,11, +2,48,2,49,2,50,2,51,2,51,2,51,16,8,11,11,2,44,2,45,2, +46,2,47,2,47,2,47,108,8,72,8,71,8,70,8,80,8,79,8,78,8, +77,8,76,8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97,18,158, +2,40,8,99,18,158,2,22,8,99,18,158,2,52,8,99,18,158,2,40,8, +99,16,4,11,11,63,112,111,115,3,1,7,101,110,118,50,57,48,56,16,6, +11,11,2,53,2,54,2,55,2,55,110,8,72,8,71,8,70,8,80,8,79, +8,78,8,77,8,76,8,84,8,91,8,90,8,95,8,94,8,93,8,98,8, +97,8,105,8,104,18,158,2,15,8,106,18,158,2,16,8,106,18,158,2,17, +8,106,18,158,2,18,8,106,18,158,2,11,8,106,18,158,2,12,8,106,18, +158,2,13,8,106,18,158,2,14,8,106,111,8,72,8,71,8,70,8,80,8, +79,8,78,8,77,8,76,8,84,8,91,8,90,8,95,8,94,8,93,8,98, +8,97,8,105,8,104,16,4,11,11,68,97,99,99,101,115,115,111,114,3,1, +7,101,110,118,50,57,48,57,18,158,2,20,8,115,18,158,2,19,8,115,18, +158,1,22,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43,118,97, +108,117,101,115,8,99,109,8,72,8,71,8,70,8,80,8,79,8,78,8,77, +8,76,8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97,16,8,11, +11,2,53,78,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118,97, +114,2,54,2,56,2,56,2,56,18,158,79,109,97,107,101,45,115,121,110,116, +97,120,45,109,97,112,112,105,110,103,8,119,18,158,2,41,8,119,18,158,2, +52,8,99,108,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8,76,8, +84,8,91,8,90,8,95,8,94,8,93,16,8,11,11,2,44,2,45,2,46, +2,47,2,47,2,47,16,10,11,11,2,48,2,49,2,50,61,109,2,51,2, +51,2,51,2,51,18,158,2,40,8,123,18,158,2,27,8,123,32,126,89,162, +8,64,36,45,2,10,222,28,248,22,129,3,194,192,27,248,22,65,194,27,248, +22,178,2,196,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2, +195,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248, +22,129,3,193,193,249,2,126,248,22,65,196,248,22,178,2,195,32,127,89,162, +8,64,36,46,2,10,222,28,248,22,63,194,9,27,27,248,22,59,195,27,248, +22,59,197,28,248,22,63,193,9,27,27,248,22,59,196,27,248,22,59,196,28, +248,22,63,193,9,27,249,2,127,248,22,59,197,248,22,59,196,28,248,22,58, +194,192,249,22,57,248,22,58,197,194,28,248,22,58,194,192,249,22,57,248,22, +58,197,194,28,248,22,58,195,192,249,22,57,248,22,58,196,194,16,4,11,11, +2,33,3,1,7,101,110,118,50,57,49,52,18,99,2,22,8,72,8,71,8, +70,8,128,2,16,4,11,11,2,57,2,58,16,4,11,11,2,57,2,58,16, +4,11,11,72,118,97,114,45,98,105,110,100,105,110,103,115,3,1,7,101,110, +118,50,57,50,50,16,4,11,11,71,117,110,105,113,117,101,45,118,97,114,115, +3,1,7,101,110,118,50,57,50,49,16,4,11,11,2,42,3,1,7,101,110, +118,50,57,50,48,16,4,11,11,2,57,3,1,7,101,110,118,50,57,49,56, +16,4,11,11,2,57,2,58,18,102,2,41,8,72,8,71,8,70,8,128,2, +8,134,2,8,133,2,8,132,2,8,131,2,8,130,2,104,8,72,8,71,8, +70,8,128,2,8,134,2,8,133,2,8,132,2,8,131,2,8,130,2,16,6, +11,11,67,112,114,111,116,111,45,114,76,110,111,110,45,112,97,116,116,101,114, +110,45,118,97,114,115,2,59,2,59,16,6,11,11,79,98,117,105,108,100,45, +102,114,111,109,45,116,101,109,112,108,97,116,101,61,114,2,60,2,60,16,4, +11,11,63,108,101,110,3,1,7,101,110,118,50,57,52,48,18,158,9,8,136, +2,18,158,65,108,105,115,116,42,8,136,2,32,139,2,89,162,8,64,37,45, +65,115,108,111,111,112,222,28,248,22,63,194,192,28,249,22,147,8,194,248,22, +58,196,248,22,58,195,27,248,22,59,195,27,248,22,59,197,28,248,22,63,194, +194,28,249,22,147,8,196,248,22,58,196,248,22,58,193,27,248,22,59,195,27, +248,22,59,195,28,248,22,63,194,196,28,249,22,147,8,198,248,22,58,196,248, +22,58,193,250,2,139,2,199,248,22,59,197,248,22,59,196,159,34,20,99,159, +34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,96,114,69,35, +37,115,116,120,99,97,115,101,2,1,10,10,10,34,80,158,34,34,20,99,159, +34,16,5,30,2,1,2,2,193,30,2,1,2,3,193,30,2,4,1,21,101, +120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,2, +30,2,1,2,5,193,30,2,1,2,6,193,16,0,11,11,16,4,2,6,2, +3,2,2,2,5,38,11,16,2,2,7,2,8,16,2,11,11,16,2,2,7, +2,8,34,36,95,16,5,93,2,9,87,94,83,158,34,16,2,89,162,8,100, +37,45,2,10,223,0,28,248,22,63,196,12,87,94,27,248,22,153,3,248,22, +58,198,27,248,22,84,198,28,28,248,80,158,37,37,193,10,28,248,80,158,37, +38,193,28,249,22,77,248,22,153,3,248,80,158,40,34,196,21,102,2,11,2, +12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,28,248,80,158, +37,38,248,80,158,38,35,194,248,80,158,37,37,248,80,158,38,34,248,80,158, +39,35,195,11,11,11,27,248,22,151,3,194,27,250,22,122,200,196,11,28,192, +250,22,121,201,198,195,250,22,121,200,196,198,12,250,80,159,37,41,35,196,197, +248,22,86,199,80,159,34,41,35,89,162,8,36,35,56,9,223,0,27,248,80, +158,36,34,248,80,158,37,35,196,27,248,80,158,37,36,248,80,158,38,35,248, +80,158,39,35,198,27,248,22,116,65,101,113,117,97,108,27,247,22,116,87,94, +250,80,159,41,41,35,196,195,197,27,28,248,22,129,3,248,22,119,195,196,91, +159,35,11,20,12,95,35,248,193,198,89,162,8,64,35,42,2,10,224,2,0, +28,248,22,56,195,27,248,194,248,22,58,197,27,248,195,248,22,59,198,28,28, +249,22,147,8,195,248,22,58,199,249,22,147,8,194,248,22,59,199,11,196,249, +22,57,195,194,28,248,22,47,195,27,250,22,122,197,198,11,28,192,192,195,28, +248,22,149,3,195,27,248,194,248,22,153,3,197,28,249,22,147,8,248,22,153, +3,198,194,195,251,22,152,3,199,196,199,199,28,248,22,165,7,195,248,22,173, +7,249,22,2,195,248,22,172,7,198,28,248,22,113,195,248,22,111,248,194,248, +22,114,197,194,250,22,152,3,20,15,159,42,34,39,251,22,67,2,6,199,249, +22,65,65,113,117,111,116,101,28,248,22,63,205,9,28,250,22,122,205,248,22, +153,3,248,22,58,23,17,11,249,2,63,204,248,22,86,23,15,249,22,57,248, +22,58,23,15,249,2,63,206,248,22,86,23,17,28,248,22,63,203,9,28,250, +22,122,203,248,22,153,3,248,22,58,23,15,11,249,2,64,202,248,22,86,205, +249,22,57,248,22,84,205,249,2,64,204,248,22,86,23,15,201,34,20,99,159, +35,16,5,2,65,2,66,2,67,2,68,2,69,16,1,33,73,11,16,5,93, +2,7,87,97,83,158,34,16,2,89,162,8,36,44,8,41,2,10,223,0,28, +248,22,63,200,251,22,65,20,15,159,38,41,43,11,6,10,10,98,97,100,32, +115,121,110,116,97,120,197,27,26,10,80,159,45,8,41,35,204,205,206,23,15, +23,16,23,17,248,22,59,23,19,248,22,59,23,20,248,22,59,23,21,248,22, +59,23,22,27,248,22,58,202,27,248,22,58,204,27,248,22,58,206,27,248,22, +58,23,16,91,159,37,10,90,161,35,34,10,249,22,2,32,0,89,162,8,36, +35,40,9,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, +193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2,74,248,22,58,194, +198,90,161,35,35,10,249,22,2,32,0,89,162,8,36,35,38,9,222,250,22, +152,3,195,247,22,54,11,209,90,161,35,36,10,248,22,178,2,248,22,70,209, +27,28,248,22,58,23,18,248,22,65,20,15,159,44,42,43,200,27,252,80,158, +49,41,23,19,205,205,248,80,158,50,35,23,21,248,22,145,8,23,19,27,28, +206,249,22,149,8,195,21,95,2,27,93,2,28,2,28,249,22,149,8,195,21, +95,2,27,94,2,28,2,29,2,28,27,250,22,65,20,15,159,49,43,43,248, +22,65,249,22,65,23,20,28,199,23,19,250,22,67,250,22,152,3,20,15,159, +58,44,43,206,23,22,23,22,28,23,24,9,248,22,65,23,28,251,22,65,20, +15,159,53,45,43,28,200,10,23,21,250,22,65,20,15,159,56,46,43,250,22, +2,89,162,8,36,36,47,9,226,25,27,19,17,249,22,65,199,27,249,80,158, +42,42,201,212,27,28,249,22,188,2,214,195,28,249,22,147,8,195,34,2,30, +28,249,22,147,8,195,35,20,15,159,41,47,43,28,249,22,147,8,195,36,20, +15,159,41,48,43,28,249,22,147,8,195,37,20,15,159,41,49,43,28,249,22, +147,8,195,38,20,15,159,41,50,43,2,30,28,249,22,147,8,195,34,20,15, +159,41,51,43,28,249,22,147,8,195,35,20,15,159,41,52,43,28,249,22,147, +8,195,36,20,15,159,41,53,43,28,249,22,147,8,195,37,20,15,159,41,54, +43,11,28,249,22,147,8,194,2,30,28,248,22,129,3,194,198,250,22,65,20, +15,159,44,55,43,201,196,28,192,249,22,65,194,200,250,22,65,20,15,159,44, +56,43,201,196,24,17,24,18,251,22,65,20,15,159,8,26,57,43,251,22,2, +80,159,8,30,8,42,35,24,22,23,26,24,23,9,28,23,23,251,22,65,20, +15,159,8,30,8,26,43,23,27,23,25,23,21,23,21,202,28,201,250,22,65, +20,15,159,49,8,27,43,248,22,65,249,22,65,2,31,250,22,65,20,15,159, +55,8,28,43,247,22,65,23,20,195,192,80,159,34,8,41,35,83,158,34,16, +2,89,162,8,36,37,49,9,223,0,249,22,65,248,22,65,196,250,22,65,20, +15,159,39,58,43,28,248,22,149,3,200,34,27,248,22,58,201,28,248,22,149, +3,193,35,27,248,22,58,194,28,248,22,149,3,193,36,249,2,75,248,22,58, +195,37,249,22,65,20,15,159,41,59,43,202,80,159,34,8,42,35,83,158,34, +16,2,89,162,34,35,39,9,223,0,27,248,80,158,36,39,248,80,158,37,39, +196,28,248,80,158,36,38,193,248,80,158,36,37,193,248,80,158,36,37,248,80, +158,37,39,196,80,159,34,8,40,35,83,158,34,16,2,89,162,34,35,39,9, +223,0,28,248,80,158,35,38,248,80,158,36,39,248,80,158,37,39,196,248,80, +158,35,37,248,80,158,36,39,195,11,80,159,34,8,39,35,89,162,8,36,35, +8,33,9,223,0,91,159,35,10,90,161,35,34,10,28,248,80,158,36,34,195, +248,22,59,248,80,158,37,35,196,11,87,94,28,28,248,80,158,36,34,195,249, +22,190,2,248,22,70,210,37,11,12,250,22,175,8,11,6,8,8,98,97,100, +32,102,111,114,109,197,27,248,22,58,209,27,248,22,84,210,27,248,22,93,211, +27,248,22,96,212,27,248,22,96,248,22,59,214,27,248,22,95,248,22,59,215, +87,96,28,248,80,158,42,34,195,12,250,22,175,8,248,22,153,3,201,6,56, +56,101,120,112,101,99,116,101,100,32,97,32,112,97,114,101,110,116,104,101,115, +105,122,101,100,32,115,101,113,117,101,110,99,101,32,111,102,32,108,105,116,101, +114,97,108,32,105,100,101,110,116,105,102,105,101,114,115,197,249,22,3,89,162, +34,35,41,9,224,9,7,28,248,80,158,36,36,195,12,250,22,175,8,248,22, +153,3,196,6,28,28,108,105,116,101,114,97,108,32,105,115,32,110,111,116,32, +97,110,32,105,100,101,110,116,105,102,105,101,114,197,248,80,158,44,35,197,249, +22,3,89,162,34,35,42,9,224,9,7,28,28,248,80,158,36,34,195,250,22, +191,2,36,248,22,70,248,80,158,40,35,199,37,11,12,250,22,175,8,248,22, +153,3,196,6,10,10,98,97,100,32,99,108,97,117,115,101,197,194,27,249,22, +2,80,158,44,37,195,27,249,22,2,80,159,45,8,39,35,196,27,249,22,2, +80,159,46,8,40,35,197,27,20,15,159,45,34,43,27,20,15,159,46,35,43, +27,249,22,2,89,162,34,35,43,9,225,15,10,13,251,80,158,40,40,196,199, +199,248,80,158,41,35,198,248,80,158,50,35,200,27,28,248,80,158,49,36,201, +249,22,166,3,202,20,15,159,50,36,43,11,250,22,152,3,20,15,159,51,37, +43,250,22,65,20,15,159,54,38,43,248,22,65,249,22,65,204,28,248,22,153, +3,23,21,23,19,250,22,65,20,15,159,8,26,39,43,249,22,65,20,15,159, +8,28,40,43,249,22,152,3,23,26,2,22,23,22,26,10,80,159,8,30,8, +41,35,23,19,23,18,23,16,23,28,23,25,23,24,23,22,23,21,23,17,23, +20,23,18,34,20,99,159,38,16,9,30,2,21,69,115,116,120,45,108,105,115, +116,63,8,2,67,2,68,2,65,2,69,2,66,30,2,24,74,103,101,116,45, +109,97,116,99,104,45,118,97,114,115,0,30,2,24,74,109,97,107,101,45,109, +97,116,99,104,38,101,110,118,1,30,2,24,72,115,116,120,45,109,101,109,113, +45,112,111,115,5,16,29,33,81,33,82,33,83,33,86,33,87,33,88,33,89, +33,92,33,96,33,100,33,101,33,102,33,103,33,107,33,108,33,109,33,110,33, +111,33,112,33,113,33,114,33,116,33,117,33,118,33,120,33,121,33,122,33,124, +33,125,11,16,5,93,2,8,87,96,83,158,34,16,2,89,162,8,64,37,50, +2,10,223,0,28,248,22,63,196,9,28,248,22,58,196,249,22,57,250,22,152, +3,248,22,58,200,248,22,153,3,248,80,158,41,42,248,22,58,203,198,27,248, +22,59,198,27,248,22,59,200,28,248,22,63,193,9,28,248,22,58,193,249,22, +57,250,22,152,3,248,22,58,199,248,22,153,3,248,80,158,45,42,248,22,58, +200,202,250,80,159,43,51,35,202,248,22,59,199,248,22,59,198,250,80,159,41, +51,35,200,248,22,59,197,248,22,59,196,27,248,22,59,196,27,248,22,59,198, +28,248,22,63,193,9,28,248,22,58,193,249,22,57,250,22,152,3,248,22,58, +199,248,22,153,3,248,80,158,43,42,248,22,58,200,200,250,80,159,41,51,35, +200,248,22,59,199,248,22,59,198,250,80,159,39,51,35,198,248,22,59,197,248, +22,59,196,80,159,34,51,35,83,158,34,16,2,89,162,8,64,36,58,2,10, +223,0,28,248,22,63,195,9,27,249,80,159,37,50,35,248,22,59,197,248,22, +59,198,28,248,22,58,196,249,22,57,27,248,22,58,198,27,248,80,158,40,41, +248,22,58,201,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2, +195,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248, +22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3, +193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193,193,27, +248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193,193,27,248,22,65, +195,27,248,22,178,2,195,28,248,22,129,3,193,193,249,2,126,248,22,65,196, +248,22,178,2,195,194,192,80,159,34,50,35,83,158,34,16,2,89,162,8,36, +35,39,9,223,0,27,249,22,167,13,196,32,0,89,162,8,44,34,34,9,222, +11,28,248,80,158,36,39,193,192,11,80,159,34,49,35,89,162,8,36,35,56, +9,223,0,91,159,35,10,90,161,35,34,10,20,15,159,35,34,44,87,94,28, +28,248,80,158,36,34,195,27,248,80,158,37,35,196,28,248,80,158,37,34,193, +248,80,158,37,36,248,80,158,38,35,194,11,11,12,250,22,175,8,11,6,8, +8,98,97,100,32,102,111,114,109,197,250,22,152,3,210,27,248,80,158,40,37, +248,80,158,41,35,200,27,251,80,158,44,38,197,11,9,11,27,249,22,2,80, +159,43,49,35,195,28,28,28,248,22,63,193,10,248,22,145,8,249,22,5,32, +0,89,162,8,36,35,35,9,222,192,195,248,80,158,42,40,195,11,249,22,65, +20,15,159,43,35,44,196,27,249,80,159,44,50,35,196,195,27,28,248,22,63, +195,9,27,27,248,22,59,198,27,248,22,59,198,28,248,22,63,193,9,27,249, +2,127,248,22,59,197,248,22,59,196,28,248,22,58,194,192,249,22,57,248,22, +58,197,194,28,248,22,58,196,192,249,22,57,248,22,58,199,194,27,251,80,158, +48,38,201,198,197,201,27,28,248,22,63,197,9,28,248,22,58,197,249,22,57, +250,22,152,3,248,22,58,203,248,22,153,3,248,80,158,52,42,248,22,58,204, +23,17,250,80,159,50,51,35,23,17,248,22,59,203,248,22,59,202,250,80,159, +48,51,35,23,15,248,22,59,201,248,22,59,200,28,248,80,158,46,43,199,248, +22,58,193,249,22,65,250,22,152,3,24,15,198,203,27,248,22,70,196,28,248, +22,129,3,193,20,15,159,48,36,44,28,249,22,188,2,194,35,248,22,58,196, +249,22,57,20,15,159,50,37,44,197,197,34,20,99,159,37,16,10,2,69,2, +66,30,2,21,69,115,116,120,45,110,117,108,108,63,10,2,65,30,2,24,72, +109,97,107,101,45,112,101,120,112,97,110,100,2,30,2,24,75,115,121,110,116, +97,120,45,109,97,112,112,105,110,103,63,8,30,2,24,72,110,111,45,101,108, +108,105,112,115,101,115,63,4,30,2,24,1,20,115,121,110,116,97,120,45,109, +97,112,112,105,110,103,45,100,101,112,116,104,6,30,2,24,1,21,115,121,110, +116,97,120,45,109,97,112,112,105,110,103,45,118,97,108,118,97,114,7,2,68, +16,4,33,129,2,33,135,2,33,137,2,33,138,2,11,96,83,158,34,16,2, +32,0,89,162,8,36,36,42,2,2,222,28,248,22,149,3,194,193,27,252,22, +152,3,198,199,198,11,198,27,249,22,161,3,196,2,61,28,192,250,22,161,3, +196,2,61,195,193,80,159,34,34,35,83,158,34,16,2,89,162,34,37,39,2, +3,223,0,247,248,22,8,89,162,8,32,35,40,9,226,1,4,3,2,20,14, +159,80,158,37,36,89,162,34,35,39,9,225,2,1,4,248,193,89,162,34,34, +41,9,225,3,2,4,28,248,22,129,11,193,248,22,133,11,193,251,22,175,8, +2,8,6,47,47,105,110,99,111,109,112,97,116,105,98,108,101,32,101,108,108, +105,112,115,105,115,32,109,97,116,99,104,32,99,111,117,110,116,115,32,102,111, +114,32,116,101,109,112,108,97,116,101,197,198,27,247,193,89,162,8,36,34,35, +9,223,0,192,80,159,34,35,35,83,158,34,16,2,65,100,117,109,109,121,80, +159,34,37,35,83,158,34,16,2,89,162,8,37,37,40,2,6,223,0,91,159, +35,11,20,12,95,35,248,193,195,89,162,8,64,35,46,2,10,226,1,4,3, +0,28,248,22,56,197,27,248,194,248,22,58,199,27,248,195,248,22,59,200,28, +28,249,22,147,8,195,248,22,58,201,249,22,147,8,194,248,22,59,201,11,198, +249,22,57,195,194,28,248,22,47,197,28,248,22,63,194,196,28,249,22,147,8, +198,248,22,58,196,248,22,58,195,27,248,22,59,195,27,248,22,59,197,28,248, +22,63,194,198,28,249,22,147,8,200,248,22,58,196,248,22,58,193,250,2,139, +2,201,248,22,59,197,248,22,59,196,28,248,22,149,3,197,27,248,194,248,22, +153,3,199,28,249,22,147,8,248,22,153,3,200,194,197,28,248,22,149,3,193, +192,27,252,22,152,3,203,198,203,11,203,27,249,22,161,3,201,2,61,28,192, +250,22,161,3,196,2,61,195,193,28,248,22,165,7,197,248,22,173,7,249,22, +2,195,248,22,172,7,200,28,248,22,113,197,248,22,111,248,194,248,22,114,199, +196,80,159,34,38,35,96,2,62,2,21,2,23,2,4,96,2,21,2,23,2, +24,2,62,0}; + EVAL_ONE_SIZED_STR((char *)expr, 6828); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,81,252,148,6,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,68,35,37,115,116, -120,108,111,99,1,29,2,11,11,10,10,10,34,80,158,34,34,20,99,159,34, -16,1,30,3,2,2,68,114,101,108,111,99,97,116,101,4,254,1,16,0,11, -11,16,1,2,4,35,11,16,3,72,115,121,110,116,97,120,45,99,97,115,101, -42,5,71,115,121,110,116,97,120,45,99,97,115,101,6,70,115,121,110,116,97, -120,47,108,111,99,7,16,3,11,11,11,16,3,2,5,2,6,2,7,34,37, -95,16,5,93,2,5,89,162,34,35,51,9,223,0,27,28,248,80,158,36,34, -195,249,80,158,37,35,248,80,158,38,36,197,27,248,80,158,39,37,198,28,248, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,55,0,0,0,1,0,0,3,0,12,0,23,0, +36,0,48,0,55,0,62,0,69,0,76,0,83,0,96,0,102,0,112,0,126, +0,141,0,153,0,158,0,162,0,172,0,174,0,179,0,182,0,189,0,199,0, +206,0,213,0,220,0,227,0,237,0,247,0,254,0,5,1,12,1,19,1,29, +1,39,1,48,1,62,1,74,1,86,1,98,1,112,1,126,1,156,1,162,1, +179,1,217,1,60,2,79,2,162,2,199,2,21,3,31,3,46,3,0,0,151, +6,0,0,29,11,11,68,114,101,108,111,99,97,116,101,70,115,121,110,116,97, +120,47,108,111,99,72,115,121,110,116,97,120,45,99,97,115,101,42,71,115,121, +110,116,97,120,45,99,97,115,101,3,1,4,103,52,56,56,3,1,4,103,52, +56,55,3,1,4,103,52,56,54,3,1,4,103,52,56,53,3,1,4,103,52, +56,52,6,10,10,98,97,100,32,115,121,110,116,97,120,65,35,37,115,116,120, +69,35,37,115,116,120,99,97,115,101,73,115,121,110,116,97,120,45,99,97,115, +101,42,42,74,35,37,100,101,102,105,110,101,45,101,116,45,97,108,71,35,37, +113,113,45,97,110,100,45,111,114,64,35,37,115,99,63,115,116,120,3,1,7, +101,110,118,50,57,55,48,61,95,64,115,116,120,101,62,107,108,66,99,108,97, +117,115,101,3,1,7,101,110,118,50,57,55,49,3,1,4,103,52,57,54,3, +1,4,103,52,57,53,3,1,4,103,52,57,52,3,1,4,103,52,57,51,3, +1,7,101,110,118,50,57,57,50,3,1,7,101,110,118,50,57,57,51,3,1, +4,103,53,48,48,3,1,4,103,53,48,50,3,1,4,103,53,48,49,66,115, +121,110,116,97,120,3,1,7,101,110,118,51,48,49,49,3,1,7,101,110,118, +51,48,49,50,68,35,37,107,101,114,110,101,108,30,2,12,69,115,116,120,45, +112,97,105,114,63,11,30,2,12,67,99,111,110,115,47,35,102,1,30,2,12, +67,115,116,120,45,99,97,114,5,30,2,12,67,115,116,120,45,99,100,114,6, +30,2,12,69,115,116,120,45,108,105,115,116,63,8,30,2,12,69,115,116,120, +45,62,108,105,115,116,4,30,2,13,1,24,97,112,112,108,121,45,112,97,116, +116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,0,95,8,193,11,16, +0,97,10,35,11,94,159,2,17,9,11,159,2,13,9,11,16,0,97,10,34, +11,95,159,2,15,9,11,159,2,13,9,11,159,2,16,9,11,16,8,2,3, +2,1,2,4,2,1,2,2,2,1,2,5,2,1,98,8,47,8,46,8,45, +16,4,11,11,2,18,3,1,7,101,110,118,50,57,54,50,16,12,11,11,3, +1,4,103,52,55,57,3,1,4,103,52,56,48,3,1,4,103,52,56,49,3, +1,4,103,52,56,50,3,1,4,103,52,56,51,2,19,2,19,2,19,2,19, +2,19,16,12,11,11,2,20,2,21,2,22,64,105,100,61,63,2,23,2,24, +2,24,2,24,2,24,2,24,18,158,164,10,2,14,2,6,11,2,7,2,8, +2,9,2,10,8,48,98,8,47,8,46,8,45,16,4,11,11,2,18,3,1, +7,101,110,118,50,57,56,53,16,10,11,11,3,1,4,103,52,56,57,3,1, +4,103,52,57,48,3,1,4,103,52,57,49,3,1,4,103,52,57,50,2,29, +2,29,2,29,2,29,16,10,11,11,2,20,2,21,2,22,2,23,2,30,2, +30,2,30,2,30,18,158,164,10,2,14,2,25,11,2,26,2,27,79,109,111, +100,117,108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,2,28,8,50, +98,8,47,8,46,8,45,16,4,11,11,2,18,3,1,7,101,110,118,51,48, +48,53,16,8,11,11,3,1,4,103,52,57,55,3,1,4,103,52,57,56,3, +1,4,103,52,57,57,2,35,2,35,2,35,16,8,11,11,2,20,63,108,111, +99,67,112,97,116,116,101,114,110,2,36,2,36,2,36,18,158,95,10,2,34, +2,31,8,52,18,158,96,10,2,2,2,32,94,2,34,2,33,8,52,159,34, +20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,96, +114,68,35,37,115,116,120,108,111,99,2,1,10,10,10,34,80,158,34,34,20, +99,159,34,16,1,30,2,1,2,2,193,16,0,11,11,16,1,2,2,35,11, +16,3,2,3,2,4,2,5,16,3,11,11,11,16,3,2,3,2,4,2,5, +34,37,95,16,5,93,2,4,89,162,34,35,51,9,223,0,27,28,248,80,158, +36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248,80,158,39,37,198, +28,248,80,158,39,34,193,249,80,158,40,35,248,80,158,41,36,195,27,248,80, +158,42,37,196,28,248,80,158,42,34,193,249,80,158,43,35,248,80,158,44,36, +195,27,248,80,158,45,37,196,28,248,80,158,45,34,193,249,80,158,46,35,248, +80,158,47,36,195,27,248,80,158,48,37,196,28,248,80,158,48,38,193,248,80, +158,48,39,193,11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,252,22,67,202,198, +199,200,201,254,80,158,48,40,20,15,159,48,34,41,21,97,2,6,2,7,2, +8,2,9,2,10,248,22,58,200,248,22,95,200,248,22,96,200,248,22,93,200, +248,22,84,200,250,22,175,8,11,2,11,197,34,20,99,159,34,16,7,2,38, +2,39,2,40,2,41,2,42,2,43,2,44,16,1,33,49,11,16,5,93,2, +5,89,162,34,35,49,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37, +35,248,80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193, +249,80,158,40,35,248,80,158,41,36,195,27,248,80,158,42,37,196,28,248,80, +158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27,248,80,158,45,37, +196,28,248,80,158,45,38,193,248,80,158,45,39,193,11,11,11,11,28,192,27, +248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197,27,251, +22,67,200,197,198,199,253,80,158,46,40,20,15,159,46,34,41,21,96,2,25, +2,26,2,27,2,28,248,22,58,199,248,22,94,199,248,22,93,199,248,22,84, +199,250,22,175,8,11,2,11,197,34,20,99,159,34,16,7,2,38,2,39,2, +40,2,41,2,42,2,43,2,44,16,1,33,51,11,16,5,93,2,3,89,162, +34,35,47,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80, +158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158, +40,35,248,80,158,41,36,195,27,248,80,158,42,37,196,28,248,80,158,42,34, +193,249,80,158,43,38,248,80,158,44,36,195,248,80,158,44,39,248,80,158,45, +37,196,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86, +196,28,28,248,22,47,248,22,153,3,194,248,80,158,39,40,249,22,167,13,195, +32,0,89,162,8,44,34,34,9,222,11,11,250,80,158,41,41,20,15,159,41, +34,42,21,93,2,31,195,27,249,22,67,195,196,251,80,158,43,41,20,15,159, +43,35,42,21,94,2,32,2,33,248,22,59,197,248,22,58,197,250,22,175,8, +11,2,11,197,34,20,99,159,34,16,8,2,38,2,39,2,40,2,41,30,2, +12,69,97,112,112,101,110,100,47,35,102,0,30,2,12,71,115,116,120,45,110, +117,108,108,47,35,102,9,30,2,17,75,115,121,110,116,97,120,45,109,97,112, +112,105,110,103,63,8,2,44,16,2,33,53,33,54,11,93,83,158,34,16,2, +32,0,89,162,8,36,36,42,2,2,222,28,248,22,158,3,193,252,22,152,3, +198,248,22,153,3,199,197,11,198,193,80,159,34,34,35,96,2,37,2,16,2, +13,2,15,95,2,37,2,13,2,17,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1816); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,55,0,0,0,1,0,0,6,0,9,0,26,0, +34,0,48,0,70,0,76,0,86,0,96,0,108,0,113,0,120,0,127,0,140, +0,147,0,154,0,159,0,168,0,178,0,183,0,198,0,205,0,217,0,227,0, +229,0,232,0,235,0,245,0,250,0,4,1,14,1,18,1,28,1,38,1,45, +1,54,1,70,1,76,1,108,1,155,1,167,1,223,1,235,1,6,2,55,2, +71,2,92,2,98,2,104,2,130,2,138,2,158,2,191,2,203,2,0,0,227, +8,0,0,65,98,101,103,105,110,29,11,11,76,119,105,116,104,45,115,121,110, +116,97,120,45,102,97,105,108,67,99,111,117,110,116,101,114,73,97,112,112,101, +110,100,45,110,117,109,98,101,114,1,20,103,101,110,101,114,97,116,101,45,116, +101,109,112,111,114,97,114,105,101,115,65,35,37,115,116,120,69,115,116,120,45, +108,105,115,116,63,69,115,116,120,45,62,108,105,115,116,71,119,105,116,104,45, +115,121,110,116,97,120,64,108,111,111,112,3,1,4,103,53,49,52,3,1,4, +103,53,49,51,72,113,117,111,116,101,45,115,121,110,116,97,120,3,1,4,103, +53,49,50,3,1,4,103,53,49,49,64,104,101,114,101,68,35,37,115,116,120, +108,111,99,69,35,37,115,116,120,99,97,115,101,64,35,37,115,99,74,35,37, +115,109,97,108,108,45,115,99,104,101,109,101,66,35,37,99,111,110,100,71,35, +37,113,113,45,97,110,100,45,111,114,3,1,7,101,110,118,51,48,51,50,61, +95,62,101,49,62,101,50,3,1,7,101,110,118,51,48,51,51,64,100,101,115, +116,3,1,7,101,110,118,51,48,53,50,3,1,7,101,110,118,51,48,53,51, +63,105,110,115,3,1,7,101,110,118,51,48,54,53,3,1,7,101,110,118,51, +48,54,56,6,4,4,126,97,126,115,68,35,37,107,101,114,110,101,108,16,4, +11,11,61,120,3,1,7,101,110,118,51,48,50,53,95,8,193,11,16,0,97, +10,35,11,97,159,2,22,9,11,159,2,23,9,11,159,2,20,9,11,159,2, +18,9,11,159,2,19,9,11,16,0,97,10,34,11,96,159,2,19,9,11,159, +2,21,9,11,159,2,18,9,11,159,2,7,9,11,16,10,2,3,2,2,2, +10,2,2,2,4,2,2,2,5,2,2,2,6,2,2,18,97,2,17,8,40, +8,39,8,38,8,37,98,8,40,8,39,8,38,8,37,16,8,11,11,3,1, +4,103,53,48,56,3,1,4,103,53,48,57,3,1,4,103,53,49,48,2,24, +2,24,2,24,16,8,11,11,2,25,2,26,2,27,2,28,2,28,2,28,18, +158,160,10,2,1,2,15,2,16,8,42,16,12,11,11,2,25,63,111,117,116, +62,105,110,2,26,2,27,2,31,2,31,2,31,2,31,2,31,16,12,11,11, +3,1,4,103,53,48,51,3,1,4,103,53,48,52,3,1,4,103,53,48,53, +3,1,4,103,53,48,54,3,1,4,103,53,48,55,2,30,2,30,2,30,2, +30,2,30,18,99,2,29,8,40,8,39,8,38,8,37,8,45,8,44,99,8, +40,8,39,8,38,8,37,8,45,8,44,16,4,11,11,2,32,2,33,18,158, +2,29,8,47,18,158,2,29,8,47,16,8,11,11,64,116,109,112,115,65,104, +101,114,101,115,64,111,117,116,115,2,34,2,34,2,34,16,4,11,11,2,32, +2,33,18,101,2,17,8,40,8,39,8,38,8,37,8,45,8,44,8,51,8, +50,101,8,40,8,39,8,38,8,37,8,45,8,44,8,51,8,50,16,4,11, +11,2,11,3,1,7,101,110,118,51,48,55,51,18,158,160,10,2,1,2,12, +2,13,8,53,159,34,20,99,159,34,16,1,20,24,2,1,16,0,83,158,40, +20,96,114,70,35,37,119,105,116,104,45,115,116,120,2,2,10,10,10,34,80, +158,34,34,20,99,159,35,16,7,30,2,2,2,3,193,30,2,2,2,4,193, +30,2,2,2,5,193,30,2,2,2,6,193,30,2,7,2,8,8,30,2,7, +2,9,4,30,2,7,71,105,100,101,110,116,105,102,105,101,114,63,2,16,0, +11,11,16,3,2,5,2,4,2,3,37,11,16,2,2,6,2,10,16,2,11, +11,16,2,2,6,2,10,35,36,93,16,5,93,2,10,87,94,83,158,34,16, +2,89,162,8,64,38,58,2,11,223,0,28,248,22,63,196,27,249,22,67,196, +197,251,80,158,39,42,20,15,159,39,40,48,21,94,2,12,2,13,248,22,58, +197,248,22,59,197,26,8,22,65,73,115,121,110,116,97,120,45,99,97,115,101, +42,42,11,10,248,22,58,204,9,79,109,111,100,117,108,101,45,105,100,101,110, +116,105,102,105,101,114,61,63,249,22,65,248,22,58,23,15,251,80,159,48,56, +35,23,15,23,16,248,22,59,23,18,248,22,59,23,19,249,22,65,65,95,101, +108,115,101,249,22,65,2,3,249,22,65,2,14,250,22,152,3,11,248,22,151, +3,248,22,58,23,23,248,22,58,23,22,80,159,34,56,35,89,162,34,35,59, +9,223,0,27,249,22,152,3,20,15,159,37,34,48,196,27,28,248,80,158,37, +34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28, +248,80,158,40,34,193,28,248,80,158,40,38,248,80,158,41,36,194,27,248,80, +158,41,37,194,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36, +195,27,248,80,158,44,37,196,28,248,80,158,44,39,193,248,80,158,44,40,193, +11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86, +196,249,80,158,41,41,200,27,249,22,67,198,197,251,80,158,46,42,20,15,159, +46,35,48,21,94,2,15,2,16,248,22,58,197,248,22,59,197,27,28,248,80, +158,38,34,195,249,80,158,39,35,248,80,158,40,36,197,27,248,80,158,41,37, +198,28,248,80,158,41,34,193,249,80,158,42,43,27,248,80,158,44,36,196,28, +248,80,158,44,39,193,248,22,8,89,162,34,35,41,9,224,10,1,27,249,22, +2,89,162,34,35,46,9,224,4,5,249,80,158,37,44,28,248,80,158,38,34, +197,249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248, +80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,38, +248,80,158,44,37,196,11,11,194,248,80,158,39,40,196,28,248,22,63,193,21, +94,9,9,248,80,158,37,45,193,11,27,248,80,158,44,37,196,28,248,80,158, +44,34,193,249,80,158,45,35,248,80,158,46,36,195,27,248,80,158,47,37,196, +28,248,80,158,47,39,193,248,80,158,47,40,193,11,11,11,11,28,192,27,248, +22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22, +95,198,27,248,22,159,3,249,80,158,46,46,20,15,159,46,36,48,198,87,94, +251,80,158,47,47,201,206,249,80,158,49,46,20,15,159,49,37,48,202,9,27, +249,22,2,32,0,89,162,8,36,35,36,9,222,248,22,54,65,119,115,116,109, +112,195,27,249,22,2,32,0,89,162,8,36,35,38,9,222,250,22,152,3,195, +2,17,195,196,27,248,22,159,3,249,80,158,49,46,20,15,159,49,38,48,202, +250,22,152,3,20,15,159,49,39,48,250,22,65,63,108,101,116,251,22,2,32, +0,89,162,8,36,37,44,9,222,249,22,65,194,250,22,65,1,20,100,97,116, +117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,249,22,65,2, +14,200,199,204,203,205,251,80,159,56,56,35,23,15,206,204,202,23,16,250,22, +175,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,34,20,99,159, +35,16,14,30,2,7,69,115,116,120,45,112,97,105,114,63,11,30,2,7,67, +99,111,110,115,47,35,102,1,30,2,7,67,115,116,120,45,99,97,114,5,30, +2,7,67,115,116,120,45,99,100,114,6,30,2,7,71,115,116,120,45,110,117, +108,108,47,35,102,9,30,2,7,2,8,8,30,2,7,2,9,4,30,2,18, +68,114,101,108,111,99,97,116,101,0,30,2,19,1,24,97,112,112,108,121,45, +112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,0,30,2, +7,69,97,112,112,101,110,100,47,35,102,0,30,2,7,73,115,116,120,45,99, +104,101,99,107,47,101,115,99,7,30,2,7,70,115,116,120,45,114,111,116,97, +116,101,12,30,2,19,1,26,100,97,116,117,109,45,62,115,121,110,116,97,120, +45,111,98,106,101,99,116,47,115,104,97,112,101,2,30,2,20,74,103,101,116, +45,109,97,116,99,104,45,118,97,114,115,0,16,7,33,41,33,43,33,46,33, +48,33,49,33,52,33,54,11,97,83,158,34,16,2,89,162,34,35,44,9,223, +0,248,247,22,173,13,28,248,22,47,195,249,22,152,3,11,87,94,83,160,36, +11,80,158,37,35,248,22,177,2,80,158,38,35,248,22,48,250,22,191,6,2, +35,200,80,158,41,35,28,248,22,143,6,195,249,22,152,3,11,87,94,83,160, +36,11,80,158,37,35,248,22,177,2,80,158,38,35,248,22,48,250,22,191,6, +2,35,200,80,158,41,35,28,248,80,158,36,40,195,249,22,152,3,11,27,248, +22,153,3,198,87,94,83,160,36,11,80,158,38,35,248,22,177,2,80,158,39, +35,248,22,48,250,22,191,6,2,35,196,80,158,42,35,249,22,152,3,11,87, +94,83,160,36,11,80,158,37,35,248,22,177,2,80,158,38,35,248,22,48,250, +22,191,6,2,35,64,116,101,109,112,80,158,41,35,80,159,34,41,35,83,158, +34,16,2,32,0,89,162,34,35,38,2,3,222,250,22,175,8,2,10,6,20, +20,98,105,110,100,105,110,103,32,109,97,116,99,104,32,102,97,105,108,101,100, +195,80,159,34,34,35,83,158,34,16,2,34,80,158,34,35,83,158,34,16,2, +89,162,34,35,40,2,5,223,0,87,94,83,160,36,11,80,158,34,35,248,22, +177,2,80,158,35,35,248,22,48,250,22,191,6,2,35,197,80,158,38,35,80, +159,34,36,35,83,158,34,16,2,89,162,34,35,39,2,6,223,0,87,94,28, +248,80,158,35,38,194,12,250,22,176,8,2,6,6,11,11,115,121,110,116,97, +120,32,112,97,105,114,196,27,248,80,158,36,39,195,249,22,2,80,159,37,41, +35,194,80,159,34,37,35,97,2,36,2,7,2,18,2,21,2,19,98,2,36, +2,19,2,18,2,20,2,23,2,22,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2404); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,185,0,0,0,1,0,0,3,0,31,0,37,0, +49,0,71,0,87,0,92,0,106,0,122,0,136,0,141,0,152,0,164,0,171, +0,178,0,189,0,202,0,210,0,221,0,228,0,240,0,253,0,2,1,6,1, +19,1,23,1,30,1,33,1,48,1,59,1,71,1,86,1,95,1,105,1,112, +1,119,1,126,1,133,1,140,1,164,1,167,1,171,1,176,1,182,1,187,1, +200,1,205,1,220,1,224,1,234,1,236,1,246,1,248,1,255,1,6,2,13, +2,20,2,27,2,37,2,47,2,54,2,61,2,68,2,75,2,82,2,89,2, +96,2,103,2,110,2,114,2,121,2,146,2,159,2,169,2,179,2,184,2,190, +2,197,2,204,2,211,2,218,2,225,2,235,2,245,2,252,2,3,3,10,3, +17,3,24,3,31,3,38,3,40,3,54,3,56,3,76,3,82,3,90,3,99, +3,106,3,113,3,120,3,127,3,134,3,144,3,152,3,162,3,169,3,176,3, +183,3,190,3,197,3,220,3,230,3,240,3,249,3,7,4,19,4,31,4,43, +4,57,4,71,4,89,4,103,4,119,4,134,4,147,4,173,4,203,4,219,4, +225,4,1,5,61,5,77,5,163,5,179,5,190,5,223,5,239,5,255,5,85, +6,101,6,113,6,146,6,178,6,194,6,215,6,231,6,247,6,15,7,64,7, +83,7,90,7,97,7,153,7,175,7,186,7,200,7,214,7,247,7,58,8,81, +8,97,8,113,8,199,8,214,8,226,8,3,9,9,9,25,9,86,9,93,9, +100,9,107,9,205,9,231,9,250,9,27,10,94,10,114,10,200,10,207,10,236, +10,252,10,29,11,0,0,208,25,0,0,29,11,11,1,26,99,104,101,99,107, +45,100,117,112,108,105,99,97,116,101,45,105,100,101,110,116,105,102,105,101,114, +65,35,37,115,116,120,71,105,100,101,110,116,105,102,105,101,114,63,1,20,103, +101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115,75,108, +101,116,114,101,99,45,115,121,110,116,97,120,101,115,64,108,101,116,42,73,100, +101,102,105,110,101,45,115,116,114,117,99,116,75,115,121,110,116,97,120,45,105, +100,45,114,117,108,101,115,73,108,101,116,114,101,99,45,115,121,110,116,97,120, +64,119,104,101,110,70,113,117,97,115,105,113,117,111,116,101,71,115,121,110,116, +97,120,45,99,97,115,101,66,117,110,108,101,115,115,66,108,101,116,47,101,99, +70,108,101,116,45,115,121,110,116,97,120,72,115,121,110,116,97,120,45,114,117, +108,101,115,67,45,100,101,102,105,110,101,70,115,121,110,116,97,120,47,108,111, +99,66,115,121,110,116,97,120,71,119,105,116,104,45,115,121,110,116,97,120,72, +115,121,110,116,97,120,45,99,97,115,101,42,64,99,111,110,100,63,97,110,100, +72,108,101,116,45,115,121,110,116,97,120,101,115,63,108,101,116,66,108,101,116, +114,101,99,62,111,114,74,45,100,101,102,105,110,101,45,115,121,110,116,97,120, +70,35,37,119,105,116,104,45,115,116,120,71,35,37,113,113,45,97,110,100,45, +111,114,74,35,37,100,101,102,105,110,101,45,101,116,45,97,108,68,35,37,115, +116,120,108,111,99,69,35,37,115,116,120,99,97,115,101,3,1,4,103,53,50, +49,3,1,4,103,53,50,48,3,1,4,103,53,50,52,3,1,4,103,53,50, +51,3,1,4,103,53,50,50,1,22,108,101,116,114,101,99,45,115,121,110,116, +97,120,101,115,43,118,97,108,117,101,115,62,105,100,63,46,46,46,64,101,120, +112,114,65,98,111,100,121,49,64,98,111,100,121,6,10,10,98,97,100,32,115, +121,110,116,97,120,64,104,101,114,101,74,35,37,115,109,97,108,108,45,115,99, +104,101,109,101,63,115,116,120,3,1,7,101,110,118,51,49,48,48,61,95,3, +1,7,101,110,118,51,49,48,49,61,114,3,1,4,103,53,51,48,3,1,4, +103,53,51,49,3,1,4,103,53,51,52,3,1,4,103,53,51,51,3,1,4, +103,53,51,50,3,1,7,101,110,118,51,49,51,48,3,1,7,101,110,118,51, +49,51,49,3,1,4,103,53,52,55,3,1,4,103,53,52,54,3,1,4,103, +53,52,53,3,1,4,103,53,52,52,3,1,4,103,53,52,51,3,1,4,103, +53,53,49,3,1,4,103,53,53,48,3,1,4,103,53,52,57,3,1,4,103, +53,52,56,63,116,109,112,66,118,97,108,117,101,115,1,23,109,97,107,101,45, +114,101,110,97,109,101,45,116,114,97,110,115,102,111,114,109,101,114,72,113,117, +111,116,101,45,115,121,110,116,97,120,3,1,7,101,110,118,51,49,54,49,3, +1,7,101,110,118,51,49,54,50,64,100,101,115,116,65,95,101,108,115,101,3, +1,4,103,53,53,55,3,1,4,103,53,53,56,3,1,4,103,53,54,49,3, +1,4,103,53,54,48,3,1,4,103,53,53,57,3,1,7,101,110,118,51,50, +49,51,3,1,7,101,110,118,51,50,49,52,3,1,4,103,53,55,49,3,1, +4,103,53,55,48,3,1,4,103,53,55,50,3,1,4,103,53,55,53,3,1, +4,103,53,55,52,3,1,4,103,53,55,51,66,108,97,109,98,100,97,61,120, +73,115,121,110,116,97,120,45,99,97,115,101,42,42,61,107,79,109,111,100,117, +108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,65,100,117,109,109,121, +67,112,97,116,116,101,114,110,68,116,101,109,112,108,97,116,101,3,1,4,103, +53,54,50,3,1,4,103,53,54,51,3,1,4,103,53,54,52,3,1,4,103, +53,54,53,3,1,4,103,53,54,54,3,1,7,101,110,118,51,50,52,55,67, +107,101,121,119,111,114,100,3,1,7,101,110,118,51,50,52,56,3,1,4,103, +53,56,49,3,1,4,103,53,56,48,3,1,4,103,53,56,52,3,1,4,103, +53,56,51,3,1,4,103,53,56,50,1,21,109,97,107,101,45,115,101,116,33, +45,116,114,97,110,115,102,111,114,109,101,114,3,1,7,101,110,118,51,50,57, +53,3,1,7,101,110,118,51,50,57,54,68,35,37,107,101,114,110,101,108,30, +2,3,69,115,116,120,45,112,97,105,114,63,11,30,2,3,67,99,111,110,115, +47,35,102,1,30,2,3,67,115,116,120,45,99,97,114,5,30,2,3,67,115, +116,120,45,99,100,114,6,30,2,3,69,97,112,112,101,110,100,47,35,102,0, +30,2,3,69,115,116,120,45,108,105,115,116,63,8,30,2,3,73,115,116,120, +45,99,104,101,99,107,47,101,115,99,7,30,2,3,69,115,116,120,45,62,108, +105,115,116,4,30,2,3,71,115,116,120,45,110,117,108,108,47,35,102,9,30, +2,3,70,115,116,120,45,114,111,116,97,116,101,12,30,2,33,68,114,101,108, +111,99,97,116,101,0,30,2,34,1,20,99,97,116,99,104,45,101,108,108,105, +112,115,105,115,45,101,114,114,111,114,1,30,2,34,1,24,97,112,112,108,121, +45,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,0,16, +4,11,11,2,49,3,1,7,101,110,118,51,48,56,55,95,8,193,11,16,0, +97,10,35,11,97,159,2,33,9,11,159,2,30,9,11,159,2,34,9,11,159, +2,3,9,11,159,2,48,9,11,16,0,97,10,34,11,97,159,2,33,9,11, +159,2,30,9,11,159,2,34,9,11,159,2,3,9,11,159,2,48,9,11,16, +14,2,6,2,1,2,16,2,1,2,17,2,1,2,9,2,1,2,10,2,1, +2,2,2,1,2,25,2,1,18,97,2,47,8,132,2,8,131,2,8,130,2, +8,129,2,98,8,132,2,8,131,2,8,130,2,8,129,2,16,12,11,11,3, +1,4,103,53,49,53,3,1,4,103,53,49,54,3,1,4,103,53,49,55,3, +1,4,103,53,49,56,3,1,4,103,53,49,57,2,50,2,50,2,50,2,50, +2,50,16,12,11,11,2,51,2,41,2,43,2,44,2,45,2,52,2,52,2, +52,2,52,2,52,18,158,162,10,2,40,2,37,9,2,38,2,39,8,134,2, +18,158,95,10,2,35,2,36,8,134,2,18,16,2,95,2,42,93,8,159,42, +16,4,11,11,2,53,3,1,7,101,110,118,51,49,49,51,95,9,8,159,42, +2,34,16,4,11,11,2,49,3,1,7,101,110,118,51,49,49,56,18,97,2, +47,8,132,2,8,131,2,8,130,2,8,138,2,98,8,132,2,8,131,2,8, +130,2,8,138,2,16,12,11,11,3,1,4,103,53,50,53,3,1,4,103,53, +50,54,3,1,4,103,53,50,55,3,1,4,103,53,50,56,3,1,4,103,53, +50,57,2,59,2,59,2,59,2,59,2,59,16,12,11,11,2,51,2,41,2, +43,2,44,2,45,2,60,2,60,2,60,2,60,2,60,18,158,162,10,2,40, +2,56,9,2,57,2,58,8,140,2,18,158,95,10,93,2,54,2,55,8,140, +2,18,16,2,95,2,42,93,8,179,42,16,4,11,11,2,53,3,1,7,101, +110,118,51,49,52,51,95,9,8,179,42,2,34,30,2,34,1,26,100,97,116, +117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97, +112,101,2,30,2,3,71,115,116,120,45,114,111,116,97,116,101,42,13,30,2, +30,76,119,105,116,104,45,115,121,110,116,97,120,45,102,97,105,108,3,16,4, +11,11,2,49,3,1,7,101,110,118,51,49,52,56,18,97,2,47,8,132,2, +8,131,2,8,130,2,8,147,2,16,12,11,11,2,51,2,41,2,43,2,44, +2,45,2,75,2,75,2,75,2,75,2,75,16,12,11,11,3,1,4,103,53, +51,53,3,1,4,103,53,51,54,3,1,4,103,53,51,55,3,1,4,103,53, +51,56,3,1,4,103,53,51,57,2,74,2,74,2,74,2,74,2,74,98,8, +132,2,8,131,2,8,130,2,8,147,2,8,150,2,8,149,2,18,158,2,47, +8,151,2,18,158,2,76,8,151,2,100,8,132,2,8,131,2,8,130,2,8, +147,2,8,150,2,8,149,2,16,4,11,11,3,1,4,103,53,52,50,3,1, +7,101,110,118,51,49,56,50,16,4,11,11,2,70,3,1,7,101,110,118,51, +49,56,51,18,158,97,10,2,40,2,66,9,161,2,40,2,67,9,2,68,2, +69,8,154,2,18,158,95,10,2,64,2,65,8,154,2,18,158,95,10,2,61, +158,2,71,2,62,8,154,2,18,158,95,10,2,72,94,2,73,2,63,8,154, +2,18,16,2,95,2,42,93,8,146,43,16,4,11,11,2,53,3,1,7,101, +110,118,51,49,56,55,95,9,8,146,43,2,34,96,93,8,134,43,16,4,11, +11,3,1,8,119,115,116,109,112,53,52,48,3,1,7,101,110,118,51,49,55, +52,16,4,11,11,3,1,4,103,53,52,49,3,1,7,101,110,118,51,49,57, +54,16,4,11,11,2,77,3,1,7,101,110,118,51,49,57,55,18,16,2,158, +95,10,94,2,70,2,42,2,42,8,160,2,95,9,8,134,43,2,30,16,4, +11,11,2,49,3,1,7,101,110,118,51,50,48,49,18,97,2,47,8,132,2, +8,131,2,8,130,2,8,162,2,98,8,132,2,8,131,2,8,130,2,8,162, +2,16,12,11,11,3,1,4,103,53,53,50,3,1,4,103,53,53,51,3,1, +4,103,53,53,52,3,1,4,103,53,53,53,3,1,4,103,53,53,54,2,83, +2,83,2,83,2,83,2,83,16,12,11,11,2,51,2,41,2,43,2,44,2, +45,2,84,2,84,2,84,2,84,2,84,18,158,161,10,2,25,2,80,2,81, +2,82,8,164,2,18,158,95,10,93,2,78,2,79,8,164,2,18,16,2,95, +2,42,93,8,171,43,16,4,11,11,2,53,3,1,7,101,110,118,51,50,50, +54,95,9,8,171,43,2,34,30,2,3,2,4,2,16,4,11,11,2,49,3, +1,7,101,110,118,51,50,51,49,98,8,132,2,8,131,2,8,130,2,8,169, +2,16,12,11,11,2,99,2,100,2,101,2,102,2,103,2,104,2,104,2,104, +2,104,2,104,16,12,11,11,2,51,2,94,2,105,2,97,2,98,2,106,2, +106,2,106,2,106,2,106,18,158,2,76,8,170,2,18,158,2,47,8,170,2, +18,158,2,76,8,170,2,100,8,132,2,8,131,2,8,130,2,8,169,2,16, +12,11,11,2,99,2,100,2,101,2,102,2,103,2,104,2,104,2,104,2,104, +2,104,16,12,11,11,2,51,2,94,2,105,2,97,2,98,2,106,2,106,2, +106,2,106,2,106,16,4,11,11,3,1,4,103,53,54,57,3,1,7,101,110, +118,51,50,54,55,16,4,11,11,2,96,3,1,7,101,110,118,51,50,54,56, +18,158,96,10,2,91,93,2,92,163,2,93,2,88,10,2,92,2,89,2,95, +2,90,8,174,2,18,158,95,10,158,2,85,2,86,95,2,19,2,92,2,87, +8,174,2,18,16,2,95,2,42,93,8,138,44,16,4,11,11,2,53,3,1, +7,101,110,118,51,50,55,50,95,9,8,138,44,2,34,96,93,8,129,44,16, +4,11,11,3,1,8,119,115,116,109,112,53,54,55,3,1,7,101,110,118,51, +50,54,48,16,4,11,11,3,1,4,103,53,54,56,3,1,7,101,110,118,51, +50,55,55,16,4,11,11,2,77,3,1,7,101,110,118,51,50,55,56,18,16, +2,158,95,10,2,96,2,42,8,178,2,95,9,8,129,44,2,30,98,8,132, +2,8,131,2,8,130,2,16,4,11,11,2,92,3,1,7,101,110,118,51,50, +56,50,16,10,11,11,3,1,4,103,53,55,54,3,1,4,103,53,55,55,3, +1,4,103,53,55,56,3,1,4,103,53,55,57,2,113,2,113,2,113,2,113, +16,10,11,11,2,51,2,94,2,97,2,98,2,114,2,114,2,114,2,114,18, +158,2,76,8,180,2,18,158,95,10,2,112,95,2,91,93,2,92,163,2,93, +2,109,10,2,92,2,110,2,95,2,111,8,180,2,18,158,95,10,2,107,95, +2,19,2,92,2,108,8,180,2,18,16,2,95,2,42,93,8,162,44,16,4, +11,11,2,53,3,1,7,101,110,118,51,51,48,54,95,9,8,162,44,2,34, +159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40, +20,96,114,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,2, +1,10,10,10,34,80,158,34,34,20,99,159,34,16,2,30,2,1,2,2,193, +30,2,3,2,4,2,16,0,11,11,16,0,34,11,16,26,2,2,2,5,2, +6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16, +2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,26,2, +27,2,28,2,29,16,26,11,2,30,11,2,31,2,32,11,11,2,32,2,31, +2,33,2,32,2,32,11,11,2,32,2,33,2,34,2,30,2,33,66,35,37, +99,111,110,100,2,31,11,2,31,2,31,2,31,2,32,16,26,2,2,2,5, +2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2, +16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,26, +2,27,2,28,2,29,36,8,26,98,16,5,93,2,6,87,94,83,158,34,16, +2,89,162,35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,36,47,21, +94,2,35,2,36,248,22,58,198,248,22,84,198,80,159,34,52,35,89,162,34, +35,50,9,223,0,27,249,22,152,3,20,15,159,37,34,47,196,27,28,248,80, +158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37, +197,28,248,80,158,40,34,193,249,80,158,41,38,27,248,80,158,43,36,196,28, +248,80,158,43,39,193,248,22,8,89,162,34,35,41,9,224,9,1,27,249,22, +2,89,162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34, +197,249,80,158,39,38,27,248,80,158,41,36,200,28,248,80,158,41,39,193,248, +22,65,248,80,158,42,41,194,11,27,248,80,158,41,37,200,28,248,80,158,41, +34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,42,248,80,158, +44,37,196,11,11,194,248,80,158,39,41,196,28,248,22,63,193,21,94,9,9, +248,80,158,37,43,193,11,27,248,80,158,43,37,196,28,248,80,158,43,34,193, +249,80,158,44,35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80, +158,46,39,193,248,80,158,46,41,193,11,11,11,11,28,192,27,248,22,58,194, +27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249, +80,158,43,44,202,27,251,22,67,202,199,201,200,250,80,158,47,45,89,162,34, +34,45,9,224,13,3,252,80,158,40,46,20,15,159,40,35,47,21,95,2,37, +2,38,2,39,250,22,2,80,159,43,52,35,248,22,58,201,248,22,93,201,248, +22,94,198,248,22,84,198,21,98,2,40,94,94,94,2,41,2,42,2,43,2, +42,9,2,44,2,45,2,42,20,15,159,47,37,47,250,22,175,8,11,2,46, +196,34,20,99,159,35,16,13,2,116,2,117,2,118,2,119,2,120,2,121,2, +122,2,123,2,124,2,125,2,126,2,127,2,128,2,16,4,33,133,2,33,135, +2,33,136,2,33,137,2,11,16,5,93,2,10,87,94,83,158,34,16,2,89, +162,35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,36,47,21,94,2, +54,2,55,248,22,58,198,248,22,84,198,80,159,34,52,35,89,162,34,35,50, +9,223,0,27,249,22,152,3,20,15,159,37,34,47,196,27,28,248,80,158,37, +34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28, +248,80,158,40,34,193,249,80,158,41,38,27,248,80,158,43,36,196,28,248,80, +158,43,39,193,248,22,8,89,162,34,35,41,9,224,9,1,27,249,22,2,89, +162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249, +80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158, +41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,41,248,80, +158,44,37,196,11,11,194,248,80,158,39,42,196,28,248,22,63,193,21,94,9, +9,248,80,158,37,43,193,11,27,248,80,158,43,37,196,28,248,80,158,43,34, +193,249,80,158,44,35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248, +80,158,46,39,193,248,80,158,46,42,193,11,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, +249,80,158,43,44,202,27,251,22,67,202,199,201,200,250,80,158,47,45,89,162, +34,34,45,9,224,13,3,252,80,158,40,46,20,15,159,40,35,47,21,95,2, +56,2,57,2,58,250,22,2,80,159,43,52,35,248,22,58,201,248,22,93,201, +248,22,94,198,248,22,84,198,21,98,2,40,94,94,93,2,41,2,43,2,42, +9,2,44,2,45,2,42,20,15,159,47,37,47,250,22,175,8,11,2,46,196, +34,20,99,159,35,16,13,2,116,2,117,2,118,2,119,2,120,2,121,2,122, +2,124,2,123,2,125,2,126,2,127,2,128,2,16,4,33,139,2,33,141,2, +33,142,2,33,143,2,11,16,5,93,2,25,87,96,83,158,34,16,2,89,162, +35,35,43,9,223,0,251,80,158,38,49,20,15,159,38,39,51,21,94,2,61, +2,62,248,22,58,198,249,22,2,80,159,40,8,28,35,248,22,84,200,80,159, +34,8,29,35,83,158,34,16,2,89,162,35,35,40,9,223,0,250,80,158,37, +49,20,15,159,37,40,51,21,93,2,63,248,22,58,197,80,159,34,8,28,35, +83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,49,20,15,159, +38,38,51,21,94,2,64,2,65,248,22,58,198,248,22,84,198,80,159,34,8, +27,35,89,162,34,35,53,9,223,0,27,249,22,152,3,20,15,159,37,34,51, +196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27, +248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,38,27,248,80, +158,43,36,196,28,248,80,158,43,39,193,248,22,8,89,162,34,35,41,9,224, +9,1,27,249,22,2,89,162,34,35,46,9,224,4,5,249,80,158,37,40,28, +248,80,158,38,34,197,249,80,158,39,38,27,248,80,158,41,36,200,28,248,80, +158,41,39,193,248,22,65,248,80,158,42,41,194,11,27,248,80,158,41,37,200, +28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158, +43,42,248,80,158,44,37,196,11,11,194,248,80,158,39,41,196,28,248,22,63, +193,21,94,9,9,248,80,158,37,43,193,11,27,248,80,158,43,37,196,28,248, +80,158,43,34,193,249,80,158,44,35,248,80,158,45,36,195,27,248,80,158,46, +37,196,28,248,80,158,46,39,193,248,80,158,46,41,193,11,11,11,11,28,192, +27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27, +248,22,95,198,27,249,22,152,3,20,15,159,44,35,51,249,22,2,80,158,46, +44,248,22,159,3,249,80,158,49,45,20,15,159,49,36,51,203,27,28,248,80, +158,44,39,194,248,22,8,89,162,34,35,41,9,224,10,2,27,249,22,2,89, +162,34,35,41,9,224,4,5,249,80,158,37,40,28,248,80,158,38,39,197,248, +22,65,248,80,158,39,41,198,11,194,248,80,158,39,41,196,28,248,22,63,193, +9,248,80,158,37,46,193,11,28,192,249,80,158,45,47,204,27,252,22,67,200, +205,202,204,203,250,80,158,49,48,89,162,34,34,46,9,224,15,3,253,80,158, +41,49,20,15,159,41,37,51,21,96,2,66,2,67,2,68,2,69,250,22,2, +80,159,44,8,27,35,248,22,58,202,248,22,96,202,250,22,2,80,159,44,8, +29,35,248,22,84,202,248,22,58,202,248,22,95,199,248,22,93,199,21,96,2, +40,94,94,94,2,70,2,42,2,43,2,42,9,98,2,40,94,94,94,2,41, +2,42,95,2,71,94,2,72,94,2,73,2,70,2,42,2,42,9,2,44,2, +45,2,42,20,15,159,49,41,51,248,80,158,44,50,20,15,159,44,42,51,250, +22,175,8,11,2,46,196,34,20,99,159,37,16,17,2,116,2,117,2,118,2, +119,2,120,2,121,2,122,2,123,2,124,2,125,30,2,30,2,5,0,2,144, +2,2,145,2,2,126,2,127,2,128,2,2,146,2,16,9,33,148,2,33,152, +2,33,153,2,33,155,2,33,156,2,33,157,2,33,158,2,33,159,2,33,161, +2,11,16,5,93,2,16,87,94,83,158,34,16,2,89,162,35,35,41,9,223, +0,251,80,158,38,46,20,15,159,38,36,47,21,94,2,78,2,79,248,22,58, +198,248,22,84,198,80,159,34,52,35,89,162,34,35,50,9,223,0,27,249,22, +152,3,20,15,159,37,34,47,196,27,28,248,80,158,37,34,194,249,80,158,38, +35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193, +249,80,158,41,38,27,248,80,158,43,36,196,28,248,80,158,43,39,193,248,22, +8,89,162,34,35,41,9,224,9,1,27,249,22,2,89,162,34,35,46,9,224, +4,5,249,80,158,37,40,28,248,80,158,38,34,197,249,80,158,39,35,248,80, +158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158, +42,35,248,80,158,43,36,195,248,80,158,43,41,248,80,158,44,37,196,11,11, +194,248,80,158,39,42,196,28,248,22,63,193,21,94,9,9,248,80,158,37,43, +193,11,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,35, +248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,39,193,248, +80,158,46,42,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249,80,158,43,44,202, +27,251,22,67,202,199,201,200,250,80,158,47,45,89,162,34,34,45,9,224,13, +3,252,80,158,40,46,20,15,159,40,35,47,21,95,2,80,2,81,2,82,250, +22,2,80,159,43,52,35,248,22,58,201,248,22,93,201,248,22,94,198,248,22, +84,198,21,97,2,25,94,94,93,2,41,2,43,2,42,2,44,2,45,2,42, +20,15,159,47,37,47,250,22,175,8,11,2,46,196,34,20,99,159,35,16,13, +2,116,2,117,2,118,2,119,2,120,2,121,2,122,2,124,2,123,2,125,2, +126,2,127,2,128,2,16,4,33,163,2,33,165,2,33,166,2,33,167,2,11, +16,5,93,2,17,87,94,83,158,34,16,2,89,162,35,35,42,9,223,0,252, +80,158,39,48,20,15,159,39,38,50,21,95,2,85,2,86,2,87,248,22,58, +199,248,22,84,199,248,22,93,199,80,159,34,58,35,89,162,34,35,52,9,223, +0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27, +248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,38,27,248,80, +158,42,36,196,28,248,80,158,42,39,193,248,22,65,248,80,158,43,40,194,11, +27,248,80,158,42,37,196,28,248,80,158,42,39,193,248,22,8,89,162,34,35, +41,9,224,8,1,27,249,22,2,89,162,34,35,49,9,224,4,5,249,80,158, +37,41,28,248,80,158,38,34,197,249,80,158,39,38,27,248,80,158,41,36,200, +28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27,248,80, +158,44,37,196,248,22,65,250,22,152,3,199,196,199,11,27,248,80,158,41,37, +200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80, +158,43,42,248,80,158,44,37,196,11,11,194,248,80,158,39,40,196,28,248,22, +63,193,21,94,9,9,248,80,158,37,43,193,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, +28,249,22,4,80,158,42,44,248,22,159,3,249,80,158,45,45,20,15,159,45, +34,50,200,27,249,22,152,3,20,15,159,43,35,50,249,22,2,89,162,8,36, +35,41,9,224,11,12,87,94,28,248,80,158,36,44,195,12,251,22,175,8,11, +6,59,59,112,97,116,116,101,114,110,32,109,117,115,116,32,115,116,97,114,116, +32,119,105,116,104,32,97,110,32,105,100,101,110,116,105,102,105,101,114,44,32, +102,111,117,110,100,32,115,111,109,101,116,104,105,110,103,32,101,108,115,101,196, +198,248,22,49,248,22,50,248,22,153,3,197,248,22,159,3,249,80,158,48,45, +20,15,159,48,36,50,202,27,28,248,80,158,43,39,194,248,80,158,43,40,194, +11,28,192,249,80,158,44,46,203,27,252,22,67,205,200,206,202,203,250,80,158, +48,47,89,162,34,34,46,9,224,14,3,252,80,158,40,48,20,15,159,40,37, +50,21,95,2,88,2,89,2,90,248,22,93,198,248,22,58,198,251,22,2,80, +159,44,58,35,248,22,84,202,248,22,95,202,248,22,96,202,21,95,2,91,93, +2,92,100,2,93,2,51,10,2,92,94,2,94,2,42,2,95,94,158,2,96, +2,97,95,2,19,2,92,2,98,2,42,20,15,159,48,39,50,248,80,158,43, +49,20,15,159,43,40,50,250,22,175,8,11,2,46,202,250,22,175,8,11,2, +46,197,34,20,99,159,35,16,16,2,116,2,117,2,118,2,119,2,120,2,121, +2,123,2,122,2,124,2,145,2,2,168,2,2,144,2,2,126,2,127,2,128, +2,2,146,2,16,7,33,171,2,33,172,2,33,173,2,33,175,2,33,176,2, +33,177,2,33,179,2,11,16,5,93,2,9,87,94,83,158,34,16,2,89,162, +35,35,41,9,223,0,251,80,158,38,48,20,15,159,38,36,49,21,94,2,107, +2,108,248,22,58,198,248,22,84,198,80,159,34,54,35,89,162,34,35,48,9, +223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197, +27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,38,27,248, +80,158,42,36,196,28,248,80,158,42,39,193,248,22,65,248,80,158,43,40,194, +11,27,248,80,158,42,37,196,28,248,80,158,42,39,193,248,22,8,89,162,34, +35,41,9,224,8,1,27,249,22,2,89,162,34,35,46,9,224,4,5,249,80, +158,37,41,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158,40,36,199, +27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35,248,80, +158,43,36,195,248,80,158,43,42,248,80,158,44,37,196,11,11,194,248,80,158, +39,40,196,28,248,22,63,193,21,93,9,248,80,158,37,43,193,11,11,11,28, +192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197, +28,249,22,4,80,158,41,44,248,22,159,3,249,80,158,44,45,20,15,159,44, +34,49,199,249,80,158,41,46,200,27,251,22,67,201,202,199,200,250,80,158,45, +47,89,162,34,34,45,9,224,11,3,252,80,158,40,48,20,15,159,40,35,49, +21,95,2,109,2,110,2,111,248,22,84,198,248,22,58,198,250,22,2,80,159, +43,54,35,248,22,94,201,248,22,93,201,21,94,2,112,95,2,91,93,2,92, +100,2,93,2,51,10,2,92,94,2,94,2,42,2,95,94,2,97,95,2,19, +2,92,2,98,2,42,20,15,159,45,37,49,250,22,175,8,11,2,46,201,250, +22,175,8,11,2,46,197,34,20,99,159,35,16,15,2,116,2,117,2,118,2, +119,2,120,2,121,2,123,2,122,2,124,2,145,2,2,168,2,2,144,2,2, +126,2,127,2,128,2,16,4,33,181,2,33,182,2,33,183,2,33,184,2,11, +93,83,158,34,16,2,89,162,34,35,37,2,2,223,0,248,22,8,89,162,8, +36,35,40,9,224,1,2,27,247,22,116,87,94,249,22,3,89,162,8,36,35, +45,9,226,4,3,5,2,87,94,28,248,80,158,38,35,197,12,250,22,176,8, +2,2,6,19,19,108,105,115,116,32,111,102,32,105,100,101,110,116,105,102,105, +101,114,115,197,27,250,22,122,196,248,22,153,3,201,9,87,94,28,249,22,5, +89,162,8,36,35,38,9,223,7,249,22,164,3,195,194,194,248,195,198,12,250, +22,121,196,248,22,153,3,201,249,22,57,202,197,195,11,80,159,34,34,35,98, +2,115,2,48,2,3,2,34,2,30,2,33,98,2,115,2,48,2,3,2,34, +2,30,2,33,0}; + EVAL_ONE_SIZED_STR((char *)expr, 6997); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,72,0,0,0,1,0,0,3,0,23,0,29,0, +38,0,54,0,72,0,84,0,89,0,93,0,100,0,107,0,114,0,121,0,127, +0,130,0,143,0,148,0,165,0,174,0,179,0,189,0,193,0,203,0,213,0, +223,0,232,0,242,0,246,0,0,1,2,1,12,1,22,1,32,1,41,1,64, +1,70,1,87,1,124,1,136,1,173,1,189,1,212,1,227,1,233,1,239,1, +245,1,251,1,12,2,27,2,49,2,70,2,76,2,82,2,180,2,186,2,218, +2,224,2,230,2,236,2,84,3,90,3,96,3,102,3,142,3,158,3,174,3, +188,3,1,4,17,4,31,4,119,4,0,0,1,13,0,0,29,11,11,79,99, +104,101,99,107,45,115,112,108,105,99,105,110,103,45,108,105,115,116,65,35,37, +115,116,120,68,117,110,115,121,110,116,97,120,75,113,117,97,115,105,115,121,110, +116,97,120,47,108,111,99,77,117,110,115,121,110,116,97,120,45,115,112,108,105, +99,105,110,103,71,113,117,97,115,105,115,121,110,116,97,120,64,108,111,111,112, +63,99,116,120,3,1,4,103,53,57,55,3,1,4,103,53,57,54,3,1,4, +103,53,57,57,3,1,4,103,53,57,56,65,112,108,111,111,112,62,113,113,6, +10,10,98,97,100,32,115,121,110,116,97,120,64,104,101,114,101,76,35,37,115, +116,120,99,97,115,101,45,115,99,104,101,109,101,68,111,114,105,103,45,115,116, +120,64,98,111,100,121,3,1,7,101,110,118,51,51,50,52,63,115,116,120,3, +1,7,101,110,118,51,51,50,55,3,1,7,101,110,118,51,51,52,57,3,1, +7,101,110,118,51,51,53,48,68,98,105,110,100,105,110,103,115,3,1,7,101, +110,118,51,51,53,54,63,46,46,46,3,1,7,101,110,118,51,52,50,56,61, +95,3,1,7,101,110,118,51,52,50,57,3,1,7,101,110,118,51,52,52,49, +3,1,7,101,110,118,51,52,52,50,68,35,37,107,101,114,110,101,108,16,8, +11,11,2,19,2,20,68,109,107,45,102,105,110,97,108,2,21,2,21,2,21, +95,8,193,11,16,0,97,10,35,11,94,159,2,3,9,11,159,2,18,9,11, +16,0,97,10,34,11,94,159,2,3,9,11,159,2,18,9,11,16,10,2,4, +2,1,2,5,2,1,2,7,2,1,2,2,2,1,2,6,2,1,18,97,2, +17,8,38,8,37,8,36,8,35,16,10,11,11,2,22,65,100,101,112,116,104, +66,115,97,109,101,45,107,69,99,111,110,118,101,114,116,45,107,2,23,2,23, +2,23,2,23,16,4,11,11,2,8,3,1,7,101,110,118,51,51,50,54,16, +4,11,11,68,104,101,114,101,45,115,116,120,3,1,7,101,110,118,51,51,50, +53,99,8,38,8,37,8,36,8,35,8,42,8,41,8,40,18,158,2,17,8, +43,18,158,2,4,8,43,18,158,2,4,8,43,18,158,2,6,8,43,16,6, +11,11,66,114,101,115,116,45,118,2,26,2,27,2,27,16,6,11,11,61,120, +64,114,101,115,116,2,25,2,25,16,6,11,11,3,1,4,103,53,56,55,3, +1,4,103,53,56,56,2,24,2,24,102,8,38,8,37,8,36,8,35,8,42, +8,41,8,40,8,50,8,49,8,48,18,158,2,17,8,51,18,158,2,17,8, +51,106,8,38,8,37,8,36,8,35,8,42,8,41,8,40,8,50,8,49,8, +48,16,4,11,11,3,1,4,103,53,57,51,3,1,7,101,110,118,51,51,54, +53,16,4,11,11,64,116,101,109,112,3,1,7,101,110,118,51,51,54,54,16, +4,11,11,3,1,4,103,53,57,53,3,1,7,101,110,118,51,51,55,55,16, +4,11,11,2,9,3,1,7,101,110,118,51,51,55,56,18,158,2,28,8,54, +18,158,95,10,94,2,10,2,11,95,2,2,2,12,94,72,113,117,111,116,101, +45,115,121,110,116,97,120,2,13,8,54,18,158,2,28,8,54,18,158,2,6, +8,43,18,158,2,7,8,43,104,8,38,8,37,8,36,8,35,8,42,8,41, +8,40,16,4,11,11,3,1,4,103,53,56,53,3,1,7,101,110,118,51,52, +48,51,16,4,11,11,65,95,101,108,115,101,3,1,7,101,110,118,51,52,48, +52,16,4,11,11,2,14,3,1,7,101,110,118,51,52,48,56,16,4,11,11, +61,108,3,1,7,101,110,118,51,52,48,57,16,4,11,11,61,97,3,1,7, +101,110,118,51,52,49,48,18,158,2,4,8,60,18,158,2,7,8,60,18,158, +2,6,8,60,18,99,71,119,105,116,104,45,115,121,110,116,97,120,8,38,8, +37,8,36,8,35,8,42,16,4,11,11,2,26,3,1,7,101,110,118,51,52, +50,50,16,4,11,11,2,19,3,1,7,101,110,118,51,52,50,51,16,4,11, +11,2,15,3,1,7,101,110,118,51,51,50,51,18,98,2,17,8,38,8,37, +8,36,8,66,8,65,18,101,66,115,121,110,116,97,120,8,38,8,37,8,36, +8,66,8,65,16,6,11,11,3,1,4,103,54,48,48,3,1,4,103,54,48, +49,2,29,2,29,16,6,11,11,2,30,2,22,2,31,2,31,16,4,11,11, +2,20,3,1,7,101,110,118,51,52,51,52,16,4,11,11,2,19,3,1,7, +101,110,118,51,52,51,53,18,98,2,17,8,38,8,37,8,36,8,66,8,69, +18,101,70,115,121,110,116,97,120,47,108,111,99,8,38,8,37,8,36,8,66, +8,69,16,8,11,11,3,1,4,103,54,48,50,3,1,4,103,54,48,51,3, +1,4,103,54,48,52,2,32,2,32,2,32,16,8,11,11,2,30,63,108,111, +99,2,22,2,33,2,33,2,33,16,4,11,11,2,20,3,1,7,101,110,118, +51,52,52,57,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16, +0,83,158,40,20,96,114,67,35,37,113,113,115,116,120,2,1,10,10,10,34, +80,158,34,34,20,99,159,34,16,2,30,2,1,2,2,193,30,2,3,69,115, +116,120,45,108,105,115,116,63,8,16,0,11,11,16,1,2,2,35,11,16,4, +2,4,2,5,2,6,2,7,16,4,11,11,11,11,16,4,2,4,2,5,2, +6,2,7,34,38,94,16,5,94,2,4,2,6,27,32,0,89,162,34,35,38, +61,102,222,250,22,175,8,11,6,30,30,105,108,108,101,103,97,108,32,111,117, +116,115,105,100,101,32,111,102,32,113,117,97,115,105,115,121,110,116,97,120,195, +249,22,7,194,194,37,20,99,159,34,16,0,16,0,11,16,5,94,2,7,2, +5,87,96,83,158,34,16,2,89,162,8,36,35,38,9,223,0,249,22,65,20, +15,159,36,51,43,195,80,159,34,8,32,35,83,158,34,16,2,89,162,34,40, +58,2,8,223,0,27,249,22,152,3,20,15,159,37,35,43,198,27,28,248,80, +158,37,34,194,28,27,248,80,158,38,35,195,28,248,80,158,38,36,193,28,249, +22,166,3,194,20,15,159,39,36,43,9,11,11,27,248,80,158,38,37,195,28, +248,80,158,38,34,193,249,80,158,39,38,248,80,158,40,35,195,248,80,158,40, +39,248,80,158,41,37,196,11,11,11,28,192,28,248,22,129,3,199,27,248,22, +58,248,80,158,39,40,21,93,62,117,113,249,203,194,248,22,65,249,22,65,197, +198,253,80,159,42,8,30,35,201,202,198,248,22,178,2,205,205,89,162,34,36, +48,9,226,8,9,14,11,249,195,250,22,152,3,199,249,22,65,248,80,158,45, +35,200,203,197,199,27,28,248,80,158,38,36,195,28,249,22,166,3,196,20,15, +159,39,37,43,9,11,11,28,192,251,22,175,8,11,6,25,25,109,105,115,117, +115,101,32,119,105,116,104,105,110,32,113,117,97,115,105,115,121,110,116,97,120, +201,202,27,28,248,80,158,39,34,196,249,80,158,40,38,27,248,80,158,42,35, +199,28,248,80,158,42,34,193,28,27,248,80,158,43,35,194,28,248,80,158,43, +36,193,28,249,22,166,3,194,20,15,159,44,38,43,9,11,11,27,248,80,158, +43,37,194,28,248,80,158,43,34,193,249,80,158,44,41,248,80,158,45,35,195, +248,80,158,45,39,248,80,158,46,37,196,11,11,11,27,248,80,158,42,37,199, +250,22,152,3,201,195,201,11,28,192,27,248,22,58,194,27,248,22,59,195,28, +248,22,129,3,203,27,89,162,34,36,54,71,114,101,115,116,45,100,111,110,101, +45,107,226,7,13,10,2,27,249,22,152,3,20,15,159,40,39,43,248,22,58, +248,80,158,42,40,21,93,63,117,113,115,27,249,22,152,3,20,15,159,41,40, +43,250,22,152,3,199,2,9,199,249,198,250,22,152,3,200,250,22,67,201,20, +15,159,47,41,43,206,200,249,22,57,27,250,22,67,202,200,201,253,80,158,50, +42,20,15,159,50,42,43,21,96,2,10,2,11,2,12,2,13,248,22,86,199, +20,15,159,50,43,43,248,22,58,199,248,22,84,199,203,253,80,159,47,8,30, +35,206,23,15,199,23,17,89,162,34,34,38,9,224,7,6,249,194,195,9,198, +253,80,159,46,8,30,35,205,206,199,248,22,178,2,23,17,89,162,34,34,50, +9,230,12,14,13,18,17,16,15,6,253,80,159,47,8,30,35,203,204,198,200, +201,27,248,80,158,49,35,201,89,162,34,36,46,9,225,11,8,0,249,196,250, +22,152,3,198,249,22,57,199,202,198,249,22,71,9,200,89,162,34,36,52,9, +229,12,14,13,18,16,15,6,27,27,250,22,152,3,248,80,158,46,35,199,249, +22,65,248,80,158,48,35,248,80,158,49,35,202,206,248,80,158,46,35,199,89, +162,34,36,47,9,226,5,3,10,0,249,197,250,22,152,3,199,249,22,57,199, +203,199,249,22,71,197,201,253,80,159,47,8,30,35,203,204,199,201,89,162,34, +34,38,9,224,7,6,249,194,195,9,198,27,28,248,80,158,40,36,197,28,249, +22,166,3,198,20,15,159,41,44,43,9,11,11,28,192,251,22,175,8,11,6, +25,25,109,105,115,117,115,101,32,119,105,116,104,105,110,32,113,117,97,115,105, +115,121,110,116,97,120,203,204,27,28,248,80,158,41,34,198,28,27,248,80,158, +42,35,199,28,248,80,158,42,36,193,28,249,22,166,3,194,20,15,159,43,45, +43,9,11,11,27,248,80,158,42,37,199,28,248,80,158,42,34,193,249,80,158, +43,38,248,80,158,44,35,195,248,80,158,44,39,248,80,158,45,37,196,11,11, +11,28,192,253,80,159,46,8,30,35,205,206,198,248,22,177,2,23,17,23,17, +89,162,34,36,47,9,225,12,18,15,249,195,250,22,152,3,197,249,22,65,248, +80,158,44,35,200,202,197,198,28,248,22,56,248,22,153,3,203,253,80,159,46, +8,31,35,23,16,205,206,248,22,153,3,23,16,23,17,89,162,34,36,43,9, +224,18,15,249,195,250,22,152,3,197,199,197,197,28,248,22,165,7,248,22,153, +3,203,253,80,159,46,8,30,35,205,206,250,22,152,3,23,18,248,22,172,7, +248,22,153,3,23,20,23,18,23,16,23,17,89,162,34,36,45,9,224,18,15, +249,195,250,22,152,3,197,248,22,173,7,248,22,159,3,201,197,197,247,203,80, +159,34,8,30,35,83,158,34,16,2,89,162,8,64,40,50,2,14,223,0,28, +248,22,56,197,28,27,248,22,58,198,27,28,248,80,158,37,36,194,27,249,22, +166,3,196,20,15,159,39,46,43,28,192,192,249,22,166,3,196,20,15,159,39, +47,43,11,28,192,192,28,248,80,158,37,34,194,27,248,80,158,38,35,195,28, +248,80,158,38,36,193,249,22,166,3,194,20,15,159,39,48,43,11,11,253,80, +159,40,8,30,35,200,201,250,22,152,3,11,205,11,199,203,204,253,80,159,40, +8,31,35,199,200,201,248,22,59,203,89,162,34,34,48,9,229,6,9,8,7, +12,11,10,253,80,159,46,8,30,35,202,203,248,22,58,199,201,199,89,162,34, +36,46,9,224,8,6,249,195,249,22,57,250,22,152,3,248,22,58,200,201,248, +22,58,200,248,22,59,197,197,89,162,34,36,49,9,228,6,9,8,7,12,10, +253,80,159,45,8,30,35,201,202,248,22,58,199,200,89,162,34,34,43,9,226, +7,6,13,12,249,197,249,22,57,248,22,58,199,196,195,89,162,34,36,48,9, +226,7,6,13,12,249,197,249,22,57,250,22,152,3,248,22,58,202,203,248,22, +58,202,196,249,22,71,201,197,28,248,22,63,197,247,197,253,80,159,40,8,30, +35,200,201,202,199,203,204,80,159,34,8,31,35,27,89,162,34,37,46,2,15, +223,1,27,20,15,159,35,34,43,253,80,159,41,8,30,35,198,200,201,34,89, +162,8,36,34,42,9,226,10,9,8,6,250,22,152,3,195,248,199,198,196,89, +162,8,36,36,47,9,226,7,10,8,6,250,22,152,3,195,250,22,65,20,15, +159,43,49,43,203,248,201,203,196,249,22,7,89,162,34,35,46,9,224,3,2, +27,249,22,152,3,20,15,159,38,50,43,197,27,28,248,80,158,38,34,194,249, +80,158,39,41,248,80,158,40,35,196,27,248,80,158,41,37,197,28,248,80,158, +41,34,193,249,80,158,42,38,248,80,158,43,35,195,248,80,158,43,39,248,80, +158,44,37,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,250,199,201, +195,80,159,42,8,32,35,250,22,175,8,11,2,16,196,89,162,34,35,49,9, +224,3,2,27,249,22,152,3,20,15,159,38,52,43,197,27,28,248,80,158,38, +34,194,249,80,158,39,41,248,80,158,40,35,196,27,248,80,158,41,37,197,28, +248,80,158,41,34,193,249,80,158,42,41,248,80,158,43,35,195,27,248,80,158, +44,37,196,28,248,80,158,44,34,193,249,80,158,45,38,248,80,158,46,35,195, +248,80,158,46,39,248,80,158,47,37,196,11,11,11,28,192,27,248,22,58,194, +27,248,22,84,195,27,248,22,86,196,250,200,202,195,89,162,8,36,35,40,9, +224,9,4,250,22,65,20,15,159,38,53,43,195,197,250,22,175,8,11,2,16, +196,37,20,99,159,37,16,9,30,2,3,69,115,116,120,45,112,97,105,114,63, +11,30,2,3,67,115,116,120,45,99,97,114,5,30,2,3,71,105,100,101,110, +116,105,102,105,101,114,63,2,30,2,3,67,115,116,120,45,99,100,114,6,30, +2,3,69,97,112,112,101,110,100,47,35,102,0,30,2,3,71,115,116,120,45, +110,117,108,108,47,35,102,9,30,70,35,37,119,105,116,104,45,115,116,120,1, +20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115, +0,30,2,3,67,99,111,110,115,47,35,102,1,30,69,35,37,115,116,120,99, +97,115,101,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117, +98,115,116,105,116,117,116,101,0,16,20,33,39,33,44,33,45,33,46,33,47, +33,52,33,53,33,55,33,56,33,57,33,58,33,59,33,61,33,62,33,63,33, +64,33,67,33,68,33,70,33,71,11,93,83,158,34,16,2,89,162,8,36,36, +40,2,2,223,0,87,94,28,248,80,158,35,35,194,12,250,22,176,8,2,6, +6,18,18,112,114,111,112,101,114,32,115,121,110,116,97,120,32,108,105,115,116, +196,250,22,152,3,197,196,197,80,159,34,34,35,95,2,34,2,18,2,3,95, +2,34,2,18,2,3,0}; + EVAL_ONE_SIZED_STR((char *)expr, 3492); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,160,0,0,0,1,0,0,6,0,9,0,26,0, +40,0,58,0,65,0,74,0,87,0,94,0,101,0,108,0,122,0,129,0,136, +0,149,0,156,0,163,0,170,0,177,0,184,0,187,0,194,0,201,0,208,0, +214,0,224,0,252,0,22,1,39,1,44,1,52,1,56,1,66,1,68,1,74, +1,84,1,94,1,99,1,109,1,112,1,116,1,126,1,133,1,143,1,148,1, +158,1,173,1,176,1,185,1,194,1,204,1,214,1,224,1,234,1,244,1,254, +1,3,2,13,2,27,2,43,2,69,2,76,2,83,2,96,2,103,2,110,2, +117,2,124,2,131,2,138,2,148,2,153,2,163,2,173,2,183,2,185,2,195, +2,205,2,213,2,222,2,236,2,248,2,4,3,16,3,30,3,44,3,64,3, +70,3,84,3,100,3,116,3,132,3,164,3,170,3,192,3,214,3,228,3,244, +3,0,4,19,4,50,4,72,4,125,4,131,4,137,4,149,4,215,4,221,4, +197,5,214,5,220,5,232,5,244,5,8,6,83,6,93,6,125,6,131,6,137, +6,143,6,156,6,217,6,19,7,25,7,38,7,61,7,67,7,73,7,79,7, +97,7,113,7,129,7,179,7,188,7,235,7,246,7,1,8,13,8,35,8,54, +8,219,8,235,8,1,9,8,9,15,9,74,9,85,9,92,9,148,9,161,9, +168,9,227,9,255,9,26,10,85,10,96,10,103,10,166,10,189,10,0,0,48, +25,0,0,65,98,101,103,105,110,29,11,11,76,98,101,103,105,110,45,102,111, +114,45,115,121,110,116,97,120,73,100,101,102,105,110,101,45,115,121,110,116,97, +120,77,100,101,102,105,110,101,45,102,111,114,45,115,121,110,116,97,120,66,100, +101,102,105,110,101,68,116,114,121,45,110,101,120,116,6,10,10,98,97,100,32, +115,121,110,116,97,120,3,1,4,103,54,53,51,3,1,4,103,54,53,49,3, +1,4,103,54,53,50,73,103,101,110,101,114,97,108,45,112,114,111,116,111,3, +1,4,103,54,52,49,3,1,4,103,54,52,48,72,115,105,109,112,108,101,45, +112,114,111,116,111,3,1,4,103,54,50,54,3,1,4,103,54,50,53,3,1, +4,103,54,50,55,3,1,4,103,54,51,50,3,1,4,103,54,51,49,62,109, +107,3,1,4,103,54,54,55,3,1,4,103,54,54,53,3,1,4,103,54,54, +54,65,35,37,115,116,120,69,35,37,115,116,120,99,97,115,101,1,26,100,97, +116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104, +97,112,101,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117, +98,115,116,105,116,117,116,101,76,35,37,115,116,120,99,97,115,101,45,115,99, +104,101,109,101,64,104,101,114,101,67,35,37,113,113,115,116,120,63,115,116,120, +3,1,7,101,110,118,51,52,55,49,61,95,65,112,114,111,116,111,3,1,7, +101,110,118,51,52,55,50,3,1,7,101,110,118,51,52,56,48,64,100,101,115, +116,3,1,7,101,110,118,51,52,56,55,62,105,100,63,97,114,103,3,1,7, +101,110,118,51,52,56,56,66,108,97,109,98,100,97,3,1,7,101,110,118,51, +53,49,55,64,114,101,115,116,3,1,7,101,110,118,51,53,49,56,74,35,37, +115,109,97,108,108,45,115,99,104,101,109,101,29,11,11,68,104,101,114,101,45, +115,116,120,3,1,6,101,110,118,52,53,54,3,1,7,101,110,118,51,53,53, +52,3,1,7,101,110,118,51,53,53,53,3,1,7,101,110,118,51,52,55,57, +3,1,7,101,110,118,51,54,52,53,3,1,7,101,110,118,51,54,52,54,3, +1,7,101,110,118,51,54,57,51,64,101,120,112,114,3,1,7,101,110,118,51, +54,57,52,73,100,101,102,105,110,101,45,118,97,108,117,101,115,75,100,101,102, +105,110,101,45,115,121,110,116,97,120,101,115,1,24,100,101,102,105,110,101,45, +118,97,108,117,101,115,45,102,111,114,45,115,121,110,116,97,120,3,1,4,103, +54,55,52,3,1,4,103,54,55,51,72,109,111,100,117,108,101,45,98,101,103, +105,110,3,1,4,103,54,56,51,3,1,4,103,54,56,53,3,1,4,103,54, +56,52,3,1,4,103,54,56,54,3,1,4,103,54,56,55,3,1,4,103,54, +56,56,3,1,7,101,110,118,51,55,51,50,64,101,108,101,109,3,1,7,101, +110,118,51,55,51,51,3,1,7,101,110,118,51,55,52,53,3,1,7,101,110, +118,51,55,52,54,61,118,3,1,7,101,110,118,51,55,54,57,3,1,7,101, +110,118,51,55,55,48,67,114,101,113,117,105,114,101,68,35,37,107,101,114,110, +101,108,30,2,25,69,115,116,120,45,112,97,105,114,63,11,30,2,25,67,99, +111,110,115,47,35,102,1,30,2,25,67,115,116,120,45,99,97,114,5,30,2, +25,67,115,116,120,45,99,100,114,6,30,2,25,69,115,116,120,45,108,105,115, +116,63,8,30,2,25,69,115,116,120,45,62,108,105,115,116,4,30,68,35,37, +115,116,120,108,111,99,68,114,101,108,111,99,97,116,101,0,30,2,26,2,28, +0,30,2,25,69,97,112,112,101,110,100,47,35,102,0,30,2,25,71,105,100, +101,110,116,105,102,105,101,114,63,2,30,2,25,71,115,116,120,45,110,117,108, +108,47,35,102,9,16,4,11,11,2,32,3,1,7,101,110,118,51,52,53,54, +16,4,11,11,77,100,101,102,105,110,101,45,118,97,108,117,101,115,45,115,116, +120,3,1,7,101,110,118,51,52,53,53,95,8,193,11,16,0,97,10,35,11, +95,159,2,31,9,11,159,2,25,9,11,159,2,29,9,11,16,0,96,10,34, +11,16,8,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,18,98, +2,30,8,96,8,95,8,94,8,93,8,92,16,4,11,11,2,35,3,1,7, +101,110,118,51,52,56,49,16,6,11,11,2,15,2,12,2,37,2,37,16,8, +11,11,2,34,2,35,64,98,111,100,121,2,36,2,36,2,36,16,8,11,11, +3,1,4,103,54,48,53,3,1,4,103,54,48,54,3,1,4,103,54,48,55, +2,33,2,33,2,33,18,102,2,30,8,96,8,95,8,94,8,93,8,92,8, +101,8,100,8,99,8,98,103,8,96,8,95,8,94,8,93,8,92,8,101,8, +100,8,99,8,98,16,6,11,11,3,1,4,103,54,50,48,3,1,4,103,54, +50,49,2,39,2,39,16,6,11,11,2,40,2,41,2,42,2,42,18,158,2, +38,8,103,18,158,2,30,8,103,18,158,160,10,2,43,2,16,2,17,8,103, +103,8,96,8,95,8,94,8,93,8,92,8,101,8,100,8,99,8,98,16,8, +11,11,3,1,4,103,54,49,55,3,1,4,103,54,49,56,3,1,4,103,54, +49,57,2,44,2,44,2,44,16,8,11,11,2,40,2,41,2,45,2,46,2, +46,2,46,18,158,2,38,8,107,102,97,10,34,11,95,159,68,35,37,112,97, +114,97,109,122,9,11,159,2,47,9,11,159,2,25,9,11,16,14,73,115,121, +110,116,97,120,45,99,97,115,101,42,42,2,48,2,27,2,48,78,112,97,116, +116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,2,48,2,28,2,48, +66,115,121,110,116,97,120,2,48,75,115,117,98,115,116,105,116,117,116,101,45, +115,116,111,112,2,48,1,20,99,97,116,99,104,45,101,108,108,105,112,115,105, +115,45,101,114,114,111,114,2,48,97,10,35,11,95,159,64,35,37,115,99,9, +11,159,2,47,9,11,159,2,25,9,11,16,0,95,8,193,11,16,0,16,4, +11,11,61,120,3,1,6,101,110,118,52,53,52,16,4,11,11,2,49,2,50, +16,4,11,11,2,49,2,50,16,4,11,11,2,49,3,1,6,101,110,118,52, +53,56,13,16,4,35,2,48,2,26,11,93,8,141,47,16,4,11,11,61,114, +3,1,7,101,110,118,51,53,50,53,18,16,2,158,94,10,2,18,8,109,95, +9,8,141,47,2,26,18,158,2,30,8,107,18,158,160,10,2,43,2,19,2, +20,8,107,16,6,11,11,2,15,2,12,2,37,2,37,18,101,2,30,8,96, +8,95,8,94,8,93,8,92,8,101,8,100,8,113,102,8,96,8,95,8,94, +8,93,8,92,8,101,8,100,8,113,16,8,11,11,3,1,4,103,54,51,53, +3,1,4,103,54,51,54,3,1,4,103,54,51,55,2,51,2,51,2,51,16, +8,11,11,69,115,111,109,101,116,104,105,110,103,64,109,111,114,101,2,45,2, +52,2,52,2,52,18,158,159,10,2,13,2,14,8,115,100,8,96,8,95,8, +94,8,93,8,92,8,101,8,100,16,6,11,11,2,40,66,109,107,45,114,104, +115,2,53,2,53,18,158,2,30,8,117,18,158,2,30,8,117,18,158,2,30, +8,117,18,158,96,10,2,9,93,2,10,2,11,8,117,18,100,2,30,8,96, +8,95,8,94,8,93,8,92,16,8,11,11,3,1,4,103,54,49,49,3,1, +4,103,54,49,50,3,1,4,103,54,49,51,2,54,2,54,2,54,16,8,11, +11,2,34,2,40,2,45,2,55,2,55,2,55,99,8,96,8,95,8,94,8, +93,8,92,16,8,11,11,3,1,4,103,54,49,52,3,1,4,103,54,49,53, +3,1,4,103,54,49,54,2,56,2,56,2,56,16,8,11,11,2,34,2,40, +2,57,2,58,2,58,2,58,18,158,2,30,8,123,18,158,96,10,2,22,93, +2,23,2,24,8,123,96,8,96,8,95,8,94,16,4,11,11,2,21,3,1, +7,101,110,118,51,52,53,52,18,158,2,59,8,126,18,158,2,60,8,126,18, +158,2,61,8,126,16,4,11,11,63,99,116,120,3,1,7,101,110,118,51,55, +49,55,16,4,11,11,2,32,3,1,7,101,110,118,51,55,49,54,18,98,2, +30,8,96,8,95,8,94,8,131,2,8,130,2,99,8,96,8,95,8,94,8, +131,2,8,130,2,16,4,11,11,3,1,4,103,54,55,50,3,1,7,101,110, +118,51,55,50,50,16,4,11,11,2,34,3,1,7,101,110,118,51,55,50,51, +18,158,94,10,2,1,8,133,2,99,8,96,8,95,8,94,8,131,2,8,130, +2,16,6,11,11,3,1,4,103,54,54,56,3,1,4,103,54,54,57,2,71, +2,71,16,6,11,11,2,34,2,72,2,73,2,73,18,158,159,10,2,1,2, +62,8,135,2,18,158,95,10,2,3,2,63,8,135,2,16,6,11,11,2,34, +2,72,2,75,2,75,16,6,11,11,3,1,4,103,54,55,48,3,1,4,103, +54,55,49,2,74,2,74,99,8,96,8,95,8,94,8,131,2,8,130,2,8, +139,2,8,138,2,18,158,111,10,2,1,2,59,2,60,2,61,64,115,101,116, +33,70,108,101,116,45,118,97,108,117,101,115,71,108,101,116,42,45,118,97,108, +117,101,115,73,108,101,116,114,101,99,45,118,97,108,117,101,115,2,43,71,99, +97,115,101,45,108,97,109,98,100,97,62,105,102,65,113,117,111,116,101,1,22, +108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43,118,97,108,117,101, +115,76,102,108,117,105,100,45,108,101,116,45,115,121,110,116,97,120,1,22,119, +105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107, +65,35,37,97,112,112,65,35,37,116,111,112,67,35,37,100,97,116,117,109,8, +140,2,16,4,11,11,61,101,3,1,7,101,110,118,51,55,53,49,100,8,96, +8,95,8,94,8,131,2,8,130,2,8,139,2,8,138,2,8,142,2,18,158, +2,30,8,143,2,18,158,2,1,8,143,2,102,8,96,8,95,8,94,8,131, +2,8,130,2,8,139,2,8,138,2,8,142,2,16,4,11,11,3,1,4,103, +54,56,50,3,1,7,101,110,118,51,55,53,55,16,4,11,11,2,76,3,1, +7,101,110,118,51,55,53,56,18,158,159,10,2,3,2,65,8,146,2,18,158, +2,59,8,143,2,102,8,96,8,95,8,94,8,131,2,8,130,2,8,139,2, +8,138,2,8,142,2,16,6,11,11,3,1,4,103,54,56,48,3,1,4,103, +54,56,49,2,77,2,77,16,6,11,11,2,40,2,57,2,78,2,78,18,158, +96,10,2,61,2,66,2,67,8,149,2,18,158,2,79,8,143,2,102,8,96, +8,95,8,94,8,131,2,8,130,2,8,139,2,8,138,2,8,142,2,16,4, +11,11,3,1,4,103,54,55,57,3,1,7,101,110,118,51,55,56,49,16,4, +11,11,2,76,3,1,7,101,110,118,51,55,56,50,18,158,159,10,78,114,101, +113,117,105,114,101,45,102,111,114,45,115,121,110,116,97,120,2,68,8,152,2, +18,158,1,20,114,101,113,117,105,114,101,45,102,111,114,45,116,101,109,112,108, +97,116,101,8,143,2,102,8,96,8,95,8,94,8,131,2,8,130,2,8,139, +2,8,138,2,8,142,2,16,4,11,11,3,1,4,103,54,55,56,3,1,7, +101,110,118,51,55,57,49,16,4,11,11,2,76,3,1,7,101,110,118,51,55, +57,50,18,158,159,10,2,79,2,69,8,155,2,18,158,2,60,8,143,2,102, +8,96,8,95,8,94,8,131,2,8,130,2,8,139,2,8,138,2,8,142,2, +16,4,11,11,3,1,4,103,54,55,53,3,1,7,101,110,118,51,56,49,48, +16,4,11,11,65,111,116,104,101,114,3,1,7,101,110,118,51,56,49,49,18, +158,96,10,2,61,9,95,2,1,2,70,93,66,118,97,108,117,101,115,8,158, +2,159,34,20,99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114, +68,35,37,100,101,102,105,110,101,2,2,10,10,10,34,80,158,34,34,20,99, +159,34,16,0,16,0,11,11,16,0,34,11,16,4,2,3,2,4,2,5,2, +6,16,4,11,11,11,11,16,4,2,3,2,4,2,5,2,6,34,38,94,16, +5,95,2,6,2,4,2,5,87,99,83,158,34,16,2,89,162,34,37,59,2, +7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36, +197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,27,28,248,22,149,3, +194,193,198,249,80,158,41,35,248,80,158,42,36,196,27,248,80,158,43,37,197, +250,22,152,3,198,195,198,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,86,196,28,248,80,158,39,45,194,250,22,175,8,11,27,249,22,152, +3,20,15,159,44,49,49,204,27,28,248,80,158,44,34,194,249,80,158,45,35, +248,80,158,46,36,196,27,248,80,158,47,37,197,28,248,80,158,47,34,193,249, +80,158,48,44,248,80,158,49,36,195,248,80,158,49,48,248,80,158,50,37,196, +11,11,28,192,27,248,22,58,194,27,248,22,59,195,6,46,46,98,97,100,32, +115,121,110,116,97,120,32,40,122,101,114,111,32,101,120,112,114,101,115,115,105, +111,110,115,32,97,102,116,101,114,32,105,100,101,110,116,105,102,105,101,114,41, +27,28,248,80,158,45,34,195,249,80,158,46,35,248,80,158,47,36,197,27,248, +80,158,48,37,198,28,248,80,158,48,34,193,249,80,158,49,35,248,80,158,50, +36,195,27,248,80,158,51,37,196,28,248,80,158,51,38,193,248,80,158,51,39, +193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196, +6,50,50,98,97,100,32,115,121,110,116,97,120,32,40,109,117,108,116,105,112, +108,101,32,101,120,112,114,101,115,115,105,111,110,115,32,97,102,116,101,114,32, +105,100,101,110,116,105,102,105,101,114,41,27,28,248,80,158,46,34,196,249,80, +158,47,35,248,80,158,48,36,198,27,248,80,158,49,37,199,28,248,80,158,49, +34,193,27,28,248,22,149,3,194,193,199,249,80,158,51,35,248,80,158,52,36, +196,27,248,80,158,53,37,197,250,22,152,3,198,195,198,11,11,28,192,27,248, +22,58,194,27,248,22,84,195,27,248,22,86,196,6,31,31,98,97,100,32,115, +121,110,116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111,102, +32,96,46,39,41,250,22,175,8,11,2,8,198,201,250,80,159,41,8,41,35, +200,201,202,250,80,159,38,8,41,35,197,198,199,80,159,34,8,42,35,83,158, +34,16,2,89,162,34,37,49,2,7,223,0,27,28,248,80,158,36,34,195,249, +80,158,37,35,248,80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158, +39,34,193,27,28,248,22,149,3,194,193,198,249,80,158,41,35,248,80,158,42, +36,196,27,248,80,158,43,37,197,250,22,152,3,198,195,198,11,11,28,192,27, +248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248,80,158,39,34,194, +250,80,159,41,8,40,35,200,201,202,251,22,175,8,11,6,10,10,98,97,100, +32,115,121,110,116,97,120,202,197,250,80,159,38,8,40,35,197,198,199,80,159, +34,8,41,35,83,158,34,16,2,89,162,34,37,56,2,7,223,0,27,28,248, +80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248,80,158,39, +37,198,28,248,80,158,39,34,193,27,28,248,22,149,3,194,193,198,249,80,158, +41,35,248,80,158,42,36,196,27,248,80,158,43,37,197,250,22,152,3,198,195, +198,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,91, +159,36,11,90,161,36,34,11,249,80,159,42,8,38,35,202,197,87,95,28,248, +80,158,41,38,195,12,250,22,175,8,11,6,50,50,98,97,100,32,115,121,110, +116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111,102,32,96, +46,39,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,98,111,100,121, +41,203,28,248,80,158,41,47,195,250,22,175,8,11,6,46,46,98,97,100,32, +115,121,110,116,97,120,32,40,110,111,32,101,120,112,114,101,115,115,105,111,110, +115,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,98,111,100,121,41, +203,12,27,249,22,152,3,20,15,159,43,45,49,204,27,249,22,152,3,20,15, +159,44,46,49,196,27,249,22,152,3,20,15,159,45,47,49,248,199,200,249,80, +158,45,41,205,27,250,22,67,200,198,199,252,80,158,51,42,20,15,159,51,48, +49,21,95,2,9,2,10,2,11,248,22,58,198,248,22,86,198,248,22,84,198, +250,22,175,8,11,2,8,197,80,159,34,8,40,35,83,158,34,16,2,89,162, +34,36,45,2,12,223,0,27,249,22,152,3,20,15,159,37,43,49,197,27,28, +248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158, +40,37,197,250,22,152,3,199,195,199,11,28,192,27,248,22,58,194,27,248,22, +59,195,28,248,80,158,39,45,194,249,22,7,195,249,80,159,42,8,37,35,201, +202,250,80,159,41,8,39,35,198,201,200,250,80,159,39,8,39,35,196,199,198, +80,159,34,8,38,35,83,158,34,16,2,89,162,34,37,52,2,7,223,0,27, +28,248,80,158,36,34,195,249,80,158,37,44,27,248,80,158,39,36,198,28,248, 80,158,39,34,193,249,80,158,40,35,248,80,158,41,36,195,27,248,80,158,42, -37,196,28,248,80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27, -248,80,158,45,37,196,28,248,80,158,45,34,193,249,80,158,46,35,248,80,158, -47,36,195,27,248,80,158,48,37,196,28,248,80,158,48,38,193,248,80,158,48, -39,193,11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248, -22,93,196,27,248,22,96,197,27,248,22,95,198,27,252,22,67,200,201,198,202, -199,254,80,158,48,40,20,15,159,48,34,41,21,97,3,1,4,103,52,56,56, -8,3,1,4,103,52,56,55,9,3,1,4,103,52,56,54,10,3,1,4,103, -52,56,53,11,3,1,4,103,52,56,52,12,248,22,96,200,248,22,84,200,248, -22,58,200,248,22,95,200,248,22,93,200,250,22,252,47,2,11,6,10,10,98, -97,100,32,115,121,110,116,97,120,13,197,34,20,99,159,34,16,7,30,14,65, -35,37,115,116,120,15,69,115,116,120,45,112,97,105,114,63,16,11,30,17,2, -15,67,99,111,110,115,47,35,102,18,1,30,19,2,15,67,115,116,120,45,99, -97,114,20,5,30,21,2,15,67,115,116,120,45,99,100,114,22,6,30,23,2, -15,69,115,116,120,45,108,105,115,116,63,24,8,30,25,2,15,69,115,116,120, -45,62,108,105,115,116,26,4,30,27,69,35,37,115,116,120,99,97,115,101,28, -1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115,116, -105,116,117,116,101,29,0,16,1,18,158,165,40,100,73,115,121,110,116,97,120, -45,99,97,115,101,42,42,30,42,98,40,10,34,11,95,159,74,35,37,100,101, -102,105,110,101,45,101,116,45,97,108,31,9,11,159,2,28,9,11,159,71,35, -37,113,113,45,97,110,100,45,111,114,32,9,11,16,8,2,5,2,2,2,4, -2,2,2,6,2,2,2,7,2,2,98,39,10,35,11,94,159,64,35,37,115, -99,33,9,11,159,2,28,9,11,16,0,96,38,8,254,1,11,16,0,16,4, -37,11,63,115,116,120,34,3,1,7,101,110,118,50,57,54,50,35,16,12,36, -11,3,1,4,103,52,55,57,36,3,1,4,103,52,56,48,37,3,1,4,103, -52,56,49,38,3,1,4,103,52,56,50,39,3,1,4,103,52,56,51,40,3, -1,7,101,110,118,50,57,55,48,41,2,41,2,41,2,41,2,41,16,12,35, -11,61,95,42,64,115,116,120,101,43,62,107,108,44,64,105,100,61,63,45,66, -99,108,97,117,115,101,46,3,1,7,101,110,118,50,57,55,49,47,2,47,2, -47,2,47,2,47,158,2,8,42,158,11,42,158,2,9,42,158,2,10,42,158, -2,11,42,2,12,42,42,11,16,5,93,2,6,89,162,34,35,49,9,223,0, -27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248, -80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,35,248,80,158,41, -36,195,27,248,80,158,42,37,196,28,248,80,158,42,34,193,249,80,158,43,35, -248,80,158,44,36,195,27,248,80,158,45,37,196,28,248,80,158,45,38,193,248, -80,158,45,39,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, -27,248,22,93,196,27,248,22,94,197,27,251,22,67,198,199,197,200,253,80,158, -46,40,20,15,159,46,34,41,21,96,3,1,4,103,52,57,54,48,3,1,4, -103,52,57,53,49,3,1,4,103,52,57,52,50,3,1,4,103,52,57,51,51, -248,22,94,199,248,22,84,199,248,22,58,199,248,22,93,199,250,22,252,47,2, -11,2,13,197,34,20,99,159,34,16,7,2,14,2,17,2,19,2,21,2,23, -2,25,2,27,16,1,18,158,165,40,100,2,30,46,40,39,38,16,4,45,11, -2,34,3,1,7,101,110,118,50,57,56,53,52,16,10,44,11,3,1,4,103, -52,56,57,53,3,1,4,103,52,57,48,54,3,1,4,103,52,57,49,55,3, -1,4,103,52,57,50,56,3,1,7,101,110,118,50,57,57,50,57,2,57,2, -57,2,57,16,10,43,11,2,42,2,43,2,44,2,46,3,1,7,101,110,118, -50,57,57,51,58,2,58,2,58,2,58,158,2,48,46,158,11,46,158,2,49, -46,158,2,50,46,158,79,109,111,100,117,108,101,45,105,100,101,110,116,105,102, -105,101,114,61,63,59,46,2,51,46,46,11,16,5,93,2,7,89,162,34,35, -47,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38, -36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,35, -248,80,158,41,36,195,27,248,80,158,42,37,196,28,248,80,158,42,34,193,249, -80,158,43,38,248,80,158,44,36,195,248,80,158,44,39,248,80,158,45,37,196, -11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28, -28,248,22,47,248,22,217,194,248,80,158,39,40,249,22,252,103,3,195,32,60, -89,162,8,44,34,34,9,222,11,11,250,80,158,41,41,20,15,159,41,34,42, -21,93,3,1,4,103,53,48,48,61,195,27,249,22,67,195,196,251,80,158,43, -41,20,15,159,43,35,42,21,94,3,1,4,103,53,48,50,62,3,1,4,103, -53,48,49,63,248,22,59,197,248,22,58,197,250,22,252,47,2,11,2,13,197, -34,20,99,159,34,16,8,2,14,2,17,2,19,2,21,30,64,2,15,69,97, -112,112,101,110,100,47,35,102,65,0,30,66,2,15,71,115,116,120,45,110,117, -108,108,47,35,102,67,9,30,68,2,33,75,115,121,110,116,97,120,45,109,97, -112,112,105,110,103,63,69,8,2,27,16,2,18,158,94,100,66,115,121,110,116, -97,120,70,50,40,39,38,16,4,49,11,2,34,3,1,7,101,110,118,51,48, -48,53,71,16,8,48,11,3,1,4,103,52,57,55,72,3,1,4,103,52,57, -56,73,3,1,4,103,52,57,57,74,3,1,7,101,110,118,51,48,49,49,75, -2,75,2,75,16,8,47,11,2,42,63,108,111,99,76,67,112,97,116,116,101, -114,110,77,3,1,7,101,110,118,51,48,49,50,78,2,78,2,78,158,2,61, -50,50,18,158,96,10,2,4,2,62,94,2,70,2,63,50,11,93,83,159,34, -93,80,159,34,34,35,32,79,89,162,8,36,36,42,2,4,222,28,248,22,222, -193,252,22,216,198,248,22,217,199,197,11,198,193,96,68,35,37,107,101,114,110, -101,108,80,2,32,2,28,2,31,95,2,80,2,28,2,33,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1696); +37,196,248,22,65,250,22,152,3,199,196,199,11,27,248,80,158,39,37,198,250, +22,152,3,200,195,200,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248, +22,86,196,91,159,36,11,90,161,36,34,11,249,80,159,42,8,38,35,203,27, +249,22,67,201,200,251,80,158,47,42,20,15,159,47,44,49,21,94,2,13,2, +14,248,22,58,197,248,22,59,197,27,249,80,159,43,8,37,35,204,203,249,22, +7,195,89,162,34,35,40,9,224,4,2,248,194,248,22,65,248,195,197,27,28, +248,80,158,37,34,196,249,80,158,38,35,248,80,158,39,36,198,27,248,80,158, +40,37,199,250,22,152,3,201,195,201,11,28,192,27,248,22,58,194,27,248,22, +59,195,251,22,175,8,11,6,82,82,98,97,100,32,115,121,110,116,97,120,32, +40,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,32,102,111, +114,32,112,114,111,99,101,100,117,114,101,32,110,97,109,101,44,32,97,110,100, +32,110,111,116,32,97,32,110,101,115,116,101,100,32,112,114,111,99,101,100,117, +114,101,32,102,111,114,109,41,203,197,250,22,175,8,11,2,8,198,80,159,34, +8,39,35,83,158,34,16,2,89,162,8,100,36,57,2,15,223,0,91,159,36, +11,90,161,36,34,11,27,249,22,152,3,20,15,159,39,35,49,199,27,28,248, +80,158,39,34,194,249,80,158,40,35,248,80,158,41,36,196,27,248,80,158,42, +37,197,28,248,80,158,42,38,193,248,80,158,42,39,193,11,11,28,192,27,248, +22,58,194,27,248,22,59,195,249,22,7,248,22,159,3,249,80,158,45,40,20, +15,159,45,36,49,197,89,162,34,35,47,9,225,8,9,2,27,249,22,152,3, +20,15,159,39,37,49,198,249,80,158,39,41,196,27,249,22,67,198,197,251,80, +158,44,42,20,15,159,44,38,49,21,94,2,16,2,17,248,22,58,197,248,22, +59,197,27,28,248,80,158,40,34,195,249,80,158,41,35,248,80,158,42,36,197, +27,248,80,158,43,37,198,91,159,37,11,90,161,37,34,11,250,80,158,48,43, +198,35,11,28,194,27,28,248,22,149,3,197,196,201,249,80,158,48,44,28,248, +80,158,49,38,196,248,22,65,248,80,158,50,39,197,11,250,22,152,3,197,199, +197,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,249, +22,7,248,22,159,3,27,249,22,67,199,198,249,80,158,48,40,20,15,159,48, +39,49,249,22,71,248,22,58,197,250,80,158,53,42,20,15,159,53,40,49,21, +93,2,18,248,22,59,200,89,162,34,35,50,9,226,10,11,2,3,27,249,22, +152,3,20,15,159,40,41,49,199,249,80,158,40,41,197,27,250,22,67,199,200, +198,251,80,158,45,42,20,15,159,45,42,49,21,94,2,19,2,20,249,22,71, +248,22,58,199,248,22,84,199,248,22,86,197,250,22,175,8,11,2,8,197,87, +95,249,22,3,89,162,34,35,41,9,224,4,5,28,248,80,158,36,45,195,12, +251,22,175,8,11,6,40,40,110,111,116,32,97,110,32,105,100,101,110,116,105, +102,105,101,114,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,97,114, +103,117,109,101,110,116,196,198,194,27,248,80,158,38,46,194,28,192,251,22,175, +8,11,6,29,29,100,117,112,108,105,99,97,116,101,32,97,114,103,117,109,101, +110,116,32,105,100,101,110,116,105,102,105,101,114,200,196,12,193,80,159,34,8, +37,35,27,89,162,8,36,35,36,2,21,223,1,89,162,34,35,52,9,224,0, +1,87,94,28,249,22,77,247,22,169,13,21,93,70,101,120,112,114,101,115,115, +105,111,110,250,22,175,8,11,6,36,36,110,111,116,32,97,108,108,111,119,101, +100,32,105,110,32,97,110,32,101,120,112,114,101,115,115,105,111,110,32,99,111, +110,116,101,120,116,197,12,27,249,22,152,3,20,15,159,38,34,49,197,27,28, +248,80,158,38,34,194,249,80,158,39,35,248,80,158,40,36,196,27,248,80,158, +41,37,197,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195, +27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,44,248,80, +158,46,36,195,248,80,158,46,48,248,80,158,47,37,196,11,11,11,28,192,27, +248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248,80,158,41,45,194, +27,249,22,152,3,20,15,159,43,50,49,200,249,80,158,43,41,202,27,250,22, +67,200,198,199,252,80,158,49,42,20,15,159,49,51,49,21,95,2,22,2,23, +2,24,248,22,84,198,248,22,58,198,248,22,86,198,250,80,159,43,8,42,35, +199,202,200,250,80,159,40,8,42,35,196,199,197,250,22,7,248,196,20,15,159, +39,52,49,248,196,20,15,159,39,53,49,248,196,20,15,159,39,54,49,39,20, +99,159,40,16,15,2,81,2,82,2,83,2,84,2,85,2,86,30,2,26,2, +27,2,2,87,2,88,30,2,25,74,115,112,108,105,116,45,115,116,120,45,108, +105,115,116,3,2,89,2,90,30,2,29,1,26,99,104,101,99,107,45,100,117, +112,108,105,99,97,116,101,45,105,100,101,110,116,105,102,105,101,114,0,30,2, +25,69,115,116,120,45,110,117,108,108,63,10,2,91,16,21,33,97,33,102,33, +104,33,105,33,106,33,108,33,110,33,111,33,112,33,114,33,116,33,118,33,119, +33,120,33,121,33,122,33,124,33,125,33,127,33,128,2,33,129,2,11,16,5, +93,2,3,87,95,83,158,34,16,2,89,162,34,36,47,2,7,223,0,27,28, +248,80,158,36,34,195,249,80,158,37,39,248,80,158,38,36,197,27,248,80,158, +39,38,198,28,248,80,158,39,40,193,248,80,158,39,41,193,11,11,28,192,27, +248,22,58,194,27,248,22,59,195,249,80,158,39,42,199,250,80,158,42,43,20, +15,159,42,36,45,21,93,2,62,249,22,2,80,159,44,8,28,35,199,250,22, +175,8,11,2,8,197,80,159,34,8,29,35,83,158,34,16,2,89,162,35,35, +40,9,223,0,250,80,158,37,43,20,15,159,37,37,45,21,93,2,63,248,22, +58,197,80,159,34,8,28,35,89,162,34,35,57,9,223,0,27,247,22,169,13, +87,94,28,249,22,77,194,21,95,66,109,111,100,117,108,101,2,64,69,116,111, +112,45,108,101,118,101,108,12,250,22,175,8,11,6,51,51,97,108,108,111,119, +101,100,32,111,110,108,121,32,97,116,32,116,104,101,32,116,111,112,45,108,101, +118,101,108,32,111,114,32,97,32,109,111,100,117,108,101,32,116,111,112,45,108, +101,118,101,108,197,27,249,22,152,3,20,15,159,38,34,45,197,27,28,248,80, +158,38,34,194,249,80,158,39,35,248,80,158,40,36,196,248,80,158,40,37,248, +80,158,41,38,197,11,28,192,20,15,159,37,35,45,27,28,248,80,158,39,34, +195,249,80,158,40,39,248,80,158,41,36,197,27,248,80,158,42,38,198,28,248, +80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,248,80,158,44,37, +248,80,158,45,38,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,28, +249,22,147,8,199,2,64,249,80,159,42,8,29,35,198,201,27,250,22,161,8, +196,201,248,22,159,3,20,15,159,45,38,45,27,249,22,152,3,20,15,159,44, +39,45,195,27,28,248,80,158,44,34,194,28,27,248,80,158,45,36,195,28,248, +80,158,45,44,193,28,249,22,167,3,194,20,15,159,46,40,45,9,11,11,27, +248,80,158,45,38,195,28,248,80,158,45,40,193,248,80,158,45,41,193,11,11, +11,28,192,250,80,158,46,43,20,15,159,46,41,45,21,93,2,65,195,27,28, +248,80,158,45,34,195,28,27,248,80,158,46,36,196,28,248,80,158,46,44,193, +28,249,22,167,3,194,20,15,159,47,42,45,9,11,11,27,248,80,158,46,38, +196,28,248,80,158,46,34,193,249,80,158,47,35,27,248,80,158,49,36,196,28, +248,80,158,49,40,193,248,22,65,248,80,158,50,41,194,11,27,248,80,158,49, +38,196,28,248,80,158,49,34,193,249,80,158,50,35,248,80,158,51,36,195,248, +80,158,51,37,248,80,158,52,38,196,11,11,11,11,28,192,27,248,22,58,194, +27,248,22,59,195,27,249,22,67,196,195,251,80,158,51,43,20,15,159,51,43, +45,21,94,2,66,2,67,248,22,58,197,248,22,59,197,27,28,248,80,158,46, +34,196,28,27,248,80,158,47,36,197,28,248,80,158,47,44,193,28,249,22,167, +3,194,20,15,159,48,44,45,9,11,11,27,248,80,158,47,38,197,28,248,80, +158,47,40,193,248,80,158,47,41,193,11,11,11,28,192,250,80,158,48,43,20, +15,159,48,45,45,21,93,2,68,195,27,28,248,80,158,47,34,197,28,27,248, +80,158,48,36,198,28,248,80,158,48,44,193,28,249,22,167,3,194,20,15,159, +49,46,45,9,11,11,27,248,80,158,48,38,198,28,248,80,158,48,40,193,248, +80,158,48,41,193,11,11,11,28,192,250,80,158,49,43,20,15,159,49,47,45, +21,93,2,69,195,27,28,248,80,158,48,34,198,28,27,248,80,158,49,36,199, +28,248,80,158,49,44,193,28,249,22,167,3,194,20,15,159,50,48,45,9,11, +11,27,248,80,158,49,38,199,28,248,80,158,49,34,193,249,80,158,50,35,27, +248,80,158,52,36,196,28,248,80,158,52,40,193,248,22,65,248,80,158,53,41, +194,11,27,248,80,158,52,38,196,28,248,80,158,52,34,193,249,80,158,53,35, +248,80,158,54,36,195,248,80,158,54,37,248,80,158,55,38,196,11,11,11,11, +28,192,27,248,22,58,194,27,248,22,59,195,250,22,175,8,11,6,54,54,115, +121,110,116,97,120,32,100,101,102,105,110,105,116,105,111,110,115,32,110,111,116, +32,97,108,108,111,119,101,100,32,119,105,116,104,105,110,32,98,101,103,105,110, +45,102,111,114,45,115,121,110,116,97,120,204,250,80,158,50,43,20,15,159,50, +49,45,21,93,2,70,200,249,80,159,40,8,29,35,196,199,34,20,99,159,36, +16,11,2,81,2,89,2,83,2,91,2,84,2,82,2,85,2,86,2,87,2, +88,2,90,16,16,33,132,2,33,134,2,33,136,2,33,137,2,33,141,2,33, +144,2,33,145,2,33,147,2,33,148,2,33,150,2,33,151,2,33,153,2,33, +154,2,33,156,2,33,157,2,33,159,2,11,9,93,2,80,96,2,80,2,29, +2,25,2,31,0}; + EVAL_ONE_SIZED_STR((char *)expr, 6787); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,101,252,198,8,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,70,35,37,119,105, -116,104,45,115,116,120,1,29,2,11,11,10,10,10,34,80,158,34,34,20,99, -159,35,16,7,30,3,2,2,76,119,105,116,104,45,115,121,110,116,97,120,45, -102,97,105,108,4,254,1,30,5,2,2,67,99,111,117,110,116,101,114,6,254, -1,30,7,2,2,73,97,112,112,101,110,100,45,110,117,109,98,101,114,8,254, -1,30,9,2,2,1,20,103,101,110,101,114,97,116,101,45,116,101,109,112,111, -114,97,114,105,101,115,10,254,1,30,11,65,35,37,115,116,120,12,69,115,116, -120,45,108,105,115,116,63,13,8,30,14,2,12,69,115,116,120,45,62,108,105, -115,116,15,4,30,16,2,12,71,105,100,101,110,116,105,102,105,101,114,63,17, -2,16,0,11,11,16,3,2,8,2,6,2,4,37,11,16,2,2,10,71,119, -105,116,104,45,115,121,110,116,97,120,18,16,2,11,11,16,2,2,10,2,18, -35,36,93,16,5,93,2,18,87,94,83,159,34,93,80,159,34,56,35,89,162, -8,64,38,58,64,108,111,111,112,19,223,0,28,248,22,63,196,27,249,22,67, -196,197,251,80,158,39,42,20,15,159,39,40,48,21,94,3,1,4,103,53,49, -52,20,3,1,4,103,53,49,51,21,248,22,58,197,248,22,59,197,26,8,22, -65,73,115,121,110,116,97,120,45,99,97,115,101,42,42,22,11,10,248,22,58, -204,9,79,109,111,100,117,108,101,45,105,100,101,110,116,105,102,105,101,114,61, -63,23,249,22,65,248,22,58,23,15,251,80,159,48,56,35,23,15,23,16,248, -22,59,23,18,248,22,59,23,19,249,22,65,65,95,101,108,115,101,24,249,22, -65,2,4,249,22,65,72,113,117,111,116,101,45,115,121,110,116,97,120,25,250, -22,216,11,248,22,215,248,22,58,23,23,248,22,58,23,22,89,162,34,35,59, -9,223,0,27,249,22,216,20,15,159,37,34,48,196,27,28,248,80,158,37,34, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,182,1,0,0,1,0,0,6,0,9,0,24,0, +37,0,46,0,56,0,71,0,77,0,103,0,112,0,137,0,159,0,187,0,207, +0,225,0,239,0,0,1,18,1,49,1,78,1,103,1,132,1,166,1,198,1, +216,1,250,1,10,2,36,2,65,2,83,2,115,2,134,2,163,2,186,2,201, +2,212,2,217,2,236,2,239,2,252,2,3,3,15,3,20,3,26,3,36,3, +50,3,60,3,67,3,74,3,81,3,88,3,95,3,102,3,115,3,121,3,131, +3,157,3,162,3,171,3,186,3,210,3,218,3,226,3,243,3,245,3,255,3, +1,4,3,4,13,4,19,4,29,4,39,4,46,4,53,4,60,4,67,4,74, +4,81,4,88,4,95,4,98,4,100,4,104,4,107,4,110,4,117,4,124,4, +131,4,138,4,145,4,152,4,156,4,159,4,162,4,184,4,194,4,204,4,214, +4,224,4,234,4,244,4,246,4,0,5,10,5,17,5,24,5,31,5,38,5, +45,5,52,5,59,5,66,5,73,5,77,5,82,5,86,5,89,5,91,5,96, +5,103,5,110,5,117,5,124,5,131,5,138,5,166,5,177,5,187,5,197,5, +199,5,209,5,214,5,217,5,226,5,235,5,245,5,255,5,9,6,15,6,22, +6,32,6,42,6,49,6,56,6,63,6,70,6,77,6,84,6,108,6,137,6, +141,6,147,6,152,6,156,6,166,6,176,6,186,6,190,6,200,6,207,6,214, +6,221,6,231,6,241,6,248,6,255,6,6,7,13,7,20,7,27,7,34,7, +41,7,48,7,55,7,62,7,69,7,76,7,86,7,91,7,104,7,112,7,116, +7,147,7,149,7,177,7,182,7,187,7,193,7,203,7,213,7,223,7,233,7, +244,7,255,7,9,8,16,8,23,8,30,8,41,8,46,8,51,8,54,8,61, +8,68,8,75,8,82,8,89,8,99,8,109,8,116,8,123,8,130,8,140,8, +150,8,160,8,170,8,177,8,184,8,191,8,201,8,207,8,212,8,222,8,229, +8,236,8,243,8,250,8,8,9,13,9,19,9,29,9,39,9,46,9,53,9, +60,9,67,9,74,9,81,9,88,9,95,9,102,9,109,9,113,9,118,9,123, +9,136,9,146,9,156,9,166,9,176,9,183,9,190,9,200,9,210,9,214,9, +219,9,222,9,240,9,242,9,247,9,0,10,14,10,26,10,38,10,50,10,64, +10,80,10,86,10,100,10,114,10,130,10,136,10,158,10,88,11,104,11,160,11, +178,11,197,11,1,12,20,12,36,12,56,12,62,12,78,12,91,12,98,12,145, +12,162,12,172,12,245,12,4,13,90,13,113,13,146,13,2,14,43,14,76,14, +94,14,109,14,115,14,136,14,157,14,173,14,212,14,30,15,49,15,56,15,93, +15,101,15,109,15,130,15,152,15,159,15,167,15,193,15,204,15,220,15,230,15, +240,15,255,15,5,16,30,16,135,16,201,16,227,16,33,17,63,17,74,17,140, +17,166,17,234,17,254,17,14,18,30,18,83,18,100,18,110,18,117,18,124,18, +131,18,138,18,145,18,162,18,178,18,246,18,6,19,42,19,96,19,115,19,122, +19,130,19,138,19,195,19,230,19,7,20,75,20,96,20,113,20,129,20,220,20, +19,21,26,21,33,21,40,21,47,21,54,21,80,21,97,21,126,21,145,21,216, +21,232,21,9,22,63,22,85,22,92,22,100,22,107,22,115,22,213,22,220,22, +227,22,234,22,97,23,110,23,123,23,139,23,172,23,231,23,252,23,55,24,76, +24,93,24,109,24,161,24,183,24,239,24,247,24,254,24,6,25,100,25,121,25, +137,25,170,25,238,25,3,26,71,26,87,26,104,26,120,26,203,26,232,26,249, +26,9,27,109,27,135,27,168,27,185,27,201,27,13,28,29,28,62,28,116,28, +135,28,142,28,150,28,207,28,0,29,13,29,50,29,83,29,151,29,172,29,189, +29,205,29,17,30,145,30,0,0,185,67,0,0,65,98,101,103,105,110,29,11, +11,74,115,116,114,117,99,116,58,112,114,111,109,105,115,101,72,109,97,107,101, +45,112,114,111,109,105,115,101,68,112,114,111,109,105,115,101,63,69,112,114,111, +109,105,115,101,45,112,74,115,101,116,45,112,114,111,109,105,115,101,45,112,33, +65,102,111,114,99,101,1,24,99,117,114,114,101,110,116,45,112,97,114,97,109, +101,116,101,114,105,122,97,116,105,111,110,68,35,37,112,97,114,97,109,122,1, +23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116, +105,111,110,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, +45,107,101,121,1,26,99,97,108,108,45,119,105,116,104,45,112,97,114,97,109, +101,116,101,114,105,122,97,116,105,111,110,79,115,116,114,117,99,116,58,98,114, +101,97,107,45,112,97,114,97,109,122,77,109,97,107,101,45,98,114,101,97,107, +45,112,97,114,97,109,122,73,98,114,101,97,107,45,112,97,114,97,109,122,63, +76,98,114,101,97,107,45,112,97,114,97,109,122,45,114,101,102,77,98,114,101, +97,107,45,112,97,114,97,109,122,45,115,101,116,33,1,29,115,116,114,117,99, +116,58,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116, +105,111,110,1,27,109,97,107,101,45,98,114,101,97,107,45,112,97,114,97,109, +101,116,101,114,105,122,97,116,105,111,110,1,23,98,114,101,97,107,45,112,97, +114,97,109,101,116,101,114,105,122,97,116,105,111,110,63,1,27,98,114,101,97, +107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,99,101, +108,108,1,32,115,101,116,45,98,114,101,97,107,45,112,97,114,97,109,101,116, +101,114,105,122,97,116,105,111,110,45,99,101,108,108,33,1,30,99,117,114,114, +101,110,116,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122, +97,116,105,111,110,77,98,114,101,97,107,45,101,110,97,98,108,101,100,45,107, +101,121,1,32,99,97,108,108,45,119,105,116,104,45,98,114,101,97,107,45,112, +97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,75,99,104,101,99,107, +45,102,111,114,45,98,114,101,97,107,1,24,115,101,108,101,99,116,45,104,97, +110,100,108,101,114,47,110,111,45,98,114,101,97,107,115,1,27,115,101,108,101, +99,116,45,104,97,110,100,108,101,114,47,98,114,101,97,107,115,45,97,115,45, +105,115,77,102,97,108,115,101,45,116,104,114,101,97,100,45,99,101,108,108,1, +30,99,104,101,99,107,45,119,105,116,104,45,104,97,110,100,108,101,114,115,45, +105,110,45,99,111,110,116,101,120,116,78,104,97,110,100,108,101,114,45,112,114, +111,109,112,116,45,107,101,121,1,27,99,97,108,108,45,119,105,116,104,45,101, +120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,1,21,101,120,99, +101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,74,119,105, +116,104,45,104,97,110,100,108,101,114,115,42,70,108,101,116,45,115,116,114,117, +99,116,64,116,105,109,101,78,112,97,114,97,109,101,116,101,114,105,122,101,45, +98,114,101,97,107,62,100,111,72,112,97,114,97,109,101,116,101,114,105,122,101, +66,108,101,116,47,99,99,71,115,101,116,33,45,118,97,108,117,101,115,64,99, +97,115,101,65,100,101,108,97,121,69,102,108,117,105,100,45,108,101,116,73,119, +105,116,104,45,104,97,110,100,108,101,114,115,69,99,97,115,101,45,116,101,115, +116,3,1,4,103,54,57,54,3,1,4,103,54,57,53,3,1,4,103,54,57, +56,3,1,4,103,54,57,55,3,1,4,103,55,48,48,3,1,4,103,54,57, +57,6,10,10,98,97,100,32,115,121,110,116,97,120,65,35,37,115,116,120,69, +35,37,115,116,120,99,97,115,101,1,24,97,112,112,108,121,45,112,97,116,116, +101,114,110,45,115,117,98,115,116,105,116,117,116,101,64,104,101,114,101,68,35, +37,100,101,102,105,110,101,74,35,37,115,109,97,108,108,45,115,99,104,101,109, +101,1,22,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97, +116,105,111,110,67,112,114,111,109,105,115,101,67,35,37,113,113,115,116,120,76, +35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,61,120,3,1,7, +101,110,118,51,56,50,52,61,95,61,107,3,1,7,101,110,118,51,56,50,53, +65,113,117,111,116,101,3,1,7,101,110,118,51,56,51,57,3,1,7,101,110, +118,51,56,52,48,3,1,4,103,55,51,49,3,1,4,103,55,51,52,3,1, +4,103,55,51,51,3,1,4,103,55,51,50,3,1,4,103,55,51,54,3,1, +4,103,55,51,53,3,1,4,103,55,51,56,3,1,4,103,55,51,55,62,105, +102,61,118,63,46,46,46,62,101,49,62,101,50,3,1,4,103,55,51,57,3, +1,4,103,55,52,48,3,1,4,103,55,52,50,3,1,4,103,55,52,49,3, +1,4,103,55,52,52,3,1,4,103,55,52,51,63,108,101,116,62,99,49,62, +99,50,1,20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114, +114,111,114,3,1,7,101,110,118,51,56,53,53,3,1,7,101,110,118,51,56, +53,54,3,1,7,101,110,118,51,56,55,49,3,1,7,101,110,118,51,56,55, +50,3,1,7,101,110,118,51,56,57,49,3,1,7,101,110,118,51,56,57,50, +61,114,3,1,7,101,110,118,51,57,49,54,3,1,7,101,110,118,51,57,49, +55,3,1,4,103,55,54,54,3,1,4,103,55,54,53,3,1,4,103,55,54, +48,3,1,4,103,55,53,57,3,1,4,103,55,54,52,3,1,4,103,55,54, +49,3,1,4,103,55,54,51,3,1,4,103,55,54,50,66,100,111,108,111,111, +112,63,118,97,114,64,105,110,105,116,63,110,111,116,62,101,48,61,99,64,115, +116,101,112,3,1,4,103,55,55,50,3,1,4,103,55,55,49,3,1,4,103, +55,54,56,3,1,4,103,55,54,55,3,1,4,103,55,55,48,3,1,4,103, +55,54,57,1,26,100,97,116,117,109,45,62,115,121,110,116,97,120,45,111,98, +106,101,99,116,47,115,104,97,112,101,70,35,37,119,105,116,104,45,115,116,120, +3,1,7,101,110,118,52,48,48,56,3,1,7,101,110,118,52,48,48,57,61, +115,3,1,7,101,110,118,52,48,50,54,64,100,101,115,116,29,11,11,68,104, +101,114,101,45,115,116,120,3,1,6,101,110,118,52,53,54,3,1,7,101,110, +118,52,48,53,57,3,1,7,101,110,118,52,48,54,54,3,1,7,101,110,118, +52,48,55,51,65,95,101,108,115,101,3,1,4,103,55,55,53,3,1,7,101, +110,118,52,48,56,56,3,1,7,101,110,118,52,48,56,57,66,108,97,109,98, +100,97,3,1,4,103,55,56,54,3,1,4,103,55,56,53,3,1,4,103,55, +57,48,3,1,4,103,55,57,50,3,1,4,103,55,57,49,1,22,119,105,116, +104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,1,27, +99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115,101,116, +45,102,105,114,115,116,63,112,47,118,65,101,120,112,114,49,64,101,120,112,114, +63,115,116,120,3,1,7,101,110,118,52,49,48,54,3,1,7,101,110,118,52, +49,48,55,3,1,7,101,110,118,52,49,50,54,63,118,97,108,3,1,7,101, +110,118,52,49,50,55,3,1,4,103,55,57,55,3,1,4,103,55,57,57,3, +1,4,103,55,57,56,3,1,7,101,110,118,52,49,54,53,3,1,7,101,110, +118,52,49,54,54,3,1,4,103,56,50,53,3,1,4,103,56,50,52,3,1, +4,103,56,50,49,3,1,4,103,56,50,48,3,1,4,103,56,50,51,3,1, +4,103,56,50,50,3,1,4,103,56,49,48,3,1,4,103,56,48,57,3,1, +4,103,56,51,48,3,1,4,103,56,50,55,3,1,4,103,56,50,54,3,1, +4,103,56,50,57,3,1,4,103,56,50,56,69,112,114,101,100,45,110,97,109, +101,64,112,114,101,100,72,104,97,110,100,108,101,114,45,110,97,109,101,67,104, +97,110,100,108,101,114,63,98,112,122,1,29,99,97,108,108,45,119,105,116,104, +45,99,111,110,116,105,110,117,97,116,105,111,110,45,112,114,111,109,112,116,61, +101,1,26,97,98,111,114,116,45,99,117,114,114,101,110,116,45,99,111,110,116, +105,110,117,97,116,105,111,110,64,108,105,115,116,64,99,111,110,115,65,116,104, +117,110,107,3,1,7,101,110,118,52,49,56,57,3,1,7,101,110,118,52,49, +57,48,3,1,7,101,110,118,52,50,48,57,3,1,7,101,110,118,52,50,49, +48,3,1,8,119,115,116,109,112,56,49,49,3,1,8,119,115,116,109,112,56, +49,50,3,1,7,101,110,118,52,50,50,50,3,1,4,103,56,52,52,3,1, +4,103,56,52,51,3,1,4,103,56,52,55,70,108,101,116,45,118,97,108,117, +101,115,64,116,101,109,112,64,115,101,116,33,62,105,100,3,1,4,103,56,52, +54,3,1,4,103,56,52,53,3,1,4,103,56,51,57,3,1,4,103,56,52, +57,3,1,4,103,56,52,56,3,1,7,101,110,118,52,50,56,49,3,1,7, +101,110,118,52,50,56,50,3,1,4,103,56,51,49,3,1,4,103,56,51,50, +3,1,4,103,56,51,51,3,1,7,101,110,118,52,50,57,56,3,1,7,101, +110,118,52,50,57,57,3,1,7,101,110,118,52,51,51,52,3,1,7,101,110, +118,52,51,51,53,3,1,4,103,56,53,52,3,1,4,103,56,53,54,3,1, +4,103,56,53,53,3,1,7,101,110,118,52,51,53,49,65,98,111,100,121,49, +64,98,111,100,121,3,1,7,101,110,118,52,51,53,50,3,1,4,103,56,54, +51,3,1,4,103,56,54,50,3,1,4,103,56,54,53,3,1,4,103,56,54, +52,73,100,101,102,105,110,101,45,115,116,114,117,99,116,64,98,97,115,101,65, +102,105,101,108,100,3,1,7,101,110,118,52,51,55,51,3,1,7,101,110,118, +52,51,55,52,3,1,4,103,56,56,49,3,1,4,103,56,56,50,3,1,4, +103,56,56,48,3,1,4,103,56,55,57,3,1,4,103,56,55,53,3,1,4, +103,56,55,52,3,1,4,103,56,56,56,3,1,4,103,56,56,53,3,1,4, +103,56,56,55,3,1,4,103,56,56,54,63,116,109,112,64,115,119,97,112,64, +110,97,109,101,72,100,121,110,97,109,105,99,45,119,105,110,100,3,1,7,101, +110,118,52,51,57,54,3,1,7,101,110,118,52,51,57,55,3,1,7,101,110, +118,52,52,49,54,3,1,7,101,110,118,52,52,49,55,3,1,4,103,56,57, +51,3,1,4,103,56,57,50,3,1,7,101,110,118,52,52,53,55,3,1,7, +101,110,118,52,52,53,56,63,99,112,117,64,117,115,101,114,62,103,99,6,15, +15,105,110,115,112,101,99,116,111,114,32,111,114,32,35,102,61,112,64,99,101, +108,108,68,35,37,107,101,114,110,101,108,30,2,55,69,115,116,120,45,112,97, +105,114,63,11,30,2,55,67,99,111,110,115,47,35,102,1,30,2,55,67,115, +116,120,45,99,97,114,5,30,2,55,67,115,116,120,45,99,100,114,6,30,2, +55,69,97,112,112,101,110,100,47,35,102,0,30,2,55,71,115,116,120,45,110, +117,108,108,47,35,102,9,30,2,56,2,57,0,30,2,55,69,115,116,120,45, +108,105,115,116,63,8,30,2,55,69,115,116,120,45,62,108,105,115,116,4,16, +4,11,11,2,65,3,1,7,101,110,118,51,56,49,55,95,8,193,11,16,0, +97,10,35,11,95,159,2,63,9,11,159,2,64,9,11,159,2,55,9,11,16, +0,97,10,34,11,95,159,2,10,9,11,159,2,59,9,11,159,2,60,9,11, +16,82,2,5,2,2,2,18,2,2,2,8,2,2,2,35,2,2,2,6,2, +2,2,24,2,2,2,26,2,2,2,32,2,2,2,19,2,2,2,39,2,2, +2,23,2,2,2,22,2,2,2,21,2,2,2,20,2,2,2,4,2,2,2, +28,2,2,2,29,2,2,2,30,2,2,2,3,2,2,2,42,2,2,2,43, +2,2,2,36,2,2,2,15,2,2,2,7,2,2,2,14,2,2,2,37,2, +2,2,38,2,2,2,33,2,2,2,40,2,2,2,41,2,2,2,9,2,2, +2,45,2,2,2,61,2,2,2,46,2,2,2,16,2,2,2,31,2,2,2, +44,2,2,2,17,2,2,2,47,2,2,2,13,2,2,2,62,2,2,18,97, +2,58,8,146,4,8,145,4,8,144,4,8,143,4,98,8,146,4,8,145,4, +8,144,4,8,143,4,16,8,11,11,3,1,4,103,54,57,50,3,1,4,103, +54,57,51,3,1,4,103,54,57,52,2,66,2,66,2,66,16,6,11,11,2, +67,2,68,2,69,2,69,18,158,96,10,63,101,113,63,2,48,94,2,70,2, +49,8,148,4,18,158,96,10,64,101,113,118,63,2,50,94,2,70,2,51,8, +148,4,98,8,146,4,8,145,4,8,144,4,8,143,4,16,8,11,11,3,1, +4,103,54,56,57,3,1,4,103,54,57,48,3,1,4,103,54,57,49,2,71, +2,71,2,71,16,8,11,11,2,67,2,65,2,68,2,72,2,72,2,72,18, +158,96,10,64,109,101,109,118,2,52,94,2,70,2,53,8,151,4,30,2,55, +71,105,100,101,110,116,105,102,105,101,114,63,2,30,68,35,37,115,116,120,108, +111,99,68,114,101,108,111,99,97,116,101,0,30,2,56,2,95,1,16,4,11, +11,2,65,3,1,7,101,110,118,51,56,53,48,96,8,146,4,8,145,4,8, +144,4,8,156,4,18,158,2,58,8,157,4,98,8,146,4,8,145,4,8,144, +4,8,156,4,16,6,11,11,3,1,4,103,55,50,57,3,1,4,103,55,51, +48,2,96,2,96,16,6,11,11,2,67,2,82,2,97,2,97,18,158,96,10, +2,1,2,73,93,64,99,111,110,100,8,159,4,18,158,64,101,108,115,101,8, +157,4,98,8,146,4,8,145,4,8,144,4,8,156,4,16,10,11,11,3,1, +4,103,55,50,53,3,1,4,103,55,50,54,3,1,4,103,55,50,55,3,1, +4,103,55,50,56,2,98,2,98,2,98,2,98,16,10,11,11,2,67,2,82, +2,84,2,85,2,99,2,99,2,99,2,99,18,158,161,10,2,1,2,74,2, +75,2,76,8,162,4,98,8,146,4,8,145,4,8,144,4,8,156,4,16,12, +11,11,3,1,4,103,55,50,48,3,1,4,103,55,50,49,3,1,4,103,55, +50,50,3,1,4,103,55,50,51,3,1,4,103,55,50,52,2,100,2,100,2, +100,2,100,2,100,16,12,11,11,2,67,2,82,2,68,2,84,2,85,2,101, +2,101,2,101,2,101,2,101,18,158,96,10,2,81,95,2,47,2,77,2,78, +159,2,1,2,79,2,80,8,164,4,18,16,2,95,2,83,93,8,157,51,16, +4,11,11,2,102,3,1,7,101,110,118,51,57,48,52,95,9,8,157,51,2, +56,98,8,146,4,8,145,4,8,144,4,8,156,4,16,16,11,11,3,1,4, +103,55,49,51,3,1,4,103,55,49,52,3,1,4,103,55,49,53,3,1,4, +103,55,49,54,3,1,4,103,55,49,55,3,1,4,103,55,49,56,3,1,4, +103,55,49,57,2,103,2,103,2,103,2,103,2,103,2,103,2,103,16,16,11, +11,2,67,2,82,2,68,2,84,2,85,2,93,2,94,2,104,2,104,2,104, +2,104,2,104,2,104,2,104,18,158,96,10,2,92,93,94,2,65,2,86,96, +2,81,95,2,47,2,65,2,87,159,2,1,2,88,2,89,160,2,43,2,65, +2,90,2,91,8,167,4,18,16,2,95,2,83,93,8,162,51,16,4,11,11, +2,102,3,1,7,101,110,118,51,57,51,51,95,9,8,162,51,2,56,30,2, +55,73,115,116,120,45,99,104,101,99,107,47,101,115,99,7,30,2,55,70,115, +116,120,45,114,111,116,97,116,101,12,30,2,56,2,126,2,30,2,127,76,119, +105,116,104,45,115,121,110,116,97,120,45,102,97,105,108,3,16,4,11,11,66, +111,114,105,103,45,120,3,1,7,101,110,118,51,57,57,49,18,97,2,58,8, +146,4,8,145,4,8,144,4,8,174,4,16,16,11,11,2,67,2,114,2,115, +2,119,2,117,2,84,2,118,2,129,2,2,129,2,2,129,2,2,129,2,2, +129,2,2,129,2,2,129,2,16,16,11,11,3,1,4,103,55,52,53,3,1, +4,103,55,52,54,3,1,4,103,55,52,55,3,1,4,103,55,52,56,3,1, +4,103,55,52,57,3,1,4,103,55,53,48,3,1,4,103,55,53,49,2,128, +2,2,128,2,2,128,2,2,128,2,2,128,2,2,128,2,2,128,2,98,8, +146,4,8,145,4,8,144,4,8,174,4,8,177,4,8,176,4,18,158,2,58, +8,178,4,18,100,2,58,8,146,4,8,145,4,8,144,4,8,174,4,8,177, +4,8,176,4,16,6,11,11,2,82,2,130,2,2,131,2,2,131,2,18,158, +2,132,2,8,178,4,18,158,2,132,2,8,178,4,16,4,11,11,3,1,4, +103,55,53,54,3,1,7,101,110,118,52,48,52,56,99,8,146,4,8,145,4, +8,144,4,8,174,4,8,177,4,8,176,4,8,183,4,18,158,2,58,8,184, +4,18,158,2,132,2,8,184,4,18,158,97,10,2,92,2,113,2,109,95,2, +81,94,2,116,2,110,158,2,1,2,111,8,184,4,18,158,95,10,2,107,2, +108,8,184,4,16,4,11,11,2,134,2,3,1,6,101,110,118,52,53,56,16, +4,11,11,2,134,2,2,135,2,16,4,11,11,2,134,2,2,135,2,16,4, +11,11,2,65,3,1,6,101,110,118,52,53,52,95,8,193,11,16,0,97,10, +35,11,95,159,64,35,37,115,99,9,11,159,2,60,9,11,159,2,55,9,11, +16,0,97,10,34,11,95,159,2,10,9,11,159,2,60,9,11,159,2,55,9, +11,16,14,73,115,121,110,116,97,120,45,99,97,115,101,42,42,2,133,2,2, +126,2,133,2,78,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117, +116,101,2,133,2,2,57,2,133,2,66,115,121,110,116,97,120,2,133,2,75, +115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,2,133,2,2,95,2, +133,2,18,16,2,103,93,158,159,10,2,113,2,112,8,184,4,8,131,5,8, +130,5,8,129,5,8,128,5,8,191,4,8,190,4,8,189,4,13,16,4,35, +2,133,2,2,56,11,93,8,160,52,16,4,11,11,2,102,2,136,2,95,9, +8,160,52,2,56,18,16,2,95,2,83,93,8,160,52,16,4,11,11,2,102, +2,136,2,95,9,8,160,52,2,56,101,8,146,4,8,145,4,8,144,4,8, +174,4,8,177,4,8,176,4,8,183,4,16,6,11,11,3,1,4,103,55,53, +55,3,1,4,103,55,53,56,2,137,2,2,137,2,16,4,11,11,2,85,3, +1,7,101,110,118,52,48,54,55,18,158,97,10,2,92,2,113,2,120,96,2, +81,2,121,159,2,1,2,122,2,123,158,2,1,2,124,8,134,5,18,158,95, +10,2,105,2,106,8,134,5,18,16,2,103,93,158,159,10,2,113,2,125,8, +134,5,8,131,5,8,130,5,8,129,5,8,128,5,8,191,4,8,190,4,8, +189,4,13,16,4,35,2,133,2,2,56,11,93,8,167,52,16,4,11,11,2, +102,2,138,2,95,9,8,167,52,2,56,18,16,2,95,2,83,93,8,167,52, +16,4,11,11,2,102,2,138,2,95,9,8,167,52,2,56,96,93,8,135,52, +16,4,11,11,3,1,8,119,115,116,109,112,55,53,50,3,1,7,101,110,118, +52,48,50,53,16,4,11,11,3,1,4,103,55,53,53,3,1,7,101,110,118, +52,48,55,56,16,4,11,11,2,139,2,3,1,7,101,110,118,52,48,55,57, +18,16,2,158,95,10,2,119,2,83,8,139,5,95,9,8,135,52,2,127,16, +4,11,11,2,65,3,1,7,101,110,118,52,48,56,51,18,97,2,58,8,146, +4,8,145,4,8,144,4,8,141,5,98,8,146,4,8,145,4,8,144,4,8, +141,5,16,6,11,11,3,1,4,103,55,55,51,3,1,4,103,55,55,52,2, +141,2,2,141,2,16,6,11,11,2,44,63,101,120,112,2,142,2,2,142,2, +18,158,95,10,2,4,95,2,143,2,9,2,140,2,8,143,5,95,8,146,4, +8,145,4,8,144,4,18,158,2,3,8,145,5,18,158,2,4,8,145,5,18, +158,2,5,8,145,5,18,158,2,6,8,145,5,18,158,2,7,8,145,5,16, +4,11,11,2,154,2,3,1,7,101,110,118,52,48,57,57,18,97,2,58,8, +146,4,8,145,4,8,144,4,8,151,5,98,8,146,4,8,145,4,8,144,4, +8,151,5,16,8,11,11,3,1,4,103,55,56,50,3,1,4,103,55,56,51, +3,1,4,103,55,56,52,2,155,2,2,155,2,2,155,2,16,8,11,11,2, +67,2,152,2,2,153,2,2,156,2,2,156,2,2,156,2,18,158,161,10,2, +92,9,2,144,2,2,145,2,8,153,5,16,12,11,11,2,67,65,112,97,114, +97,109,2,158,2,2,152,2,2,153,2,2,159,2,2,159,2,2,159,2,2, +159,2,2,159,2,16,12,11,11,3,1,4,103,55,55,55,3,1,4,103,55, +55,56,3,1,4,103,55,55,57,3,1,4,103,55,56,48,3,1,4,103,55, +56,49,2,157,2,2,157,2,2,157,2,2,157,2,2,157,2,98,8,146,4, +8,145,4,8,144,4,8,151,5,8,156,5,8,155,5,18,158,2,58,8,157, +5,18,158,2,132,2,8,157,5,18,158,2,132,2,8,157,5,100,8,146,4, +8,145,4,8,144,4,8,151,5,8,156,5,8,155,5,16,4,11,11,3,1, +4,103,55,56,57,3,1,7,101,110,118,52,49,52,53,16,4,11,11,2,151, +2,3,1,7,101,110,118,52,49,52,54,18,158,97,10,2,149,2,2,12,159, +2,11,95,2,150,2,11,2,12,2,146,2,160,2,92,9,2,147,2,2,148, +2,8,161,5,18,16,2,95,2,83,93,8,169,53,16,4,11,11,2,102,3, +1,7,101,110,118,52,49,53,48,95,9,8,169,53,2,56,96,93,8,160,53, +16,4,11,11,3,1,8,119,115,116,109,112,55,56,55,3,1,7,101,110,118, +52,49,51,57,16,4,11,11,3,1,4,103,55,56,56,3,1,7,101,110,118, +52,49,53,51,16,4,11,11,2,139,2,3,1,7,101,110,118,52,49,53,52, +18,16,2,158,95,10,2,151,2,2,83,8,164,5,95,9,8,160,53,2,127, +16,4,11,11,2,154,2,3,1,7,101,110,118,52,49,53,56,18,97,2,58, +8,146,4,8,145,4,8,144,4,8,166,5,98,8,146,4,8,145,4,8,144, +4,8,166,5,16,10,11,11,3,1,4,103,55,57,51,3,1,4,103,55,57, +52,3,1,4,103,55,57,53,3,1,4,103,55,57,54,2,163,2,2,163,2, +2,163,2,2,163,2,16,10,11,11,2,67,69,98,111,111,108,45,101,120,112, +114,2,152,2,2,153,2,2,164,2,2,164,2,2,164,2,2,164,2,18,158, +97,10,2,149,2,2,25,94,76,109,97,107,101,45,116,104,114,101,97,100,45, +99,101,108,108,95,63,97,110,100,2,160,2,10,95,2,1,93,2,27,160,2, +92,9,2,161,2,2,162,2,8,168,5,18,158,2,19,8,145,5,18,158,2, +20,8,145,5,18,158,2,21,8,145,5,18,158,2,22,8,145,5,18,158,2, +23,8,145,5,30,2,127,1,20,103,101,110,101,114,97,116,101,45,116,101,109, +112,111,114,97,114,105,101,115,0,16,4,11,11,2,154,2,3,1,7,101,110, +118,52,49,56,50,16,4,11,11,74,100,105,115,97,98,108,101,45,98,114,101, +97,107,63,3,1,7,101,110,118,52,49,56,49,18,98,2,58,8,146,4,8, +145,4,8,144,4,8,177,5,8,176,5,99,8,146,4,8,145,4,8,144,4, +8,177,5,8,176,5,16,8,11,11,3,1,4,103,56,48,54,3,1,4,103, +56,48,55,3,1,4,103,56,48,56,2,189,2,2,189,2,2,189,2,16,8, +11,11,2,67,2,152,2,2,153,2,2,190,2,2,190,2,2,190,2,18,158, +161,10,2,92,9,2,171,2,2,172,2,8,179,5,16,12,11,11,2,67,2, +179,2,2,181,2,2,152,2,2,153,2,2,128,3,2,128,3,2,128,3,2, +128,3,2,128,3,16,12,11,11,3,1,4,103,56,48,49,3,1,4,103,56, +48,50,3,1,4,103,56,48,51,3,1,4,103,56,48,52,3,1,4,103,56, +48,53,2,191,2,2,191,2,2,191,2,2,191,2,2,191,2,99,8,146,4, +8,145,4,8,144,4,8,177,5,8,176,5,8,182,5,8,181,5,18,158,2, +58,8,183,5,18,158,2,132,2,8,183,5,18,158,2,58,8,183,5,18,158, +2,132,2,8,183,5,103,8,146,4,8,145,4,8,144,4,8,177,5,8,176, +5,8,182,5,8,181,5,16,4,11,11,3,1,4,103,56,49,52,3,1,7, +101,110,118,52,50,51,48,16,4,11,11,2,178,2,3,1,7,101,110,118,52, +50,51,49,16,4,11,11,3,1,4,103,56,49,54,3,1,7,101,110,118,52, +50,51,56,16,4,11,11,2,180,2,3,1,7,101,110,118,52,50,51,57,18, +158,2,58,8,188,5,18,158,2,28,8,188,5,18,158,2,29,8,188,5,18, +158,96,10,2,92,2,173,2,95,2,92,93,94,2,182,2,95,2,150,2,11, +2,25,96,2,149,2,2,25,2,30,96,2,183,2,95,2,143,2,9,96,2, +149,2,2,25,2,182,2,96,2,149,2,2,34,95,2,143,2,93,2,184,2, +95,2,185,2,2,32,95,2,143,2,9,96,2,174,2,2,184,2,2,182,2, +158,2,186,2,2,175,2,160,2,92,9,2,176,2,2,177,2,2,32,95,2, +143,2,93,2,188,2,93,2,188,2,8,188,5,18,158,95,10,2,169,2,2, +170,2,8,188,5,18,158,95,10,2,167,2,2,168,2,8,188,5,18,158,96, +10,2,187,2,2,165,2,2,166,2,8,188,5,18,16,2,95,2,83,93,8, +131,55,16,4,11,11,2,102,3,1,7,101,110,118,52,50,53,54,95,9,8, +131,55,2,56,96,93,8,170,54,16,6,11,11,2,129,3,2,130,3,2,131, +3,2,131,3,16,4,11,11,3,1,4,103,56,49,53,3,1,7,101,110,118, +52,50,54,53,16,4,11,11,2,139,2,3,1,7,101,110,118,52,50,54,54, +18,16,2,158,95,10,2,180,2,2,83,8,133,6,95,9,8,170,54,2,127, +96,93,8,170,54,16,6,11,11,2,129,3,2,130,3,2,131,3,2,131,3, +16,4,11,11,3,1,4,103,56,49,51,3,1,7,101,110,118,52,50,55,48, +16,4,11,11,2,139,2,3,1,7,101,110,118,52,50,55,49,18,16,2,158, +95,10,2,178,2,2,83,8,135,6,95,9,8,170,54,2,127,16,4,11,11, +2,154,2,3,1,7,101,110,118,52,50,55,53,18,97,2,58,8,146,4,8, +145,4,8,144,4,8,137,6,98,8,146,4,8,145,4,8,144,4,8,137,6, +16,6,11,11,3,1,4,103,56,51,55,3,1,4,103,56,51,56,2,144,3, +2,144,3,16,6,11,11,2,67,2,153,2,2,145,3,2,145,3,18,158,96, +10,2,135,3,93,94,9,2,141,3,93,64,118,111,105,100,8,139,6,98,8, +146,4,8,145,4,8,144,4,8,137,6,16,8,11,11,2,146,3,2,147,3, +2,148,3,2,149,3,2,149,3,2,149,3,16,8,11,11,2,67,2,138,3, +2,153,2,2,150,3,2,150,3,2,150,3,18,158,2,132,2,8,141,6,18, +158,2,58,8,141,6,18,158,2,132,2,8,141,6,100,8,146,4,8,145,4, +8,144,4,8,137,6,16,8,11,11,2,146,3,2,147,3,2,148,3,2,149, +3,2,149,3,2,149,3,16,8,11,11,2,67,2,138,3,2,153,2,2,150, +3,2,150,3,2,150,3,16,4,11,11,3,1,4,103,56,52,50,3,1,7, +101,110,118,52,51,49,53,16,4,11,11,2,136,3,3,1,7,101,110,118,52, +51,49,54,18,158,160,10,2,135,3,93,94,2,132,3,2,133,3,2,134,3, +8,145,6,18,158,96,10,2,137,3,2,139,3,2,140,3,8,145,6,18,16, +2,95,2,83,93,8,184,55,16,4,11,11,2,102,3,1,7,101,110,118,52, +51,50,48,95,9,8,184,55,2,56,96,93,8,176,55,16,4,11,11,3,1, +8,119,115,116,109,112,56,52,48,3,1,7,101,110,118,52,51,49,48,16,4, +11,11,3,1,4,103,56,52,49,3,1,7,101,110,118,52,51,50,53,16,4, +11,11,2,139,2,3,1,7,101,110,118,52,51,50,54,18,16,2,158,95,10, +2,136,3,2,83,8,149,6,95,9,8,176,55,2,127,98,8,146,4,8,145, +4,8,144,4,8,137,6,16,8,11,11,3,1,4,103,56,51,52,3,1,4, +103,56,51,53,3,1,4,103,56,51,54,2,151,3,2,151,3,2,151,3,16, +8,11,11,2,67,2,138,3,2,153,2,2,152,3,2,152,3,2,152,3,18, +158,96,10,2,137,3,2,142,3,2,143,3,8,151,6,16,4,11,11,2,154, +2,3,1,7,101,110,118,52,51,52,52,18,97,2,58,8,146,4,8,145,4, +8,144,4,8,153,6,98,8,146,4,8,145,4,8,144,4,8,153,6,16,10, +11,11,3,1,4,103,56,53,48,3,1,4,103,56,53,49,3,1,4,103,56, +53,50,3,1,4,103,56,53,51,2,156,3,2,156,3,2,156,3,2,156,3, +16,10,11,11,2,67,2,114,2,157,3,2,158,3,2,159,3,2,159,3,2, +159,3,2,159,3,18,158,95,10,67,99,97,108,108,47,99,99,160,2,143,2, +93,2,153,3,2,154,3,2,155,3,8,155,6,16,4,11,11,2,154,2,3, +1,7,101,110,118,52,51,54,52,18,97,2,58,8,146,4,8,145,4,8,144, +4,8,157,6,98,8,146,4,8,145,4,8,144,4,8,157,6,16,12,11,11, +3,1,4,103,56,53,55,3,1,4,103,56,53,56,3,1,4,103,56,53,57, +3,1,4,103,56,54,48,3,1,4,103,56,54,49,2,167,3,2,167,3,2, +167,3,2,167,3,2,167,3,16,12,11,11,2,67,2,165,3,2,166,3,2, +157,3,2,158,3,2,168,3,2,168,3,2,168,3,2,168,3,2,168,3,18, +158,162,10,2,92,9,95,2,164,3,2,160,3,2,161,3,2,162,3,2,163, +3,8,159,6,18,16,2,95,2,83,93,8,159,56,16,4,11,11,2,102,3, +1,7,101,110,118,52,51,56,54,95,9,8,159,56,2,56,16,4,11,11,2, +154,2,3,1,7,101,110,118,52,51,56,57,18,97,2,58,8,146,4,8,145, +4,8,144,4,8,162,6,98,8,146,4,8,145,4,8,144,4,8,162,6,16, +8,11,11,3,1,4,103,56,55,49,3,1,4,103,56,55,50,3,1,4,103, +56,55,51,2,183,3,2,183,3,2,183,3,16,8,11,11,2,67,2,157,3, +2,158,3,2,184,3,2,184,3,2,184,3,18,158,161,10,2,92,9,2,173, +3,2,174,3,8,164,6,16,12,11,11,2,67,2,181,3,2,158,2,2,157, +3,2,158,3,2,186,3,2,186,3,2,186,3,2,186,3,2,186,3,16,12, +11,11,3,1,4,103,56,54,54,3,1,4,103,56,54,55,3,1,4,103,56, +54,56,3,1,4,103,56,54,57,3,1,4,103,56,55,48,2,185,3,2,185, +3,2,185,3,2,185,3,2,185,3,98,8,146,4,8,145,4,8,144,4,8, +162,6,8,167,6,8,166,6,18,158,2,58,8,168,6,18,158,2,132,2,8, +168,6,100,8,146,4,8,145,4,8,144,4,8,162,6,8,167,6,8,166,6, +16,4,11,11,3,1,4,103,56,55,56,3,1,7,101,110,118,52,52,51,52, +16,4,11,11,2,179,3,3,1,7,101,110,118,52,52,51,53,18,158,96,10, +2,92,2,175,3,95,2,92,93,94,2,180,3,159,2,143,2,9,2,176,3, +96,2,182,3,2,180,3,160,2,143,2,9,2,177,3,2,178,3,2,180,3, +8,171,6,18,158,95,10,2,171,3,2,172,3,8,171,6,18,158,97,10,2, +92,93,94,2,130,2,2,169,3,95,2,137,3,2,169,3,2,170,3,95,2, +137,3,2,170,3,2,130,2,8,171,6,18,16,2,95,2,83,93,8,131,57, +16,4,11,11,2,102,3,1,7,101,110,118,52,52,51,57,95,9,8,131,57, +2,56,96,93,8,187,56,16,4,11,11,3,1,8,119,115,116,109,112,56,55, +54,3,1,7,101,110,118,52,52,50,57,16,4,11,11,3,1,4,103,56,55, +55,3,1,7,101,110,118,52,52,52,54,16,4,11,11,2,139,2,3,1,7, +101,110,118,52,52,52,55,18,16,2,158,95,10,2,179,3,2,83,8,176,6, +95,9,8,187,56,2,127,16,4,11,11,2,154,2,3,1,7,101,110,118,52, +52,53,49,18,97,2,58,8,146,4,8,145,4,8,144,4,8,178,6,98,8, +146,4,8,145,4,8,144,4,8,178,6,16,8,11,11,3,1,4,103,56,56, +57,3,1,4,103,56,57,48,3,1,4,103,56,57,49,2,189,3,2,189,3, +2,189,3,16,8,11,11,2,67,2,152,2,2,153,2,2,190,3,2,190,3, +2,190,3,18,158,97,10,2,135,3,93,94,96,2,82,2,191,3,2,128,4, +2,129,4,95,70,116,105,109,101,45,97,112,112,108,121,160,2,143,2,9,2, +187,3,2,188,3,64,110,117,108,108,97,66,112,114,105,110,116,102,6,40,40, +99,112,117,32,116,105,109,101,58,32,126,115,32,114,101,97,108,32,116,105,109, +101,58,32,126,115,32,103,99,32,116,105,109,101,58,32,126,115,126,110,2,191, +3,2,128,4,2,129,4,95,65,97,112,112,108,121,66,118,97,108,117,101,115, +2,82,8,180,6,159,34,20,99,159,34,16,1,20,24,2,1,16,0,83,158, +40,20,96,114,73,35,37,109,111,114,101,45,115,99,104,101,109,101,2,2,10, +10,10,48,80,158,34,34,20,99,159,34,16,31,30,2,2,2,3,193,30,2, +2,2,4,193,30,2,2,2,5,193,30,2,2,2,6,193,30,2,2,2,7, +193,30,2,2,2,8,193,30,2,2,2,9,193,30,2,10,2,11,3,30,2, +10,2,12,4,30,2,2,2,13,193,30,2,2,2,14,193,30,2,2,2,15, +193,30,2,2,2,16,193,30,2,2,2,17,193,30,2,2,2,18,193,30,2, +2,2,19,193,30,2,2,2,20,193,30,2,2,2,21,193,30,2,2,2,22, +193,30,2,2,2,23,193,30,2,2,2,24,193,30,2,10,2,25,0,30,2, +2,2,26,193,30,2,10,2,27,1,30,2,2,2,28,193,30,2,2,2,29, +193,30,2,2,2,30,193,30,2,2,2,31,193,30,2,2,2,32,193,30,2, +2,2,33,193,30,2,10,2,34,2,16,0,11,11,16,19,2,22,2,21,2, +17,2,18,2,16,2,31,2,30,2,32,2,20,2,15,2,4,2,6,2,29, +2,28,2,23,2,7,2,19,2,14,2,3,53,11,16,19,2,26,2,33,2, +13,2,24,2,9,2,8,2,5,2,35,2,36,2,37,2,38,2,39,2,40, +2,41,2,42,2,43,2,44,2,45,2,46,16,19,11,11,11,11,11,11,11, +11,11,11,11,11,11,11,11,11,11,11,11,16,19,2,26,2,33,2,13,2, +24,2,9,2,8,2,5,2,35,2,36,2,37,2,38,2,39,2,40,2,41, +2,42,2,43,2,44,2,45,2,46,41,53,106,16,5,93,2,47,89,162,34, +35,51,9,223,0,27,249,22,152,3,20,15,159,37,34,43,196,27,28,248,80, +158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37, +197,28,248,80,158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248, +80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,38,27,248,80,158, +46,36,196,28,248,80,158,46,34,193,249,80,158,47,38,248,80,158,48,36,195, +248,80,158,48,39,248,80,158,49,37,196,11,248,80,158,45,39,248,80,158,46, +37,196,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86, +196,28,248,22,47,248,22,153,3,194,27,249,22,67,196,195,251,80,158,44,40, +20,15,159,44,35,43,21,94,2,48,2,49,248,22,58,197,248,22,59,197,27, +249,22,67,196,195,251,80,158,44,40,20,15,159,44,36,43,21,94,2,50,2, +51,248,22,58,197,248,22,59,197,27,28,248,80,158,38,34,195,249,80,158,39, +35,248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193, +249,80,158,42,35,248,80,158,43,36,195,27,248,80,158,44,37,196,28,248,80, +158,44,34,193,249,80,158,45,38,27,248,80,158,47,36,196,28,248,80,158,47, +41,193,248,80,158,47,42,193,11,248,80,158,46,39,248,80,158,47,37,196,11, +11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249, +22,67,196,195,251,80,158,45,40,20,15,159,45,37,43,21,94,2,52,2,53, +248,22,58,197,248,22,59,197,250,22,175,8,11,2,54,197,34,20,99,159,34, +16,9,2,134,4,2,135,4,2,136,4,2,137,4,2,138,4,2,139,4,2, +140,4,2,141,4,2,142,4,16,4,33,147,4,33,149,4,33,150,4,33,152, +4,11,16,5,93,2,43,89,162,34,35,8,27,9,223,0,27,249,22,152,3, +20,15,159,37,34,46,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248, +80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80, +158,41,38,248,80,158,42,36,195,248,80,158,42,39,248,80,158,43,37,196,11, +11,28,192,27,248,22,58,194,27,248,22,59,195,250,80,158,41,40,20,15,159, +41,35,46,21,93,2,73,195,27,28,248,80,158,38,34,195,249,80,158,39,35, +248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249, +80,158,42,35,248,80,158,43,36,195,27,248,80,158,44,37,196,28,248,80,158, +44,34,193,249,80,158,45,38,27,248,80,158,47,36,196,28,248,80,158,47,34, +193,28,27,248,80,158,48,36,194,28,248,80,158,48,41,193,28,249,22,166,3, +194,20,15,159,49,36,46,9,11,11,27,248,80,158,48,37,194,28,248,80,158, +48,34,193,249,80,158,49,35,248,80,158,50,36,195,27,248,80,158,51,37,196, +28,248,80,158,51,42,193,248,80,158,51,43,193,11,11,11,11,248,80,158,46, +39,248,80,158,47,37,196,11,11,11,28,192,27,248,22,58,194,27,248,22,84, +195,27,248,22,93,196,27,248,22,94,197,249,80,158,43,44,202,27,250,22,67, +199,198,200,252,80,158,49,40,20,15,159,49,37,46,21,95,2,74,2,75,2, +76,248,22,86,198,248,22,58,198,248,22,84,198,27,28,248,80,158,39,34,196, +249,80,158,40,35,248,80,158,41,36,198,27,248,80,158,42,37,199,28,248,80, +158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27,248,80,158,45,37, +196,28,248,80,158,45,34,193,249,80,158,46,38,27,248,80,158,48,36,196,28, +248,80,158,48,34,193,249,80,158,49,38,27,248,80,158,51,36,196,28,248,80, +158,51,42,193,248,22,65,248,80,158,52,43,194,11,27,248,80,158,51,37,196, +28,248,80,158,51,34,193,249,80,158,52,35,248,80,158,53,36,195,27,248,80, +158,54,37,196,28,248,80,158,54,42,193,248,80,158,54,43,193,11,11,11,248, +80,158,47,39,248,80,158,48,37,196,11,11,11,28,192,27,248,22,58,194,27, +248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249,80, +158,45,44,204,27,251,22,67,201,200,199,202,250,80,158,49,45,89,162,34,34, +43,9,224,15,3,253,80,158,41,40,20,15,159,41,38,46,21,96,2,77,2, +78,2,79,2,80,248,22,94,199,248,22,58,199,248,22,84,199,248,22,93,199, +21,95,2,81,95,2,47,2,82,94,2,68,2,83,96,2,1,2,84,2,85, +2,83,20,15,159,49,39,46,27,28,248,80,158,40,34,197,249,80,158,41,35, +248,80,158,42,36,199,27,248,80,158,43,37,200,28,248,80,158,43,34,193,249, +80,158,44,35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158, +46,34,193,249,80,158,47,38,27,248,80,158,49,36,196,28,248,80,158,49,34, +193,249,80,158,50,38,27,248,80,158,52,36,196,28,248,80,158,52,42,193,248, +22,65,248,80,158,53,43,194,11,27,248,80,158,52,37,196,28,248,80,158,52, +34,193,249,80,158,53,35,248,80,158,54,36,195,27,248,80,158,55,37,196,28, +248,80,158,55,42,193,248,22,65,248,80,158,56,43,194,11,11,11,27,248,80, +158,49,37,196,28,248,80,158,49,34,193,249,80,158,50,35,248,80,158,51,36, +195,27,248,80,158,52,37,196,28,248,80,158,52,42,193,248,80,158,52,43,193, +11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93, +196,27,248,22,96,197,27,249,22,76,199,38,27,249,22,76,200,39,27,249,22, +75,201,40,249,80,158,48,44,23,15,27,253,22,67,201,205,202,204,203,206,250, +80,158,52,45,89,162,34,34,46,9,224,18,3,26,8,80,158,43,40,20,15, +159,43,40,46,21,98,2,86,2,87,2,88,2,89,2,90,2,91,249,22,75, +202,39,248,22,84,201,248,22,96,201,249,22,76,202,38,248,22,93,201,248,22, +58,201,21,95,2,92,93,94,2,65,2,82,96,2,81,95,2,47,2,65,94, +2,68,2,83,96,2,1,2,84,2,85,2,83,97,2,43,2,65,2,93,2, +94,2,83,20,15,159,52,41,46,27,28,248,80,158,41,34,198,249,80,158,42, +35,248,80,158,43,36,200,27,248,80,158,44,37,201,28,248,80,158,44,34,193, +27,28,248,22,149,3,194,193,201,249,80,158,46,35,248,80,158,47,36,196,27, +248,80,158,48,37,197,28,248,80,158,48,34,193,27,28,248,22,149,3,194,193, +196,249,80,158,50,38,27,248,80,158,52,36,197,28,248,80,158,52,34,193,249, +80,158,53,35,248,80,158,54,36,195,27,248,80,158,55,37,196,28,248,80,158, +55,34,193,249,80,158,56,35,248,80,158,57,36,195,27,248,80,158,58,37,196, +28,248,80,158,58,42,193,248,22,65,248,80,158,59,43,194,11,11,11,27,248, +80,158,52,37,197,250,22,152,3,198,195,198,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,249,22,76,199, +38,27,249,22,75,200,39,251,22,175,8,11,6,33,33,98,97,100,32,115,121, +110,116,97,120,32,40,110,111,116,32,97,32,100,97,116,117,109,32,115,101,113, +117,101,110,99,101,41,23,17,199,27,28,248,80,158,42,34,199,249,80,158,43, +35,248,80,158,44,36,201,27,248,80,158,45,37,202,28,248,80,158,45,34,193, +27,28,248,22,149,3,194,193,202,249,80,158,47,35,248,80,158,48,36,196,27, +248,80,158,49,37,197,28,248,80,158,49,34,193,27,28,248,22,149,3,194,193, +196,249,80,158,51,35,248,80,158,52,36,196,27,248,80,158,53,37,197,250,22, +152,3,198,195,198,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, +248,22,93,196,27,248,22,94,197,251,22,175,8,11,6,52,52,98,97,100,32, +115,121,110,116,97,120,32,40,109,105,115,115,105,110,103,32,101,120,112,114,101, +115,115,105,111,110,32,97,102,116,101,114,32,100,97,116,117,109,32,115,101,113, +117,101,110,99,101,41,23,16,197,27,28,248,80,158,43,34,200,249,80,158,44, +35,248,80,158,45,36,202,27,248,80,158,46,37,203,250,22,152,3,205,195,205, +11,28,192,27,248,22,58,194,27,248,22,59,195,28,248,22,63,248,22,153,3, +194,250,22,175,8,11,2,54,204,250,22,175,8,11,6,31,31,98,97,100,32, +115,121,110,116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111, +102,32,96,46,39,41,206,250,22,175,8,11,2,54,202,34,20,99,159,34,16, +12,2,134,4,2,135,4,2,136,4,2,137,4,2,138,4,2,139,4,2,140, +4,2,153,4,2,141,4,2,142,4,2,154,4,2,155,4,16,8,33,158,4, +33,160,4,33,161,4,33,163,4,33,165,4,33,166,4,33,168,4,33,169,4, +11,16,5,93,2,39,87,95,83,158,34,16,2,89,162,35,35,41,9,223,0, +251,80,158,38,47,20,15,159,38,46,49,21,94,2,105,2,106,248,22,58,198, +248,22,84,198,80,159,34,8,33,35,83,158,34,16,2,89,162,35,35,41,9, +223,0,251,80,158,38,47,20,15,159,38,42,49,21,94,2,107,2,108,248,22, +58,198,248,22,84,198,80,159,34,8,32,35,89,162,34,35,8,28,9,223,0, +27,249,22,152,3,20,15,159,37,34,49,196,27,28,248,80,158,37,34,194,249, +80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158, +40,34,193,249,80,158,41,38,27,248,80,158,43,36,196,28,248,80,158,43,39, +193,248,22,8,89,162,34,35,41,9,224,9,1,27,249,22,2,89,162,34,35, +50,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249,80,158,39, +35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193, +27,28,248,22,149,3,194,193,200,249,80,158,43,35,248,80,158,44,36,196,27, +248,80,158,45,37,197,248,22,65,250,22,152,3,199,196,199,11,11,194,248,80, +158,39,41,196,28,248,22,63,193,21,95,9,9,9,248,80,158,37,42,193,11, +27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,38,27,248, +80,158,46,36,196,28,248,80,158,46,34,193,249,80,158,47,35,248,80,158,48, +36,195,27,248,80,158,49,37,196,28,248,80,158,49,39,193,248,22,65,248,80, +158,50,41,194,11,11,27,248,80,158,46,37,196,28,248,80,158,46,39,193,248, +80,158,46,41,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,93,196,27,248,22,96,197,27,249,22,76,199,38,27,249,22,76,200, +39,27,249,22,75,201,40,27,249,22,152,3,20,15,159,46,35,49,250,22,2, +89,162,34,36,45,9,224,15,16,27,249,22,152,3,20,15,159,38,36,49,198, +27,248,80,158,38,43,194,28,192,196,27,28,248,80,158,39,34,195,249,80,158, +40,38,248,80,158,41,36,197,248,80,158,41,43,248,80,158,42,37,198,11,28, +192,192,250,22,175,8,11,6,19,19,98,97,100,32,118,97,114,105,97,98,108, +101,32,115,121,110,116,97,120,198,248,22,159,3,249,80,158,52,44,20,15,159, +52,37,49,206,248,22,159,3,249,80,158,52,44,20,15,159,52,38,49,204,27, +28,248,80,158,46,39,194,248,80,158,46,41,194,11,28,192,27,249,22,152,3, +20,15,159,48,39,49,249,80,158,50,44,20,15,159,50,40,49,200,27,248,80, +158,48,43,194,28,192,249,80,158,49,45,23,16,27,252,22,67,202,204,206,23, +17,23,16,250,80,158,53,46,89,162,34,34,47,9,224,19,3,252,80,158,40, +47,20,15,159,40,41,49,21,95,2,109,2,110,2,111,250,22,2,80,159,43, +8,32,35,248,22,96,201,248,22,95,201,248,22,93,198,249,22,71,248,22,84, +200,250,80,158,45,47,20,15,159,45,43,49,21,93,2,112,248,22,58,203,21, +96,2,92,2,113,94,94,2,114,2,115,2,83,95,2,81,94,2,116,2,117, +96,2,1,2,118,2,83,95,2,113,2,119,2,83,20,15,159,53,44,49,27, +28,248,80,158,49,34,195,249,80,158,50,35,248,80,158,51,36,197,27,248,80, +158,52,37,198,28,248,80,158,52,39,193,248,80,158,52,41,193,11,11,28,192, +27,248,22,58,194,27,248,22,59,195,249,80,158,52,45,23,19,27,254,22,67, +23,15,23,17,23,19,203,23,22,202,23,21,250,80,158,56,46,89,162,34,34, +49,9,224,22,3,254,80,158,42,47,20,15,159,42,45,49,21,97,2,120,2, +121,2,122,2,123,2,124,250,22,2,80,159,45,8,33,35,249,22,76,204,38, +249,22,75,204,40,248,22,93,200,248,22,96,200,249,22,76,201,39,249,22,71, +248,22,84,202,250,80,158,47,47,20,15,159,47,47,49,21,93,2,125,248,22, +58,205,21,96,2,92,2,113,94,94,2,114,2,115,2,83,96,2,81,2,117, +96,2,1,2,84,2,85,2,83,96,2,1,2,118,2,83,95,2,113,2,119, +2,83,20,15,159,56,48,49,250,22,175,8,11,2,54,197,248,80,158,46,48, +20,15,159,46,49,49,250,22,175,8,11,2,54,196,34,20,99,159,36,16,15, +2,134,4,2,135,4,2,136,4,2,137,4,2,138,4,2,141,4,2,170,4, +2,142,4,2,171,4,2,139,4,2,172,4,2,154,4,2,155,4,2,140,4, +2,173,4,16,16,33,175,4,33,179,4,33,180,4,33,181,4,33,182,4,33, +185,4,33,186,4,33,187,4,33,188,4,33,132,5,33,133,5,33,135,5,33, +136,5,33,137,5,33,138,5,33,140,5,11,16,5,93,2,44,89,162,34,35, +45,9,223,0,27,249,22,152,3,20,15,159,37,34,42,196,27,28,248,80,158, +37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197, +28,248,80,158,40,34,193,249,80,158,41,38,248,80,158,42,36,195,248,80,158, +42,39,248,80,158,43,37,196,11,11,28,192,27,248,22,58,194,27,248,22,59, +195,249,80,158,40,40,199,250,80,158,43,41,20,15,159,43,35,42,21,93,2, +140,2,197,250,22,175,8,11,2,54,196,34,20,99,159,34,16,8,2,134,4, +2,135,4,2,136,4,2,137,4,2,138,4,2,139,4,2,154,4,2,140,4, +16,2,33,142,5,33,144,5,11,16,5,93,2,62,27,247,22,174,13,253,22, +66,248,199,20,15,159,42,34,34,248,199,20,15,159,42,35,34,248,199,20,15, +159,42,36,34,248,22,66,248,200,20,15,159,43,37,34,248,22,66,248,200,20, +15,159,43,38,34,10,43,20,99,159,34,16,0,16,5,33,146,5,33,147,5, +33,148,5,33,149,5,33,150,5,11,16,5,93,2,40,89,162,34,35,55,9, +223,0,27,249,22,152,3,20,15,159,37,34,49,196,27,28,248,80,158,37,34, 194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248, 80,158,40,34,193,28,248,80,158,40,38,248,80,158,41,36,194,27,248,80,158, 41,37,194,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195, 27,248,80,158,44,37,196,28,248,80,158,44,39,193,248,80,158,44,40,193,11, 11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196, -249,80,158,41,41,200,27,249,22,67,198,197,251,80,158,46,42,20,15,159,46, -35,48,21,94,3,1,4,103,53,49,50,26,3,1,4,103,53,49,49,27,248, -22,58,197,248,22,59,197,27,28,248,80,158,38,34,195,249,80,158,39,35,248, -80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249,80, -158,42,43,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248,22,8,89, -162,34,35,41,9,224,10,1,27,249,22,2,89,162,34,35,46,9,224,4,5, -249,80,158,37,44,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158,40, -36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35, -248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,194,248, -80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,45,193,11, -27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,35,248,80, -158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193,248,80,158, -47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248, -22,93,196,27,248,22,96,197,27,248,22,95,198,27,248,22,223,249,80,158,46, -46,20,15,159,46,36,48,198,87,94,251,80,158,47,47,201,206,249,80,158,49, -46,20,15,159,49,37,48,202,9,27,249,22,2,32,28,89,162,8,36,35,36, -9,222,248,22,54,65,119,115,116,109,112,29,195,27,249,22,2,32,30,89,162, -8,36,35,38,9,222,250,22,216,195,64,104,101,114,101,31,195,196,27,248,22, -223,249,80,158,49,46,20,15,159,49,38,48,202,250,22,216,20,15,159,49,39, -48,250,22,65,63,108,101,116,32,251,22,2,32,33,89,162,8,36,37,44,9, -222,249,22,65,194,250,22,65,1,20,100,97,116,117,109,45,62,115,121,110,116, -97,120,45,111,98,106,101,99,116,34,249,22,65,2,25,200,199,204,203,205,251, -80,159,56,56,35,23,15,206,204,202,23,16,250,22,252,47,2,11,6,10,10, -98,97,100,32,115,121,110,116,97,120,35,197,34,20,99,159,35,16,14,30,36, -2,12,69,115,116,120,45,112,97,105,114,63,37,11,30,38,2,12,67,99,111, -110,115,47,35,102,39,1,30,40,2,12,67,115,116,120,45,99,97,114,41,5, -30,42,2,12,67,115,116,120,45,99,100,114,43,6,30,44,2,12,71,115,116, -120,45,110,117,108,108,47,35,102,45,9,30,46,2,12,2,13,8,30,47,2, -12,2,15,4,30,48,68,35,37,115,116,120,108,111,99,49,68,114,101,108,111, -99,97,116,101,50,0,30,51,69,35,37,115,116,120,99,97,115,101,52,1,24, -97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116, -117,116,101,53,0,30,54,2,12,69,97,112,112,101,110,100,47,35,102,55,0, -30,56,2,12,73,115,116,120,45,99,104,101,99,107,47,101,115,99,57,7,30, -58,2,12,70,115,116,120,45,114,111,116,97,116,101,59,12,30,60,2,52,1, -26,100,97,116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116, -47,115,104,97,112,101,61,2,30,62,64,35,37,115,99,63,74,103,101,116,45, -109,97,116,99,104,45,118,97,114,115,64,0,16,7,18,98,2,31,40,98,38, -10,34,11,96,159,2,52,9,11,159,74,35,37,115,109,97,108,108,45,115,99, -104,101,109,101,65,9,11,159,2,49,9,11,159,2,12,9,11,16,10,2,18, -2,2,2,4,2,2,2,6,2,2,2,8,2,2,2,10,2,2,98,37,10, -35,11,97,159,66,35,37,99,111,110,100,66,9,11,159,71,35,37,113,113,45, -97,110,100,45,111,114,67,9,11,159,2,63,9,11,159,2,49,9,11,159,2, -52,9,11,16,0,96,36,8,254,1,11,16,0,16,4,35,11,61,120,68,3, -1,7,101,110,118,51,48,50,53,69,18,158,161,36,100,2,0,43,38,37,36, -35,16,8,42,11,3,1,4,103,53,48,56,70,3,1,4,103,53,48,57,71, -3,1,4,103,53,49,48,72,3,1,7,101,110,118,51,48,51,50,73,2,73, -2,73,16,8,41,11,61,95,74,62,101,49,75,62,101,50,76,3,1,7,101, -110,118,51,48,51,51,77,2,77,2,77,158,2,26,43,2,27,43,43,18,100, -64,100,101,115,116,78,46,38,37,36,35,16,12,45,11,3,1,4,103,53,48, -51,79,3,1,4,103,53,48,52,80,3,1,4,103,53,48,53,81,3,1,4, -103,53,48,54,82,3,1,4,103,53,48,55,83,3,1,7,101,110,118,51,48, -53,50,84,2,84,2,84,2,84,2,84,16,12,44,11,2,74,63,111,117,116, -85,62,105,110,86,2,75,2,76,3,1,7,101,110,118,51,48,53,51,87,2, -87,2,87,2,87,2,87,18,101,2,78,48,38,37,36,35,45,44,16,4,47, -11,63,105,110,115,88,3,1,7,101,110,118,51,48,54,53,89,18,16,2,158, -2,78,48,49,18,102,2,31,52,38,37,36,35,45,44,16,4,51,11,2,88, -2,89,16,8,50,11,64,116,109,112,115,90,65,104,101,114,101,115,91,64,111, -117,116,115,92,3,1,7,101,110,118,51,48,54,56,93,2,93,2,93,18,158, -161,36,103,2,0,54,38,37,36,35,45,44,51,50,16,4,53,11,2,19,3, -1,7,101,110,118,51,48,55,51,94,158,2,20,54,2,21,54,54,11,97,83, -159,34,93,80,159,34,41,35,89,162,34,35,44,9,223,0,248,247,22,252,109, -3,28,248,22,47,195,249,22,216,11,87,94,83,160,36,11,80,158,37,35,248, -22,177,80,158,38,35,248,22,48,250,22,252,191,1,6,4,4,126,97,126,115, -95,200,80,158,41,35,28,248,22,252,143,1,195,249,22,216,11,87,94,83,160, -36,11,80,158,37,35,248,22,177,80,158,38,35,248,22,48,250,22,252,191,1, -2,95,200,80,158,41,35,28,248,80,158,36,40,195,249,22,216,11,27,248,22, -217,198,87,94,83,160,36,11,80,158,38,35,248,22,177,80,158,39,35,248,22, -48,250,22,252,191,1,2,95,196,80,158,42,35,249,22,216,11,87,94,83,160, -36,11,80,158,37,35,248,22,177,80,158,38,35,248,22,48,250,22,252,191,1, -2,95,64,116,101,109,112,96,80,158,41,35,83,159,34,93,80,159,34,34,35, -32,97,89,162,34,35,38,2,4,222,250,22,252,47,2,2,18,6,20,20,98, -105,110,100,105,110,103,32,109,97,116,99,104,32,102,97,105,108,101,100,98,195, -83,159,34,93,80,158,34,35,34,83,159,34,93,80,159,34,36,35,89,162,34, -35,40,2,8,223,0,87,94,83,160,36,11,80,158,34,35,248,22,177,80,158, -35,35,248,22,48,250,22,252,191,1,2,95,197,80,158,38,35,83,159,34,93, -80,159,34,37,35,89,162,34,35,39,2,10,223,0,87,94,28,248,80,158,35, -38,194,12,250,22,252,48,2,2,10,6,11,11,115,121,110,116,97,120,32,112, -97,105,114,99,196,27,248,80,158,36,39,195,249,22,2,80,159,37,41,35,194, -97,68,35,37,107,101,114,110,101,108,100,2,12,2,49,2,65,2,52,98,2, -100,2,52,2,49,2,63,2,67,2,66,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2258); - } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,208,252,16,25,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,76,35,37,115,116, -120,99,97,115,101,45,115,99,104,101,109,101,1,29,2,11,11,10,10,10,34, -80,158,34,34,20,99,159,34,16,2,30,3,2,2,1,26,99,104,101,99,107, -45,100,117,112,108,105,99,97,116,101,45,105,100,101,110,116,105,102,105,101,114, -4,254,1,30,5,65,35,37,115,116,120,6,71,105,100,101,110,116,105,102,105, -101,114,63,7,2,16,0,11,11,16,0,34,11,16,26,2,4,1,20,103,101, -110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115,8,66,108, -101,116,47,101,99,9,67,45,100,101,102,105,110,101,10,64,108,101,116,42,11, -73,100,101,102,105,110,101,45,115,116,114,117,99,116,12,70,113,117,97,115,105, -113,117,111,116,101,13,70,115,121,110,116,97,120,47,108,111,99,14,64,119,104, -101,110,15,62,111,114,16,63,97,110,100,17,66,117,110,108,101,115,115,18,66, -108,101,116,114,101,99,19,72,108,101,116,45,115,121,110,116,97,120,101,115,20, -66,115,121,110,116,97,120,21,72,115,121,110,116,97,120,45,114,117,108,101,115, -22,72,115,121,110,116,97,120,45,99,97,115,101,42,23,64,99,111,110,100,24, -75,115,121,110,116,97,120,45,105,100,45,114,117,108,101,115,25,70,108,101,116, -45,115,121,110,116,97,120,26,71,119,105,116,104,45,115,121,110,116,97,120,27, -63,108,101,116,28,71,115,121,110,116,97,120,45,99,97,115,101,29,75,108,101, -116,114,101,99,45,115,121,110,116,97,120,101,115,30,73,108,101,116,114,101,99, -45,115,121,110,116,97,120,31,74,45,100,101,102,105,110,101,45,115,121,110,116, -97,120,32,16,26,11,70,35,37,119,105,116,104,45,115,116,120,33,74,35,37, -100,101,102,105,110,101,45,101,116,45,97,108,34,2,34,71,35,37,113,113,45, -97,110,100,45,111,114,35,2,34,2,35,68,35,37,115,116,120,108,111,99,36, -2,34,2,35,2,35,2,34,2,35,11,69,35,37,115,116,120,99,97,115,101, -37,11,2,36,66,35,37,99,111,110,100,38,11,11,2,33,2,35,2,36,11, -11,2,34,16,26,2,4,2,8,2,9,2,10,2,11,2,12,2,13,2,14, -2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2, -25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,36,8,26,98,16,5, -93,2,30,87,94,83,159,34,93,80,159,34,52,35,89,162,35,35,41,9,223, -0,251,80,158,38,46,20,15,159,38,36,47,21,94,3,1,4,103,53,50,49, -39,3,1,4,103,53,50,48,40,248,22,58,198,248,22,84,198,89,162,34,35, -50,9,223,0,27,249,22,216,20,15,159,37,34,47,196,27,28,248,80,158,37, -34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28, -248,80,158,40,34,193,249,80,158,41,38,27,248,80,158,43,36,196,28,248,80, -158,43,39,193,248,22,8,89,162,34,35,41,9,224,9,1,27,249,22,2,89, -162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249, -80,158,39,38,27,248,80,158,41,36,200,28,248,80,158,41,39,193,248,22,65, -248,80,158,42,41,194,11,27,248,80,158,41,37,200,28,248,80,158,41,34,193, -249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,42,248,80,158,44,37, -196,11,11,194,248,80,158,39,41,196,28,248,22,63,193,21,94,9,9,248,80, -158,37,43,193,11,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80, -158,44,35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158,46, -39,193,248,80,158,46,41,193,11,11,11,11,28,192,27,248,22,58,194,27,248, -22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249,80,158, -43,44,202,27,251,22,67,201,202,199,200,250,80,158,47,45,89,162,34,34,45, -9,224,13,3,252,80,158,40,46,20,15,159,40,35,47,21,95,3,1,4,103, -53,50,52,41,3,1,4,103,53,50,51,42,3,1,4,103,53,50,50,43,250, -22,2,80,159,43,52,35,248,22,84,201,248,22,58,201,248,22,94,198,248,22, -93,198,21,98,1,22,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115, -43,118,97,108,117,101,115,44,94,94,94,62,105,100,45,63,46,46,46,46,64, -101,120,112,114,47,2,46,9,65,98,111,100,121,49,48,64,98,111,100,121,49, -2,46,20,15,159,47,37,47,250,22,252,47,2,11,6,10,10,98,97,100,32, -115,121,110,116,97,120,50,196,34,20,99,159,35,16,13,30,51,2,6,69,115, -116,120,45,112,97,105,114,63,52,11,30,53,2,6,67,99,111,110,115,47,35, -102,54,1,30,55,2,6,67,115,116,120,45,99,97,114,56,5,30,57,2,6, -67,115,116,120,45,99,100,114,58,6,30,59,2,6,69,97,112,112,101,110,100, -47,35,102,60,0,30,61,2,6,69,115,116,120,45,108,105,115,116,63,62,8, -30,63,2,6,73,115,116,120,45,99,104,101,99,107,47,101,115,99,64,7,30, -65,2,6,69,115,116,120,45,62,108,105,115,116,66,4,30,67,2,6,71,115, -116,120,45,110,117,108,108,47,35,102,68,9,30,69,2,6,70,115,116,120,45, -114,111,116,97,116,101,70,12,30,71,2,36,68,114,101,108,111,99,97,116,101, -72,0,30,73,2,37,1,20,99,97,116,99,104,45,101,108,108,105,112,115,105, -115,45,101,114,114,111,114,74,1,30,75,2,37,1,24,97,112,112,108,121,45, -112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,76,0,16, -4,18,98,64,104,101,114,101,77,40,98,38,10,34,11,97,159,2,36,9,11, -159,2,33,9,11,159,2,37,9,11,159,2,6,9,11,159,74,35,37,115,109, -97,108,108,45,115,99,104,101,109,101,78,9,11,16,14,2,25,2,2,2,30, -2,2,2,31,2,2,2,20,2,2,2,4,2,2,2,26,2,2,2,22,2, -2,98,37,10,35,11,97,159,2,36,9,11,159,2,33,9,11,159,2,37,9, -11,159,2,6,9,11,159,2,78,9,11,16,0,96,36,8,254,1,11,16,0, -16,4,35,11,63,115,116,120,79,3,1,7,101,110,118,51,48,56,55,80,18, -158,163,38,100,2,44,43,38,37,36,35,16,12,42,11,3,1,4,103,53,49, -53,81,3,1,4,103,53,49,54,82,3,1,4,103,53,49,55,83,3,1,4, -103,53,49,56,84,3,1,4,103,53,49,57,85,3,1,7,101,110,118,51,49, -48,48,86,2,86,2,86,2,86,2,86,16,12,41,11,61,95,87,2,45,2, -47,2,48,2,49,3,1,7,101,110,118,51,49,48,49,88,2,88,2,88,2, -88,2,88,158,2,41,43,158,9,43,158,2,42,43,2,43,43,43,18,158,95, -10,2,39,2,40,43,18,16,2,96,2,46,45,93,8,252,159,10,16,4,44, -11,61,114,89,3,1,7,101,110,118,51,49,49,51,90,95,9,8,252,159,10, -2,37,11,16,5,93,2,31,87,94,83,159,34,93,80,159,34,52,35,89,162, -35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,36,47,21,94,3,1, -4,103,53,51,48,91,3,1,4,103,53,51,49,92,248,22,58,198,248,22,84, -198,89,162,34,35,50,9,223,0,27,249,22,216,20,15,159,37,34,47,196,27, -28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80, -158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,38,27,248,80,158,43, -36,196,28,248,80,158,43,39,193,248,22,8,89,162,34,35,41,9,224,9,1, -27,249,22,2,89,162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80, -158,38,34,197,249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37, -200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80, -158,43,41,248,80,158,44,37,196,11,11,194,248,80,158,39,42,196,28,248,22, -63,193,21,94,9,9,248,80,158,37,43,193,11,27,248,80,158,43,37,196,28, -248,80,158,43,34,193,249,80,158,44,35,248,80,158,45,36,195,27,248,80,158, -46,37,196,28,248,80,158,46,39,193,248,80,158,46,42,193,11,11,11,11,28, -192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197, -27,248,22,95,198,249,80,158,43,44,202,27,251,22,67,201,202,199,200,250,80, -158,47,45,89,162,34,34,45,9,224,13,3,252,80,158,40,46,20,15,159,40, -35,47,21,95,3,1,4,103,53,51,52,93,3,1,4,103,53,51,51,94,3, -1,4,103,53,51,50,95,250,22,2,80,159,43,52,35,248,22,84,201,248,22, -58,201,248,22,94,198,248,22,93,198,21,98,2,44,94,94,93,2,45,2,47, -2,46,9,2,48,2,49,2,46,20,15,159,47,37,47,250,22,252,47,2,11, -2,50,196,34,20,99,159,35,16,13,2,51,2,53,2,55,2,57,2,59,2, -61,2,63,2,67,2,65,2,69,2,71,2,73,2,75,16,4,18,98,2,77, -47,38,37,36,16,4,46,11,2,79,3,1,7,101,110,118,51,49,49,56,96, -18,158,163,38,100,2,44,50,38,37,36,46,16,12,49,11,3,1,4,103,53, -50,53,97,3,1,4,103,53,50,54,98,3,1,4,103,53,50,55,99,3,1, -4,103,53,50,56,100,3,1,4,103,53,50,57,101,3,1,7,101,110,118,51, -49,51,48,102,2,102,2,102,2,102,2,102,16,12,48,11,2,87,2,45,2, -47,2,48,2,49,3,1,7,101,110,118,51,49,51,49,103,2,103,2,103,2, -103,2,103,158,2,93,50,158,9,50,158,2,94,50,2,95,50,50,18,158,95, -10,93,2,91,2,92,50,18,16,2,96,2,46,52,93,8,252,179,10,16,4, -51,11,2,89,3,1,7,101,110,118,51,49,52,51,104,95,9,8,252,179,10, -2,37,11,16,5,93,2,20,87,96,83,159,34,93,80,159,34,8,29,35,89, -162,35,35,43,9,223,0,251,80,158,38,49,20,15,159,38,39,51,21,94,3, -1,4,103,53,52,55,105,3,1,4,103,53,52,54,106,248,22,58,198,249,22, -2,80,159,40,8,28,35,248,22,84,200,83,159,34,93,80,159,34,8,28,35, -89,162,35,35,40,9,223,0,250,80,158,37,49,20,15,159,37,40,51,21,93, -3,1,4,103,53,52,53,107,248,22,58,197,83,159,34,93,80,159,34,8,27, -35,89,162,35,35,41,9,223,0,251,80,158,38,49,20,15,159,38,38,51,21, -94,3,1,4,103,53,52,52,108,3,1,4,103,53,52,51,109,248,22,58,198, -248,22,84,198,89,162,34,35,53,9,223,0,27,249,22,216,20,15,159,37,34, -51,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196, -27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,38,27,248, -80,158,43,36,196,28,248,80,158,43,39,193,248,22,8,89,162,34,35,41,9, -224,9,1,27,249,22,2,89,162,34,35,46,9,224,4,5,249,80,158,37,40, -28,248,80,158,38,34,197,249,80,158,39,38,27,248,80,158,41,36,200,28,248, -80,158,41,39,193,248,22,65,248,80,158,42,41,194,11,27,248,80,158,41,37, -200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80, -158,43,42,248,80,158,44,37,196,11,11,194,248,80,158,39,41,196,28,248,22, -63,193,21,94,9,9,248,80,158,37,43,193,11,27,248,80,158,43,37,196,28, -248,80,158,43,34,193,249,80,158,44,35,248,80,158,45,36,195,27,248,80,158, -46,37,196,28,248,80,158,46,39,193,248,80,158,46,41,193,11,11,11,11,28, -192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197, -27,248,22,95,198,27,249,22,216,20,15,159,44,35,51,249,22,2,80,158,46, -44,248,22,223,249,80,158,49,45,20,15,159,49,36,51,203,27,28,248,80,158, -44,39,194,248,22,8,89,162,34,35,41,9,224,10,2,27,249,22,2,89,162, -34,35,41,9,224,4,5,249,80,158,37,40,28,248,80,158,38,39,197,248,22, -65,248,80,158,39,41,198,11,194,248,80,158,39,41,196,28,248,22,63,193,9, -248,80,158,37,46,193,11,28,192,249,80,158,45,47,204,27,252,22,67,200,204, -203,205,202,250,80,158,49,48,89,162,34,34,46,9,224,15,3,253,80,158,41, -49,20,15,159,41,37,51,21,96,3,1,4,103,53,53,49,110,3,1,4,103, -53,53,48,111,3,1,4,103,53,52,57,112,3,1,4,103,53,52,56,113,250, -22,2,80,159,44,8,27,35,248,22,58,202,248,22,84,202,250,22,2,80,159, -44,8,29,35,248,22,96,202,248,22,58,202,248,22,93,199,248,22,95,199,21, -96,2,44,94,94,94,63,116,109,112,114,2,46,2,47,2,46,9,98,2,44, -94,94,94,2,45,2,46,95,66,118,97,108,117,101,115,115,94,1,23,109,97, -107,101,45,114,101,110,97,109,101,45,116,114,97,110,115,102,111,114,109,101,114, -116,94,72,113,117,111,116,101,45,115,121,110,116,97,120,117,2,114,2,46,2, -46,9,2,48,2,49,2,46,20,15,159,49,41,51,248,80,158,44,50,20,15, -159,44,42,51,250,22,252,47,2,11,2,50,196,34,20,99,159,37,16,17,2, -51,2,53,2,55,2,57,2,59,2,61,2,63,2,65,2,67,2,69,30,118, -2,33,2,8,0,30,119,2,37,1,26,100,97,116,117,109,45,62,115,121,110, -116,97,120,45,111,98,106,101,99,116,47,115,104,97,112,101,120,2,30,121,2, -6,71,115,116,120,45,114,111,116,97,116,101,42,122,13,2,71,2,73,2,75, -30,123,2,33,76,119,105,116,104,45,115,121,110,116,97,120,45,102,97,105,108, -124,3,16,9,18,98,2,77,54,38,37,36,16,4,53,11,2,79,3,1,7, -101,110,118,51,49,52,56,125,18,100,2,77,57,38,37,36,53,16,12,56,11, -3,1,4,103,53,51,53,126,3,1,4,103,53,51,54,127,3,1,4,103,53, -51,55,128,3,1,4,103,53,51,56,129,3,1,4,103,53,51,57,130,3,1, -7,101,110,118,51,49,54,49,131,2,131,2,131,2,131,2,131,16,12,55,11, -2,87,2,45,2,47,2,48,2,49,3,1,7,101,110,118,51,49,54,50,132, -2,132,2,132,2,132,2,132,18,16,2,158,64,100,101,115,116,133,57,58,18, -158,96,102,2,44,8,27,38,37,36,53,56,55,16,4,8,26,11,3,1,4, -103,53,52,50,134,3,1,7,101,110,118,51,49,56,50,135,16,4,59,11,2, -114,3,1,7,101,110,118,51,49,56,51,136,158,2,110,8,27,158,9,8,27, -158,162,10,2,44,2,111,9,2,112,2,113,8,27,8,27,18,158,95,10,2, -108,2,109,8,27,18,158,95,10,2,105,158,2,115,2,106,8,27,18,158,95, -10,2,116,94,2,117,2,107,8,27,18,16,2,96,2,46,8,29,93,8,252, -210,10,16,4,8,28,11,2,89,3,1,7,101,110,118,51,49,56,55,137,95, -9,8,252,210,10,2,37,18,16,2,158,94,158,94,98,2,114,8,33,93,8, -252,198,10,16,4,8,32,11,3,1,8,119,115,116,109,112,53,52,48,138,3, -1,7,101,110,118,51,49,55,52,139,16,4,8,31,11,3,1,4,103,53,52, -49,140,3,1,7,101,110,118,51,49,57,54,141,16,4,8,30,11,65,95,101, -108,115,101,142,3,1,7,101,110,118,51,49,57,55,143,158,2,46,8,33,8, -33,158,2,46,8,33,8,33,95,9,8,252,198,10,2,33,11,16,5,93,2, -26,87,94,83,159,34,93,80,159,34,52,35,89,162,35,35,41,9,223,0,251, -80,158,38,46,20,15,159,38,36,47,21,94,3,1,4,103,53,53,55,144,3, -1,4,103,53,53,56,145,248,22,58,198,248,22,84,198,89,162,34,35,50,9, -223,0,27,249,22,216,20,15,159,37,34,47,196,27,28,248,80,158,37,34,194, -249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80, -158,40,34,193,249,80,158,41,38,27,248,80,158,43,36,196,28,248,80,158,43, -39,193,248,22,8,89,162,34,35,41,9,224,9,1,27,249,22,2,89,162,34, -35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249,80,158, -39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34, -193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,41,248,80,158,44, -37,196,11,11,194,248,80,158,39,42,196,28,248,22,63,193,21,94,9,9,248, -80,158,37,43,193,11,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249, -80,158,44,35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158, -46,39,193,248,80,158,46,42,193,11,11,11,11,28,192,27,248,22,58,194,27, -248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249,80, -158,43,44,202,27,251,22,67,200,202,199,201,250,80,158,47,45,89,162,34,34, -45,9,224,13,3,252,80,158,40,46,20,15,159,40,35,47,21,95,3,1,4, -103,53,54,49,146,3,1,4,103,53,54,48,147,3,1,4,103,53,53,57,148, -250,22,2,80,159,43,52,35,248,22,84,201,248,22,94,201,248,22,58,198,248, -22,93,198,21,97,2,20,94,94,93,2,45,2,47,2,46,2,48,2,49,2, -46,20,15,159,47,37,47,250,22,252,47,2,11,2,50,196,34,20,99,159,35, -16,13,2,51,2,53,2,55,2,57,2,59,2,61,2,63,2,67,2,65,2, -69,2,71,2,73,2,75,16,4,18,98,2,77,8,35,38,37,36,16,4,8, -34,11,2,79,3,1,7,101,110,118,51,50,48,49,149,18,158,162,37,100,2, -20,8,38,38,37,36,8,34,16,12,8,37,11,3,1,4,103,53,53,50,150, -3,1,4,103,53,53,51,151,3,1,4,103,53,53,52,152,3,1,4,103,53, -53,53,153,3,1,4,103,53,53,54,154,3,1,7,101,110,118,51,50,49,51, -155,2,155,2,155,2,155,2,155,16,12,8,36,11,2,87,2,45,2,47,2, -48,2,49,3,1,7,101,110,118,51,50,49,52,156,2,156,2,156,2,156,2, -156,158,2,146,8,38,158,2,147,8,38,2,148,8,38,8,38,18,158,95,10, -93,2,144,2,145,8,38,18,16,2,96,2,46,8,40,93,8,252,235,10,16, -4,8,39,11,2,89,3,1,7,101,110,118,51,50,50,54,157,95,9,8,252, -235,10,2,37,11,16,5,93,2,22,87,94,83,159,34,93,80,159,34,58,35, -89,162,35,35,42,9,223,0,252,80,158,39,48,20,15,159,39,38,50,21,95, -3,1,4,103,53,55,49,158,3,1,4,103,53,55,48,159,3,1,4,103,53, -55,50,160,248,22,58,199,248,22,84,199,248,22,93,199,89,162,34,35,52,9, -223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197, -27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,38,27,248, -80,158,42,36,196,28,248,80,158,42,39,193,248,22,65,248,80,158,43,40,194, -11,27,248,80,158,42,37,196,28,248,80,158,42,39,193,248,22,8,89,162,34, -35,41,9,224,8,1,27,249,22,2,89,162,34,35,49,9,224,4,5,249,80, -158,37,41,28,248,80,158,38,34,197,249,80,158,39,38,27,248,80,158,41,36, -200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27,248, -80,158,44,37,196,248,22,65,250,22,216,199,196,199,11,27,248,80,158,41,37, -200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80, -158,43,42,248,80,158,44,37,196,11,11,194,248,80,158,39,40,196,28,248,22, -63,193,21,94,9,9,248,80,158,37,43,193,11,11,11,28,192,27,248,22,58, -194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, -28,249,22,4,80,158,42,44,248,22,223,249,80,158,45,45,20,15,159,45,34, -50,200,27,249,22,216,20,15,159,43,35,50,249,22,2,89,162,8,36,35,41, -9,224,11,12,87,94,28,248,80,158,36,44,195,12,251,22,252,47,2,11,6, -59,59,112,97,116,116,101,114,110,32,109,117,115,116,32,115,116,97,114,116,32, -119,105,116,104,32,97,110,32,105,100,101,110,116,105,102,105,101,114,44,32,102, -111,117,110,100,32,115,111,109,101,116,104,105,110,103,32,101,108,115,101,161,196, -198,248,22,49,248,22,50,248,22,217,197,248,22,223,249,80,158,48,45,20,15, -159,48,36,50,202,27,28,248,80,158,43,39,194,248,80,158,43,40,194,11,28, -192,249,80,158,44,46,203,27,252,22,67,200,203,206,202,205,250,80,158,48,47, -89,162,34,34,46,9,224,14,3,252,80,158,40,48,20,15,159,40,37,50,21, -95,3,1,4,103,53,55,53,162,3,1,4,103,53,55,52,163,3,1,4,103, -53,55,51,164,248,22,93,198,248,22,95,198,251,22,2,80,159,44,58,35,248, -22,58,202,248,22,84,202,248,22,96,202,21,95,66,108,97,109,98,100,97,165, -93,61,120,166,100,73,115,121,110,116,97,120,45,99,97,115,101,42,42,167,2, -87,10,2,166,94,61,107,168,2,46,79,109,111,100,117,108,101,45,105,100,101, -110,116,105,102,105,101,114,61,63,169,94,158,65,100,117,109,109,121,170,67,112, -97,116,116,101,114,110,171,95,2,14,2,166,68,116,101,109,112,108,97,116,101, -172,2,46,20,15,159,48,39,50,248,80,158,43,49,20,15,159,43,40,50,250, -22,252,47,2,11,2,50,202,250,22,252,47,2,11,2,50,197,34,20,99,159, -35,16,16,2,51,2,53,2,55,2,57,2,59,2,61,2,65,2,63,2,67, -2,121,30,173,2,6,2,7,2,2,119,2,71,2,73,2,75,2,123,16,7, -18,100,2,133,8,44,38,37,36,16,4,8,43,11,2,79,3,1,7,101,110, -118,51,50,51,49,174,16,12,8,42,11,3,1,4,103,53,54,50,175,3,1, -4,103,53,54,51,176,3,1,4,103,53,54,52,177,3,1,4,103,53,54,53, -178,3,1,4,103,53,54,54,179,3,1,7,101,110,118,51,50,52,55,180,2, -180,2,180,2,180,2,180,16,12,8,41,11,2,87,2,168,67,107,101,121,119, -111,114,100,181,2,171,2,172,3,1,7,101,110,118,51,50,52,56,182,2,182, -2,182,2,182,2,182,18,16,2,158,2,77,8,44,8,45,18,16,2,158,2, -133,8,44,8,46,18,158,95,102,2,165,8,51,38,37,36,8,43,16,12,8, -50,11,2,175,2,176,2,177,2,178,2,179,2,180,2,180,2,180,2,180,2, -180,16,12,8,49,11,2,87,2,168,2,181,2,171,2,172,2,182,2,182,2, -182,2,182,2,182,16,4,8,48,11,3,1,4,103,53,54,57,183,3,1,7, -101,110,118,51,50,54,55,184,16,4,8,47,11,2,170,3,1,7,101,110,118, -51,50,54,56,185,158,94,10,2,166,8,51,158,164,10,2,167,2,162,10,2, -166,2,163,2,169,2,164,8,51,8,51,18,158,95,10,158,2,158,2,159,95, -2,14,2,166,2,160,8,51,18,16,2,96,2,46,8,53,93,8,252,10,11, -16,4,8,52,11,2,89,3,1,7,101,110,118,51,50,55,50,186,95,9,8, -252,10,11,2,37,18,16,2,158,94,98,2,170,8,57,93,8,252,1,11,16, -4,8,56,11,3,1,8,119,115,116,109,112,53,54,55,187,3,1,7,101,110, -118,51,50,54,48,188,16,4,8,55,11,3,1,4,103,53,54,56,189,3,1, -7,101,110,118,51,50,55,55,190,16,4,8,54,11,2,142,3,1,7,101,110, -118,51,50,55,56,191,158,2,46,8,57,8,57,95,9,8,252,1,11,2,33, -11,16,5,93,2,25,87,94,83,159,34,93,80,159,34,54,35,89,162,35,35, -41,9,223,0,251,80,158,38,48,20,15,159,38,36,49,21,94,3,1,4,103, -53,56,49,192,3,1,4,103,53,56,48,193,248,22,58,198,248,22,84,198,89, -162,34,35,48,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248, -80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80, -158,40,38,27,248,80,158,42,36,196,28,248,80,158,42,39,193,248,22,65,248, -80,158,43,40,194,11,27,248,80,158,42,37,196,28,248,80,158,42,39,193,248, -22,8,89,162,34,35,41,9,224,8,1,27,249,22,2,89,162,34,35,46,9, -224,4,5,249,80,158,37,41,28,248,80,158,38,34,197,249,80,158,39,35,248, -80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80, -158,42,35,248,80,158,43,36,195,248,80,158,43,42,248,80,158,44,37,196,11, -11,194,248,80,158,39,40,196,28,248,22,63,193,21,93,9,248,80,158,37,43, -193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196, -27,248,22,94,197,28,249,22,4,80,158,41,44,248,22,223,249,80,158,44,45, -20,15,159,44,34,49,199,249,80,158,41,46,200,27,251,22,67,200,202,199,201, -250,80,158,45,47,89,162,34,34,45,9,224,11,3,252,80,158,40,48,20,15, -159,40,35,49,21,95,3,1,4,103,53,56,52,194,3,1,4,103,53,56,51, -195,3,1,4,103,53,56,50,196,248,22,84,198,248,22,94,198,250,22,2,80, -159,43,54,35,248,22,58,201,248,22,93,201,21,94,1,21,109,97,107,101,45, -115,101,116,33,45,116,114,97,110,115,102,111,114,109,101,114,197,95,2,165,93, -2,166,100,2,167,2,87,10,2,166,94,2,168,2,46,2,169,94,2,171,95, -2,14,2,166,2,172,2,46,20,15,159,45,37,49,250,22,252,47,2,11,2, -50,201,250,22,252,47,2,11,2,50,197,34,20,99,159,35,16,15,2,51,2, -53,2,55,2,57,2,59,2,61,2,65,2,63,2,67,2,121,2,173,2,119, -2,71,2,73,2,75,16,4,18,100,2,133,8,61,38,37,36,16,4,8,60, -11,2,166,3,1,7,101,110,118,51,50,56,50,198,16,10,8,59,11,3,1, -4,103,53,55,54,199,3,1,4,103,53,55,55,200,3,1,4,103,53,55,56, -201,3,1,4,103,53,55,57,202,3,1,7,101,110,118,51,50,57,53,203,2, -203,2,203,2,203,16,10,8,58,11,2,87,2,168,2,171,2,172,3,1,7, -101,110,118,51,50,57,54,204,2,204,2,204,2,204,18,158,95,10,2,197,95, -2,165,93,2,166,163,2,167,2,194,10,2,166,2,195,2,169,2,196,8,61, -18,158,95,10,2,192,95,2,14,2,166,2,193,8,61,18,16,2,96,2,46, -8,63,93,8,252,34,11,16,4,8,62,11,2,89,3,1,7,101,110,118,51, -51,48,54,205,95,9,8,252,34,11,2,37,11,93,83,159,34,93,80,159,34, -34,35,89,162,34,35,37,2,4,223,0,248,22,8,89,162,8,36,35,40,9, -224,1,2,27,247,22,116,87,94,249,22,3,89,162,8,36,35,45,9,226,4, -3,5,2,87,94,28,248,80,158,38,35,197,12,250,22,252,48,2,2,4,6, -19,19,108,105,115,116,32,111,102,32,105,100,101,110,116,105,102,105,101,114,115, -206,197,27,250,22,122,196,248,22,217,201,9,87,94,28,249,22,5,89,162,8, -36,35,38,9,223,7,249,22,228,195,194,194,248,195,198,12,250,22,121,196,248, -22,217,201,249,22,57,202,197,195,11,98,68,35,37,107,101,114,110,101,108,207, -2,78,2,6,2,37,2,33,2,36,98,2,207,2,78,2,6,2,37,2,33, -2,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6428); - } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,112,252,186,12,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,67,35,37,113,113, -115,116,120,1,29,2,11,11,10,10,10,34,80,158,34,34,20,99,159,34,16, -2,30,3,2,2,79,99,104,101,99,107,45,115,112,108,105,99,105,110,103,45, -108,105,115,116,4,254,1,30,5,65,35,37,115,116,120,6,69,115,116,120,45, -108,105,115,116,63,7,8,16,0,11,11,16,1,2,4,35,11,16,4,68,117, -110,115,121,110,116,97,120,8,77,117,110,115,121,110,116,97,120,45,115,112,108, -105,99,105,110,103,9,75,113,117,97,115,105,115,121,110,116,97,120,47,108,111, -99,10,71,113,117,97,115,105,115,121,110,116,97,120,11,16,4,11,11,11,11, -16,4,2,8,2,9,2,10,2,11,34,38,94,16,5,94,2,8,2,9,27, -32,12,89,162,34,35,38,61,102,13,222,250,22,252,47,2,11,6,30,30,105, -108,108,101,103,97,108,32,111,117,116,115,105,100,101,32,111,102,32,113,117,97, -115,105,115,121,110,116,97,120,14,195,249,22,7,194,194,37,20,99,159,34,16, -0,16,0,11,16,5,94,2,11,2,10,87,96,83,159,34,93,80,159,34,8, -32,35,89,162,8,36,35,38,9,223,0,249,22,65,20,15,159,36,51,43,195, -83,159,34,93,80,159,34,8,30,35,89,162,34,40,58,64,108,111,111,112,15, -223,0,27,249,22,216,20,15,159,37,35,43,198,27,28,248,80,158,37,34,194, -28,27,248,80,158,38,35,195,28,248,80,158,38,36,193,28,249,22,230,194,20, -15,159,39,36,43,9,11,11,27,248,80,158,38,37,195,28,248,80,158,38,34, -193,249,80,158,39,38,248,80,158,40,35,195,248,80,158,40,39,248,80,158,41, -37,196,11,11,11,28,192,28,248,22,193,199,27,248,22,58,248,80,158,39,40, -21,93,62,117,113,16,249,203,194,248,22,65,249,22,65,197,198,253,80,159,42, -8,30,35,201,202,198,248,22,178,205,205,89,162,34,36,48,9,226,8,9,14, -11,249,195,250,22,216,199,249,22,65,248,80,158,45,35,200,203,197,199,27,28, -248,80,158,38,36,195,28,249,22,230,196,20,15,159,39,37,43,9,11,11,28, -192,251,22,252,47,2,11,6,25,25,109,105,115,117,115,101,32,119,105,116,104, -105,110,32,113,117,97,115,105,115,121,110,116,97,120,17,201,202,27,28,248,80, -158,39,34,196,249,80,158,40,38,27,248,80,158,42,35,199,28,248,80,158,42, -34,193,28,27,248,80,158,43,35,194,28,248,80,158,43,36,193,28,249,22,230, -194,20,15,159,44,38,43,9,11,11,27,248,80,158,43,37,194,28,248,80,158, -43,34,193,249,80,158,44,41,248,80,158,45,35,195,248,80,158,45,39,248,80, -158,46,37,196,11,11,11,27,248,80,158,42,37,199,250,22,216,201,195,201,11, -28,192,27,248,22,58,194,27,248,22,59,195,28,248,22,193,203,27,89,162,34, -36,54,71,114,101,115,116,45,100,111,110,101,45,107,18,226,7,13,10,2,27, -249,22,216,20,15,159,40,39,43,248,22,58,248,80,158,42,40,21,93,63,117, -113,115,19,27,249,22,216,20,15,159,41,40,43,250,22,216,199,63,99,116,120, -20,199,249,198,250,22,216,200,250,22,67,201,20,15,159,47,41,43,206,200,249, -22,57,27,250,22,67,202,200,201,253,80,158,50,42,20,15,159,50,42,43,21, -96,3,1,4,103,53,57,55,21,3,1,4,103,53,57,54,22,3,1,4,103, -53,57,57,23,3,1,4,103,53,57,56,24,248,22,86,199,20,15,159,50,43, -43,248,22,58,199,248,22,84,199,203,253,80,159,47,8,30,35,206,23,15,199, -23,17,89,162,34,34,38,9,224,7,6,249,194,195,9,198,253,80,159,46,8, -30,35,205,206,199,248,22,178,23,17,89,162,34,34,50,9,230,12,14,13,18, -17,16,15,6,253,80,159,47,8,30,35,203,204,198,200,201,27,248,80,158,49, -35,201,89,162,34,36,46,9,225,11,8,0,249,196,250,22,216,198,249,22,57, -199,202,198,249,22,71,9,200,89,162,34,36,52,9,229,12,14,13,18,16,15, -6,27,27,250,22,216,248,80,158,46,35,199,249,22,65,248,80,158,48,35,248, -80,158,49,35,202,206,248,80,158,46,35,199,89,162,34,36,47,9,226,5,3, -10,0,249,197,250,22,216,199,249,22,57,199,203,199,249,22,71,197,201,253,80, -159,47,8,30,35,203,204,199,201,89,162,34,34,38,9,224,7,6,249,194,195, -9,198,27,28,248,80,158,40,36,197,28,249,22,230,198,20,15,159,41,44,43, -9,11,11,28,192,251,22,252,47,2,11,6,25,25,109,105,115,117,115,101,32, -119,105,116,104,105,110,32,113,117,97,115,105,115,121,110,116,97,120,25,203,204, -27,28,248,80,158,41,34,198,28,27,248,80,158,42,35,199,28,248,80,158,42, -36,193,28,249,22,230,194,20,15,159,43,45,43,9,11,11,27,248,80,158,42, -37,199,28,248,80,158,42,34,193,249,80,158,43,38,248,80,158,44,35,195,248, -80,158,44,39,248,80,158,45,37,196,11,11,11,28,192,253,80,159,46,8,30, -35,205,206,198,248,22,177,23,17,23,17,89,162,34,36,47,9,225,12,18,15, -249,195,250,22,216,197,249,22,65,248,80,158,44,35,200,202,197,198,28,248,22, -56,248,22,217,203,253,80,159,46,8,31,35,23,16,205,206,248,22,217,23,16, -23,17,89,162,34,36,43,9,224,18,15,249,195,250,22,216,197,199,197,197,28, -248,22,252,229,1,248,22,217,203,253,80,159,46,8,30,35,205,206,250,22,216, -23,18,248,22,252,236,1,248,22,217,23,20,23,18,23,16,23,17,89,162,34, -36,45,9,224,18,15,249,195,250,22,216,197,248,22,252,237,1,248,22,223,201, -197,197,247,203,83,159,34,93,80,159,34,8,31,35,89,162,8,64,40,50,65, -112,108,111,111,112,26,223,0,28,248,22,56,197,28,27,248,22,58,198,27,28, -248,80,158,37,36,194,27,249,22,230,196,20,15,159,39,46,43,28,192,192,249, -22,230,196,20,15,159,39,47,43,11,28,192,192,28,248,80,158,37,34,194,27, -248,80,158,38,35,195,28,248,80,158,38,36,193,249,22,230,194,20,15,159,39, -48,43,11,11,253,80,159,40,8,30,35,200,201,250,22,216,11,205,11,199,203, -204,253,80,159,40,8,31,35,199,200,201,248,22,59,203,89,162,34,34,48,9, -229,6,9,8,7,12,11,10,253,80,159,46,8,30,35,202,203,248,22,58,199, -201,199,89,162,34,36,46,9,224,8,6,249,195,249,22,57,250,22,216,248,22, -58,200,201,248,22,58,200,248,22,59,197,197,89,162,34,36,49,9,228,6,9, -8,7,12,10,253,80,159,45,8,30,35,201,202,248,22,58,199,200,89,162,34, -34,43,9,226,7,6,13,12,249,197,249,22,57,248,22,58,199,196,195,89,162, -34,36,48,9,226,7,6,13,12,249,197,249,22,57,250,22,216,248,22,58,202, -203,248,22,58,202,196,249,22,71,201,197,28,248,22,63,197,247,197,253,80,159, -40,8,30,35,200,201,202,199,203,204,27,89,162,34,37,46,62,113,113,27,223, -1,27,20,15,159,35,34,43,253,80,159,41,8,30,35,198,200,201,34,89,162, -8,36,34,42,9,226,10,9,8,6,250,22,216,195,248,199,198,196,89,162,8, -36,36,47,9,226,7,10,8,6,250,22,216,195,250,22,65,20,15,159,43,49, -43,203,248,201,203,196,249,22,7,89,162,34,35,46,9,224,3,2,27,249,22, -216,20,15,159,38,50,43,197,27,28,248,80,158,38,34,194,249,80,158,39,41, -248,80,158,40,35,196,27,248,80,158,41,37,197,28,248,80,158,41,34,193,249, -80,158,42,38,248,80,158,43,35,195,248,80,158,43,39,248,80,158,44,37,196, -11,11,28,192,27,248,22,58,194,27,248,22,59,195,250,199,201,195,80,159,42, -8,32,35,250,22,252,47,2,11,6,10,10,98,97,100,32,115,121,110,116,97, -120,28,196,89,162,34,35,49,9,224,3,2,27,249,22,216,20,15,159,38,52, -43,197,27,28,248,80,158,38,34,194,249,80,158,39,41,248,80,158,40,35,196, -27,248,80,158,41,37,197,28,248,80,158,41,34,193,249,80,158,42,41,248,80, -158,43,35,195,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158, -45,38,248,80,158,46,35,195,248,80,158,46,39,248,80,158,47,37,196,11,11, -11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,250,200,202, -195,89,162,8,36,35,40,9,224,9,4,250,22,65,20,15,159,38,53,43,195, -197,250,22,252,47,2,11,2,28,196,37,20,99,159,37,16,9,30,29,2,6, -69,115,116,120,45,112,97,105,114,63,30,11,30,31,2,6,67,115,116,120,45, -99,97,114,32,5,30,33,2,6,71,105,100,101,110,116,105,102,105,101,114,63, -34,2,30,35,2,6,67,115,116,120,45,99,100,114,36,6,30,37,2,6,69, -97,112,112,101,110,100,47,35,102,38,0,30,39,2,6,71,115,116,120,45,110, -117,108,108,47,35,102,40,9,30,41,70,35,37,119,105,116,104,45,115,116,120, -42,1,20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105, -101,115,43,0,30,44,2,6,67,99,111,110,115,47,35,102,45,1,30,46,69, -35,37,115,116,120,99,97,115,101,47,1,24,97,112,112,108,121,45,112,97,116, -116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,48,0,16,20,18,98, -64,104,101,114,101,49,40,98,38,10,34,11,94,159,2,6,9,11,159,76,35, -37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,50,9,11,16,10,2, -8,2,2,2,4,2,2,2,10,2,2,2,9,2,2,2,11,2,2,98,37, -10,35,11,94,159,2,6,9,11,159,2,50,9,11,16,0,96,36,8,254,1, -11,16,0,16,8,35,11,68,111,114,105,103,45,115,116,120,51,64,98,111,100, -121,52,68,109,107,45,102,105,110,97,108,53,3,1,7,101,110,118,51,51,50, -52,54,2,54,2,54,18,101,2,49,44,38,37,36,35,16,4,43,11,68,104, -101,114,101,45,115,116,120,55,3,1,7,101,110,118,51,51,50,53,56,16,4, -42,11,2,15,3,1,7,101,110,118,51,51,50,54,57,16,10,41,11,63,115, -116,120,58,65,100,101,112,116,104,59,66,115,97,109,101,45,107,60,69,99,111, -110,118,101,114,116,45,107,61,3,1,7,101,110,118,51,51,50,55,62,2,62, -2,62,2,62,18,16,2,158,2,8,44,45,18,45,18,16,2,158,2,9,44, -46,18,104,2,49,50,38,37,36,35,43,42,41,16,6,49,11,3,1,4,103, -53,56,55,63,3,1,4,103,53,56,56,64,3,1,7,101,110,118,51,51,52, -57,65,2,65,16,6,48,11,61,120,66,64,114,101,115,116,67,3,1,7,101, -110,118,51,51,53,48,68,2,68,16,6,47,11,66,114,101,115,116,45,118,69, -68,98,105,110,100,105,110,103,115,70,3,1,7,101,110,118,51,51,53,54,71, -2,71,18,16,2,158,2,49,50,51,18,108,63,46,46,46,72,56,38,37,36, -35,43,42,41,49,48,47,16,4,55,11,3,1,4,103,53,57,51,73,3,1, -7,101,110,118,51,51,54,53,74,16,4,54,11,64,116,101,109,112,75,3,1, -7,101,110,118,51,51,54,54,76,16,4,53,11,3,1,4,103,53,57,53,77, -3,1,7,101,110,118,51,51,55,55,78,16,4,52,11,2,20,3,1,7,101, -110,118,51,51,55,56,79,18,158,95,10,94,2,21,2,22,95,2,4,2,23, -94,72,113,117,111,116,101,45,115,121,110,116,97,120,80,2,24,56,18,16,2, -158,2,72,56,57,18,46,18,16,2,158,2,11,44,58,18,106,2,8,8,30, -38,37,36,35,43,42,41,16,4,8,29,11,3,1,4,103,53,56,53,81,3, -1,7,101,110,118,51,52,48,51,82,16,4,8,28,11,65,95,101,108,115,101, -83,3,1,7,101,110,118,51,52,48,52,84,16,4,8,27,11,2,26,3,1, -7,101,110,118,51,52,48,56,85,16,4,8,26,11,61,108,86,3,1,7,101, -110,118,51,52,48,57,87,16,4,59,11,61,97,88,3,1,7,101,110,118,51, -52,49,48,89,18,16,2,158,2,11,8,30,8,31,18,16,2,158,2,9,8, -30,8,32,18,100,71,119,105,116,104,45,115,121,110,116,97,120,90,8,34,38, -37,36,35,43,16,4,8,33,11,2,70,3,1,7,101,110,118,51,52,50,50, -91,18,99,2,49,8,37,38,37,36,16,4,8,36,11,2,27,3,1,7,101, -110,118,51,51,50,51,92,16,4,8,35,11,2,51,3,1,7,101,110,118,51, -52,50,51,93,18,102,66,115,121,110,116,97,120,94,8,41,38,37,36,8,36, -8,35,16,6,8,40,11,3,1,4,103,54,48,48,95,3,1,4,103,54,48, -49,96,3,1,7,101,110,118,51,52,50,56,97,2,97,16,6,8,39,11,61, -95,98,2,58,3,1,7,101,110,118,51,52,50,57,99,2,99,16,4,8,38, -11,2,52,3,1,7,101,110,118,51,52,51,52,100,18,99,2,49,8,43,38, -37,36,8,36,16,4,8,42,11,2,51,3,1,7,101,110,118,51,52,51,53, -101,18,102,70,115,121,110,116,97,120,47,108,111,99,102,8,47,38,37,36,8, -36,8,42,16,8,8,46,11,3,1,4,103,54,48,50,103,3,1,4,103,54, -48,51,104,3,1,4,103,54,48,52,105,3,1,7,101,110,118,51,52,52,49, -106,2,106,2,106,16,8,8,45,11,2,98,63,108,111,99,107,2,58,3,1, -7,101,110,118,51,52,52,50,108,2,108,2,108,16,4,8,44,11,2,52,3, -1,7,101,110,118,51,52,52,57,109,11,93,83,159,34,93,80,159,34,34,35, -89,162,8,36,36,40,2,4,223,0,87,94,28,248,80,158,35,35,194,12,250, -22,252,48,2,2,9,6,18,18,112,114,111,112,101,114,32,115,121,110,116,97, -120,32,108,105,115,116,110,196,250,22,216,197,196,197,95,68,35,37,107,101,114, -110,101,108,111,2,50,2,6,95,2,111,2,50,2,6,0}; - EVAL_ONE_SIZED_STR((char *)expr, 3270); - } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,204,252,159,24,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,68,35,37,100,101, -102,105,110,101,1,29,2,11,11,10,10,10,34,80,158,34,34,20,99,159,34, -16,0,16,0,11,11,16,0,34,11,16,4,77,100,101,102,105,110,101,45,102, -111,114,45,115,121,110,116,97,120,3,73,100,101,102,105,110,101,45,115,121,110, -116,97,120,4,76,98,101,103,105,110,45,102,111,114,45,115,121,110,116,97,120, -5,66,100,101,102,105,110,101,6,16,4,11,11,11,11,16,4,2,3,2,4, -2,5,2,6,34,38,94,16,5,95,2,6,2,4,2,3,87,99,83,159,34, -93,80,159,34,8,42,35,89,162,34,37,59,68,116,114,121,45,110,101,120,116, -7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36, -197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,27,28,248,22,213,194, -193,198,249,80,158,41,35,248,80,158,42,36,196,27,248,80,158,43,37,197,250, -22,216,198,195,198,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248, -22,86,196,28,248,80,158,39,45,194,250,22,252,47,2,11,27,249,22,216,20, -15,159,44,49,49,204,27,28,248,80,158,44,34,194,249,80,158,45,35,248,80, -158,46,36,196,27,248,80,158,47,37,197,28,248,80,158,47,34,193,249,80,158, -48,44,248,80,158,49,36,195,248,80,158,49,48,248,80,158,50,37,196,11,11, -28,192,27,248,22,58,194,27,248,22,59,195,6,46,46,98,97,100,32,115,121, -110,116,97,120,32,40,122,101,114,111,32,101,120,112,114,101,115,115,105,111,110, -115,32,97,102,116,101,114,32,105,100,101,110,116,105,102,105,101,114,41,8,27, -28,248,80,158,45,34,195,249,80,158,46,35,248,80,158,47,36,197,27,248,80, -158,48,37,198,28,248,80,158,48,34,193,249,80,158,49,35,248,80,158,50,36, -195,27,248,80,158,51,37,196,28,248,80,158,51,38,193,248,80,158,51,39,193, -11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,6, -50,50,98,97,100,32,115,121,110,116,97,120,32,40,109,117,108,116,105,112,108, -101,32,101,120,112,114,101,115,115,105,111,110,115,32,97,102,116,101,114,32,105, -100,101,110,116,105,102,105,101,114,41,9,27,28,248,80,158,46,34,196,249,80, -158,47,35,248,80,158,48,36,198,27,248,80,158,49,37,199,28,248,80,158,49, -34,193,27,28,248,22,213,194,193,199,249,80,158,51,35,248,80,158,52,36,196, -27,248,80,158,53,37,197,250,22,216,198,195,198,11,11,28,192,27,248,22,58, -194,27,248,22,84,195,27,248,22,86,196,6,31,31,98,97,100,32,115,121,110, -116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111,102,32,96, -46,39,41,10,250,22,252,47,2,11,6,10,10,98,97,100,32,115,121,110,116, -97,120,11,198,201,250,80,159,41,8,41,35,200,201,202,250,80,159,38,8,41, -35,197,198,199,83,159,34,93,80,159,34,8,41,35,89,162,34,37,49,2,7, -223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197, -27,248,80,158,39,37,198,28,248,80,158,39,34,193,27,28,248,22,213,194,193, -198,249,80,158,41,35,248,80,158,42,36,196,27,248,80,158,43,37,197,250,22, -216,198,195,198,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22, -86,196,28,248,80,158,39,34,194,250,80,159,41,8,40,35,200,201,202,251,22, -252,47,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,12,202,197,250, -80,159,38,8,40,35,197,198,199,83,159,34,93,80,159,34,8,40,35,89,162, -34,37,56,2,7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248, -80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,27,28, -248,22,213,194,193,198,249,80,158,41,35,248,80,158,42,36,196,27,248,80,158, -43,37,197,250,22,216,198,195,198,11,11,28,192,27,248,22,58,194,27,248,22, -84,195,27,248,22,86,196,91,159,36,11,90,161,36,34,11,249,80,159,42,8, -38,35,202,197,87,95,28,248,80,158,41,38,195,12,250,22,252,47,2,11,6, -50,50,98,97,100,32,115,121,110,116,97,120,32,40,105,108,108,101,103,97,108, -32,117,115,101,32,111,102,32,96,46,39,32,102,111,114,32,112,114,111,99,101, -100,117,114,101,32,98,111,100,121,41,13,203,28,248,80,158,41,47,195,250,22, -252,47,2,11,6,46,46,98,97,100,32,115,121,110,116,97,120,32,40,110,111, -32,101,120,112,114,101,115,115,105,111,110,115,32,102,111,114,32,112,114,111,99, -101,100,117,114,101,32,98,111,100,121,41,14,203,12,27,249,22,216,20,15,159, -43,45,49,204,27,249,22,216,20,15,159,44,46,49,196,27,249,22,216,20,15, -159,45,47,49,248,199,200,249,80,158,45,41,205,27,250,22,67,200,198,199,252, -80,158,51,42,20,15,159,51,48,49,21,95,3,1,4,103,54,53,51,15,3, -1,4,103,54,53,49,16,3,1,4,103,54,53,50,17,248,22,58,198,248,22, -86,198,248,22,84,198,250,22,252,47,2,11,2,11,197,83,159,34,93,80,159, -34,8,38,35,89,162,34,36,45,73,103,101,110,101,114,97,108,45,112,114,111, -116,111,18,223,0,27,249,22,216,20,15,159,37,43,49,197,27,28,248,80,158, -37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197, -250,22,216,199,195,199,11,28,192,27,248,22,58,194,27,248,22,59,195,28,248, -80,158,39,45,194,249,22,7,195,249,80,159,42,8,37,35,201,202,250,80,159, -41,8,39,35,198,201,200,250,80,159,39,8,39,35,196,199,198,83,159,34,93, -80,159,34,8,39,35,89,162,34,37,52,2,7,223,0,27,28,248,80,158,36, -34,195,249,80,158,37,44,27,248,80,158,39,36,198,28,248,80,158,39,34,193, -249,80,158,40,35,248,80,158,41,36,195,27,248,80,158,42,37,196,248,22,65, -250,22,216,199,196,199,11,27,248,80,158,39,37,198,250,22,216,200,195,200,11, -28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,91,159,36,11, -90,161,36,34,11,249,80,159,42,8,38,35,203,27,249,22,67,201,200,251,80, -158,47,42,20,15,159,47,44,49,21,94,3,1,4,103,54,52,49,19,3,1, -4,103,54,52,48,20,248,22,58,197,248,22,59,197,27,249,80,159,43,8,37, -35,204,203,249,22,7,195,89,162,34,35,40,9,224,4,2,248,194,248,22,65, -248,195,197,27,28,248,80,158,37,34,196,249,80,158,38,35,248,80,158,39,36, -198,27,248,80,158,40,37,199,250,22,216,201,195,201,11,28,192,27,248,22,58, -194,27,248,22,59,195,251,22,252,47,2,11,6,82,82,98,97,100,32,115,121, -110,116,97,120,32,40,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105, -101,114,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,110,97,109,101, -44,32,97,110,100,32,110,111,116,32,97,32,110,101,115,116,101,100,32,112,114, -111,99,101,100,117,114,101,32,102,111,114,109,41,21,203,197,250,22,252,47,2, -11,2,11,198,83,159,34,93,80,159,34,8,37,35,89,162,8,100,36,57,72, -115,105,109,112,108,101,45,112,114,111,116,111,22,223,0,91,159,36,11,90,161, -36,34,11,27,249,22,216,20,15,159,39,35,49,199,27,28,248,80,158,39,34, -194,249,80,158,40,35,248,80,158,41,36,196,27,248,80,158,42,37,197,28,248, -80,158,42,38,193,248,80,158,42,39,193,11,11,28,192,27,248,22,58,194,27, -248,22,59,195,249,22,7,248,22,223,249,80,158,45,40,20,15,159,45,36,49, -197,89,162,34,35,47,9,225,8,9,2,27,249,22,216,20,15,159,39,37,49, -198,249,80,158,39,41,196,27,249,22,67,197,198,251,80,158,44,42,20,15,159, -44,38,49,21,94,3,1,4,103,54,50,54,23,3,1,4,103,54,50,53,24, -248,22,59,197,248,22,58,197,27,28,248,80,158,40,34,195,249,80,158,41,35, -248,80,158,42,36,197,27,248,80,158,43,37,198,91,159,37,11,90,161,37,34, -11,250,80,158,48,43,198,35,11,28,194,27,28,248,22,213,197,196,201,249,80, -158,48,44,28,248,80,158,49,38,196,248,22,65,248,80,158,50,39,197,11,250, -22,216,197,199,197,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248, -22,86,196,249,22,7,248,22,223,27,249,22,67,198,199,249,80,158,48,40,20, -15,159,48,39,49,249,22,71,248,22,59,197,250,80,158,53,42,20,15,159,53, -40,49,21,93,3,1,4,103,54,50,55,25,248,22,58,200,89,162,34,35,50, -9,226,10,11,2,3,27,249,22,216,20,15,159,40,41,49,199,249,80,158,40, -41,197,27,250,22,67,200,199,198,251,80,158,45,42,20,15,159,45,42,49,21, -94,3,1,4,103,54,51,50,26,3,1,4,103,54,51,49,27,249,22,71,248, -22,84,199,248,22,58,199,248,22,86,197,250,22,252,47,2,11,2,11,197,87, -95,249,22,3,89,162,34,35,41,9,224,4,5,28,248,80,158,36,45,195,12, -251,22,252,47,2,11,6,40,40,110,111,116,32,97,110,32,105,100,101,110,116, -105,102,105,101,114,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,97, -114,103,117,109,101,110,116,28,196,198,194,27,248,80,158,38,46,194,28,192,251, -22,252,47,2,11,6,29,29,100,117,112,108,105,99,97,116,101,32,97,114,103, -117,109,101,110,116,32,105,100,101,110,116,105,102,105,101,114,29,200,196,12,193, -27,89,162,8,36,35,36,62,109,107,30,223,1,89,162,34,35,52,9,224,0, -1,87,94,28,249,22,77,247,22,252,105,3,21,93,70,101,120,112,114,101,115, -115,105,111,110,31,250,22,252,47,2,11,6,36,36,110,111,116,32,97,108,108, -111,119,101,100,32,105,110,32,97,110,32,101,120,112,114,101,115,115,105,111,110, -32,99,111,110,116,101,120,116,32,197,12,27,249,22,216,20,15,159,38,34,49, -197,27,28,248,80,158,38,34,194,249,80,158,39,35,248,80,158,40,36,196,27, -248,80,158,41,37,197,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158, -43,36,195,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45, -44,248,80,158,46,36,195,248,80,158,46,48,248,80,158,47,37,196,11,11,11, -28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248,80,158, -41,45,194,27,249,22,216,20,15,159,43,50,49,200,249,80,158,43,41,202,27, -250,22,67,199,200,198,252,80,158,49,42,20,15,159,49,51,49,21,95,3,1, -4,103,54,54,55,33,3,1,4,103,54,54,53,34,3,1,4,103,54,54,54, -35,248,22,86,198,248,22,84,198,248,22,58,198,250,80,159,43,8,42,35,199, -202,200,250,80,159,40,8,42,35,196,199,197,250,22,7,248,196,20,15,159,39, -52,49,248,196,20,15,159,39,53,49,248,196,20,15,159,39,54,49,39,20,99, -159,40,16,15,30,36,65,35,37,115,116,120,37,69,115,116,120,45,112,97,105, -114,63,38,11,30,39,2,37,67,99,111,110,115,47,35,102,40,1,30,41,2, -37,67,115,116,120,45,99,97,114,42,5,30,43,2,37,67,115,116,120,45,99, -100,114,44,6,30,45,2,37,69,115,116,120,45,108,105,115,116,63,46,8,30, -47,2,37,69,115,116,120,45,62,108,105,115,116,48,4,30,49,69,35,37,115, -116,120,99,97,115,101,50,1,26,100,97,116,117,109,45,62,115,121,110,116,97, -120,45,111,98,106,101,99,116,47,115,104,97,112,101,51,2,30,52,68,35,37, -115,116,120,108,111,99,53,68,114,101,108,111,99,97,116,101,54,0,30,55,2, -50,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115, -116,105,116,117,116,101,56,0,30,57,2,37,74,115,112,108,105,116,45,115,116, -120,45,108,105,115,116,58,3,30,59,2,37,69,97,112,112,101,110,100,47,35, -102,60,0,30,61,2,37,71,105,100,101,110,116,105,102,105,101,114,63,62,2, -30,63,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,64,1, -26,99,104,101,99,107,45,100,117,112,108,105,99,97,116,101,45,105,100,101,110, -116,105,102,105,101,114,65,0,30,66,2,37,69,115,116,120,45,110,117,108,108, -63,67,10,30,68,2,37,71,115,116,120,45,110,117,108,108,47,35,102,69,9, -16,21,18,99,64,104,101,114,101,70,41,97,39,10,34,11,16,8,2,3,2, -2,2,4,2,2,2,5,2,2,2,6,2,2,98,38,10,35,11,95,159,67, -35,37,113,113,115,116,120,71,9,11,159,2,37,9,11,159,2,64,9,11,16, -0,96,37,8,254,1,11,16,0,16,4,36,11,77,100,101,102,105,110,101,45, -118,97,108,117,101,115,45,115,116,120,72,3,1,7,101,110,118,51,52,53,53, -73,16,4,35,11,63,115,116,120,74,3,1,7,101,110,118,51,52,53,54,75, -18,102,2,70,45,39,38,37,36,35,16,8,44,11,3,1,4,103,54,48,53, -76,3,1,4,103,54,48,54,77,3,1,4,103,54,48,55,78,3,1,7,101, -110,118,51,52,55,49,79,2,79,2,79,16,8,43,11,61,95,80,65,112,114, -111,116,111,81,64,98,111,100,121,82,3,1,7,101,110,118,51,52,55,50,83, -2,83,2,83,16,6,42,11,2,22,2,18,3,1,7,101,110,118,51,52,56, -48,84,2,84,18,104,64,100,101,115,116,85,49,39,38,37,36,35,44,43,16, -6,48,11,2,22,2,18,2,84,2,84,16,6,47,11,3,1,4,103,54,50, -48,86,3,1,4,103,54,50,49,87,3,1,7,101,110,118,51,52,56,55,88, -2,88,16,6,46,11,62,105,100,89,63,97,114,103,90,3,1,7,101,110,118, -51,52,56,56,91,2,91,18,16,2,158,2,70,49,50,18,158,160,10,66,108, -97,109,98,100,97,92,2,23,2,24,49,18,104,2,85,53,39,38,37,36,35, -44,43,48,16,8,52,11,3,1,4,103,54,49,55,93,3,1,4,103,54,49, -56,94,3,1,4,103,54,49,57,95,3,1,7,101,110,118,51,53,49,55,96, -2,96,2,96,16,8,51,11,2,89,2,90,64,114,101,115,116,97,3,1,7, -101,110,118,51,53,49,56,98,2,98,2,98,18,16,2,158,93,103,2,25,8, -27,98,8,26,10,34,11,95,159,68,35,37,112,97,114,97,109,122,99,9,11, -159,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,100,9,11,159,2, -37,9,11,16,14,73,115,121,110,116,97,120,45,99,97,115,101,42,42,101,29, -102,11,11,2,51,2,102,66,115,121,110,116,97,120,103,2,102,2,56,2,102, -78,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,104,2, -102,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,105,2,102,1, -20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111,114, -106,2,102,98,59,10,35,11,95,159,64,35,37,115,99,107,9,11,159,2,100, -9,11,159,2,37,9,11,16,0,96,58,8,254,1,11,16,0,16,4,57,11, -61,120,108,3,1,6,101,110,118,52,53,52,109,16,4,56,11,68,104,101,114, -101,45,115,116,120,110,3,1,6,101,110,118,52,53,54,111,16,4,55,11,2, -110,2,111,13,16,4,35,2,102,2,50,11,93,8,252,205,11,16,4,54,11, -61,114,112,3,1,7,101,110,118,51,53,50,53,113,8,27,95,9,8,252,205, -11,2,50,18,16,2,158,2,70,53,8,28,18,158,160,10,2,92,2,26,2, -27,53,18,16,2,158,2,70,45,8,29,18,158,160,35,104,2,19,8,32,39, -38,37,36,35,44,43,42,16,8,8,31,11,3,1,4,103,54,51,53,114,3, -1,4,103,54,51,54,115,3,1,4,103,54,51,55,116,3,1,7,101,110,118, -51,53,53,52,117,2,117,2,117,16,8,8,30,11,69,115,111,109,101,116,104, -105,110,103,118,64,109,111,114,101,119,2,97,3,1,7,101,110,118,51,53,53, -53,120,2,120,2,120,2,20,8,32,8,32,18,102,2,70,8,34,39,38,37, -36,35,44,43,16,6,8,33,11,2,89,66,109,107,45,114,104,115,121,3,1, -7,101,110,118,51,52,55,57,122,2,122,18,16,2,158,2,70,8,34,8,35, -18,8,35,18,158,96,10,2,15,93,2,16,2,17,8,34,18,101,2,70,8, -38,39,38,37,36,35,16,8,8,37,11,3,1,4,103,54,49,49,123,3,1, -4,103,54,49,50,124,3,1,4,103,54,49,51,125,3,1,7,101,110,118,51, -54,52,53,126,2,126,2,126,16,8,8,36,11,2,80,2,89,2,97,3,1, -7,101,110,118,51,54,52,54,127,2,127,2,127,18,101,2,70,8,41,39,38, -37,36,35,16,8,8,40,11,3,1,4,103,54,49,52,128,3,1,4,103,54, -49,53,129,3,1,4,103,54,49,54,130,3,1,7,101,110,118,51,54,57,51, -131,2,131,2,131,16,8,8,39,11,2,80,2,89,64,101,120,112,114,132,3, -1,7,101,110,118,51,54,57,52,133,2,133,2,133,18,158,96,10,2,33,93, -2,34,2,35,8,41,18,98,73,100,101,102,105,110,101,45,118,97,108,117,101, -115,134,8,43,39,38,37,16,4,8,42,11,2,30,3,1,7,101,110,118,51, -52,53,52,135,18,16,2,158,75,100,101,102,105,110,101,45,115,121,110,116,97, -120,101,115,136,8,43,8,44,18,16,2,158,1,24,100,101,102,105,110,101,45, -118,97,108,117,101,115,45,102,111,114,45,115,121,110,116,97,120,137,8,43,8, -45,11,16,5,93,2,5,87,95,83,159,34,93,80,159,34,8,29,35,89,162, -34,36,47,2,7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,39,248, -80,158,38,36,197,27,248,80,158,39,38,198,28,248,80,158,39,40,193,248,80, -158,39,41,193,11,11,28,192,27,248,22,58,194,27,248,22,59,195,249,80,158, -39,42,199,250,80,158,42,43,20,15,159,42,36,45,21,93,3,1,4,103,54, -55,52,138,249,22,2,80,159,44,8,28,35,199,250,22,252,47,2,11,2,11, -197,83,159,34,93,80,159,34,8,28,35,89,162,35,35,40,9,223,0,250,80, -158,37,43,20,15,159,37,37,45,21,93,3,1,4,103,54,55,51,139,248,22, -58,197,89,162,34,35,57,9,223,0,27,247,22,252,105,3,87,94,28,249,22, -77,194,21,95,66,109,111,100,117,108,101,140,72,109,111,100,117,108,101,45,98, -101,103,105,110,141,69,116,111,112,45,108,101,118,101,108,142,12,250,22,252,47, -2,11,6,51,51,97,108,108,111,119,101,100,32,111,110,108,121,32,97,116,32, -116,104,101,32,116,111,112,45,108,101,118,101,108,32,111,114,32,97,32,109,111, -100,117,108,101,32,116,111,112,45,108,101,118,101,108,143,197,27,249,22,216,20, -15,159,38,34,45,197,27,28,248,80,158,38,34,194,249,80,158,39,35,248,80, -158,40,36,196,248,80,158,40,37,248,80,158,41,38,197,11,28,192,20,15,159, -37,35,45,27,28,248,80,158,39,34,195,249,80,158,40,39,248,80,158,41,36, -197,27,248,80,158,42,38,198,28,248,80,158,42,34,193,249,80,158,43,35,248, -80,158,44,36,195,248,80,158,44,37,248,80,158,45,38,196,11,11,28,192,27, -248,22,58,194,27,248,22,59,195,28,249,22,252,19,2,199,2,141,249,80,159, -42,8,29,35,198,201,27,250,22,252,33,2,196,201,248,22,223,20,15,159,45, -38,45,27,249,22,216,20,15,159,44,39,45,195,27,28,248,80,158,44,34,194, -28,27,248,80,158,45,36,195,28,248,80,158,45,44,193,28,249,22,231,194,20, -15,159,46,40,45,9,11,11,27,248,80,158,45,38,195,28,248,80,158,45,40, -193,248,80,158,45,41,193,11,11,11,28,192,250,80,158,46,43,20,15,159,46, -41,45,21,93,3,1,4,103,54,56,51,144,195,27,28,248,80,158,45,34,195, -28,27,248,80,158,46,36,196,28,248,80,158,46,44,193,28,249,22,231,194,20, -15,159,47,42,45,9,11,11,27,248,80,158,46,38,196,28,248,80,158,46,34, -193,249,80,158,47,35,27,248,80,158,49,36,196,28,248,80,158,49,40,193,248, -22,65,248,80,158,50,41,194,11,27,248,80,158,49,38,196,28,248,80,158,49, -34,193,249,80,158,50,35,248,80,158,51,36,195,248,80,158,51,37,248,80,158, -52,38,196,11,11,11,11,28,192,27,248,22,58,194,27,248,22,59,195,27,249, -22,67,195,196,251,80,158,51,43,20,15,159,51,43,45,21,94,3,1,4,103, -54,56,53,145,3,1,4,103,54,56,52,146,248,22,59,197,248,22,58,197,27, -28,248,80,158,46,34,196,28,27,248,80,158,47,36,197,28,248,80,158,47,44, -193,28,249,22,231,194,20,15,159,48,44,45,9,11,11,27,248,80,158,47,38, -197,28,248,80,158,47,40,193,248,80,158,47,41,193,11,11,11,28,192,250,80, -158,48,43,20,15,159,48,45,45,21,93,3,1,4,103,54,56,54,147,195,27, -28,248,80,158,47,34,197,28,27,248,80,158,48,36,198,28,248,80,158,48,44, -193,28,249,22,231,194,20,15,159,49,46,45,9,11,11,27,248,80,158,48,38, -198,28,248,80,158,48,40,193,248,80,158,48,41,193,11,11,11,28,192,250,80, -158,49,43,20,15,159,49,47,45,21,93,3,1,4,103,54,56,55,148,195,27, -28,248,80,158,48,34,198,28,27,248,80,158,49,36,199,28,248,80,158,49,44, -193,28,249,22,231,194,20,15,159,50,48,45,9,11,11,27,248,80,158,49,38, -199,28,248,80,158,49,34,193,249,80,158,50,35,27,248,80,158,52,36,196,28, -248,80,158,52,40,193,248,22,65,248,80,158,53,41,194,11,27,248,80,158,52, -38,196,28,248,80,158,52,34,193,249,80,158,53,35,248,80,158,54,36,195,248, -80,158,54,37,248,80,158,55,38,196,11,11,11,11,28,192,27,248,22,58,194, -27,248,22,59,195,250,22,252,47,2,11,6,54,54,115,121,110,116,97,120,32, -100,101,102,105,110,105,116,105,111,110,115,32,110,111,116,32,97,108,108,111,119, -101,100,32,119,105,116,104,105,110,32,98,101,103,105,110,45,102,111,114,45,115, -121,110,116,97,120,149,204,250,80,158,50,43,20,15,159,50,49,45,21,93,3, -1,4,103,54,56,56,150,200,249,80,159,40,8,29,35,196,199,34,20,99,159, -36,16,11,2,36,2,59,2,41,2,68,2,43,2,39,2,45,2,47,2,52, -2,55,2,61,16,16,18,99,2,70,8,48,39,38,37,16,4,8,47,11,2, -74,3,1,7,101,110,118,51,55,49,54,151,16,4,8,46,11,63,99,116,120, -152,3,1,7,101,110,118,51,55,49,55,153,18,158,93,101,2,0,8,51,39, -38,37,8,47,8,46,16,4,8,50,11,3,1,4,103,54,55,50,154,3,1, -7,101,110,118,51,55,50,50,155,16,4,8,49,11,2,80,3,1,7,101,110, -118,51,55,50,51,156,8,51,18,158,160,35,101,2,0,8,54,39,38,37,8, -47,8,46,16,6,8,53,11,3,1,4,103,54,54,56,157,3,1,4,103,54, -54,57,158,3,1,7,101,110,118,51,55,51,50,159,2,159,16,6,8,52,11, -2,80,64,101,108,101,109,160,3,1,7,101,110,118,51,55,51,51,161,2,161, -2,138,8,54,8,54,18,158,95,10,2,5,2,139,8,54,18,158,110,101,2, -0,8,57,39,38,37,8,47,8,46,16,6,8,56,11,3,1,4,103,54,55, -48,162,3,1,4,103,54,55,49,163,3,1,7,101,110,118,51,55,52,53,164, -2,164,16,6,8,55,11,2,80,2,160,3,1,7,101,110,118,51,55,52,54, -165,2,165,158,2,134,8,57,158,2,136,8,57,158,2,137,8,57,158,64,115, -101,116,33,166,8,57,158,70,108,101,116,45,118,97,108,117,101,115,167,8,57, -158,71,108,101,116,42,45,118,97,108,117,101,115,168,8,57,158,73,108,101,116, -114,101,99,45,118,97,108,117,101,115,169,8,57,158,2,92,8,57,158,71,99, -97,115,101,45,108,97,109,98,100,97,170,8,57,158,62,105,102,171,8,57,158, -65,113,117,111,116,101,172,8,57,158,1,22,108,101,116,114,101,99,45,115,121, -110,116,97,120,101,115,43,118,97,108,117,101,115,173,8,57,158,76,102,108,117, -105,100,45,108,101,116,45,115,121,110,116,97,120,174,8,57,158,1,22,119,105, -116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,175, -8,57,158,65,35,37,97,112,112,176,8,57,158,65,35,37,116,111,112,177,8, -57,158,67,35,37,100,97,116,117,109,178,8,57,8,57,18,102,2,70,8,59, -39,38,37,8,47,8,46,8,56,8,55,16,4,8,58,11,61,101,179,3,1, -7,101,110,118,51,55,53,49,180,18,16,2,158,2,0,8,59,8,60,18,158, -160,35,104,2,5,8,63,39,38,37,8,47,8,46,8,56,8,55,8,58,16, -4,8,62,11,3,1,4,103,54,56,50,181,3,1,7,101,110,118,51,55,53, -55,182,16,4,8,61,11,61,118,183,3,1,7,101,110,118,51,55,53,56,184, -2,144,8,63,8,63,18,16,2,158,2,134,8,59,8,64,18,158,95,104,2, -137,8,67,39,38,37,8,47,8,46,8,56,8,55,8,58,16,6,8,66,11, -3,1,4,103,54,56,48,185,3,1,4,103,54,56,49,186,3,1,7,101,110, -118,51,55,54,57,187,2,187,16,6,8,65,11,2,89,2,132,3,1,7,101, -110,118,51,55,55,48,188,2,188,158,2,145,8,67,158,2,146,8,67,8,67, -18,16,2,158,67,114,101,113,117,105,114,101,189,8,59,8,68,18,158,160,35, -104,78,114,101,113,117,105,114,101,45,102,111,114,45,115,121,110,116,97,120,190, -8,71,39,38,37,8,47,8,46,8,56,8,55,8,58,16,4,8,70,11,3, -1,4,103,54,55,57,191,3,1,7,101,110,118,51,55,56,49,192,16,4,8, -69,11,2,183,3,1,7,101,110,118,51,55,56,50,193,2,147,8,71,8,71, -18,16,2,158,1,20,114,101,113,117,105,114,101,45,102,111,114,45,116,101,109, -112,108,97,116,101,194,8,59,8,72,18,158,160,35,104,2,189,8,75,39,38, -37,8,47,8,46,8,56,8,55,8,58,16,4,8,74,11,3,1,4,103,54, -55,56,195,3,1,7,101,110,118,51,55,57,49,196,16,4,8,73,11,2,183, -3,1,7,101,110,118,51,55,57,50,197,2,148,8,75,8,75,18,16,2,158, -2,136,8,59,8,76,18,158,95,104,2,137,8,79,39,38,37,8,47,8,46, -8,56,8,55,8,58,16,4,8,78,11,3,1,4,103,54,55,53,198,3,1, -7,101,110,118,51,56,49,48,199,16,4,8,77,11,65,111,116,104,101,114,200, -3,1,7,101,110,118,51,56,49,49,201,158,9,8,79,158,96,10,2,0,2, -150,93,66,118,97,108,117,101,115,202,8,79,8,79,11,9,93,68,35,37,107, -101,114,110,101,108,203,96,2,203,2,64,2,37,2,71,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6315); - } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,252,5,2,252,61,68,159,34,20,99,159,34,16, -1,20,24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,73,35,37, -109,111,114,101,45,115,99,104,101,109,101,1,29,2,11,11,10,10,10,48,80, -158,34,34,20,99,159,34,16,31,30,3,2,2,74,115,116,114,117,99,116,58, -112,114,111,109,105,115,101,4,254,1,30,5,2,2,72,109,97,107,101,45,112, -114,111,109,105,115,101,6,254,1,30,7,2,2,68,112,114,111,109,105,115,101, -63,8,254,1,30,9,2,2,69,112,114,111,109,105,115,101,45,112,10,254,1, -30,11,2,2,74,115,101,116,45,112,114,111,109,105,115,101,45,112,33,12,254, -1,30,13,2,2,65,102,111,114,99,101,14,254,1,30,15,2,2,1,24,99, -117,114,114,101,110,116,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105, -111,110,16,254,1,30,17,68,35,37,112,97,114,97,109,122,18,1,23,101,120, -116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, -19,3,30,20,2,18,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116, -105,111,110,45,107,101,121,21,4,30,22,2,2,1,26,99,97,108,108,45,119, -105,116,104,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,23, -254,1,30,24,2,2,79,115,116,114,117,99,116,58,98,114,101,97,107,45,112, -97,114,97,109,122,25,254,1,30,26,2,2,77,109,97,107,101,45,98,114,101, -97,107,45,112,97,114,97,109,122,27,254,1,30,28,2,2,73,98,114,101,97, -107,45,112,97,114,97,109,122,63,29,254,1,30,30,2,2,76,98,114,101,97, -107,45,112,97,114,97,109,122,45,114,101,102,31,254,1,30,32,2,2,77,98, -114,101,97,107,45,112,97,114,97,109,122,45,115,101,116,33,33,254,1,30,34, -2,2,1,29,115,116,114,117,99,116,58,98,114,101,97,107,45,112,97,114,97, -109,101,116,101,114,105,122,97,116,105,111,110,35,254,1,30,36,2,2,1,27, -109,97,107,101,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105, -122,97,116,105,111,110,37,254,1,30,38,2,2,1,23,98,114,101,97,107,45, -112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,63,39,254,1,30, -40,2,2,1,27,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105, -122,97,116,105,111,110,45,99,101,108,108,41,254,1,30,42,2,2,1,32,115, -101,116,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97, -116,105,111,110,45,99,101,108,108,33,43,254,1,30,44,2,2,1,30,99,117, -114,114,101,110,116,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114, -105,122,97,116,105,111,110,45,254,1,30,46,2,18,77,98,114,101,97,107,45, -101,110,97,98,108,101,100,45,107,101,121,47,0,30,48,2,2,1,32,99,97, -108,108,45,119,105,116,104,45,98,114,101,97,107,45,112,97,114,97,109,101,116, -101,114,105,122,97,116,105,111,110,49,254,1,30,50,2,18,75,99,104,101,99, -107,45,102,111,114,45,98,114,101,97,107,51,1,30,52,2,2,1,24,115,101, -108,101,99,116,45,104,97,110,100,108,101,114,47,110,111,45,98,114,101,97,107, -115,53,254,1,30,54,2,2,1,27,115,101,108,101,99,116,45,104,97,110,100, -108,101,114,47,98,114,101,97,107,115,45,97,115,45,105,115,55,254,1,30,56, -2,2,77,102,97,108,115,101,45,116,104,114,101,97,100,45,99,101,108,108,57, -254,1,30,58,2,2,1,30,99,104,101,99,107,45,119,105,116,104,45,104,97, -110,100,108,101,114,115,45,105,110,45,99,111,110,116,101,120,116,59,254,1,30, -60,2,2,78,104,97,110,100,108,101,114,45,112,114,111,109,112,116,45,107,101, -121,61,254,1,30,62,2,2,1,27,99,97,108,108,45,119,105,116,104,45,101, -120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,63,254,1,30,64, -2,18,1,21,101,120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114, -45,107,101,121,65,2,16,0,11,11,16,19,2,41,2,39,2,31,2,33,2, -29,2,59,2,57,2,61,2,37,2,27,2,6,2,10,2,55,2,53,2,43, -2,12,2,35,2,25,2,4,53,11,16,19,2,49,2,63,2,23,2,45,2, -16,2,14,2,8,64,116,105,109,101,66,70,108,101,116,45,115,116,114,117,99, -116,67,72,112,97,114,97,109,101,116,101,114,105,122,101,68,71,115,101,116,33, -45,118,97,108,117,101,115,69,65,100,101,108,97,121,70,78,112,97,114,97,109, -101,116,101,114,105,122,101,45,98,114,101,97,107,71,66,108,101,116,47,99,99, -72,69,102,108,117,105,100,45,108,101,116,73,62,100,111,74,73,119,105,116,104, -45,104,97,110,100,108,101,114,115,75,64,99,97,115,101,76,74,119,105,116,104, -45,104,97,110,100,108,101,114,115,42,77,16,19,11,11,11,11,11,11,11,11, -11,11,11,11,11,11,11,11,11,11,11,16,19,2,49,2,63,2,23,2,45, -2,16,2,14,2,8,2,66,2,67,2,68,2,69,2,70,2,71,2,72,2, -73,2,74,2,75,2,76,2,77,41,53,106,16,5,93,69,99,97,115,101,45, -116,101,115,116,78,89,162,34,35,51,9,223,0,27,249,22,216,20,15,159,37, -34,43,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, -196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35,248, -80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80, -158,44,38,27,248,80,158,46,36,196,28,248,80,158,46,34,193,249,80,158,47, -38,248,80,158,48,36,195,248,80,158,48,39,248,80,158,49,37,196,11,248,80, -158,45,39,248,80,158,46,37,196,11,11,11,28,192,27,248,22,58,194,27,248, -22,84,195,27,248,22,86,196,28,248,22,47,248,22,217,194,27,249,22,67,196, -195,251,80,158,44,40,20,15,159,44,35,43,21,94,3,1,4,103,54,57,54, -79,3,1,4,103,54,57,53,80,248,22,58,197,248,22,59,197,27,249,22,67, -196,195,251,80,158,44,40,20,15,159,44,36,43,21,94,3,1,4,103,54,57, -56,81,3,1,4,103,54,57,55,82,248,22,58,197,248,22,59,197,27,28,248, -80,158,38,34,195,249,80,158,39,35,248,80,158,40,36,197,27,248,80,158,41, -37,198,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27, -248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,38,27,248,80, -158,47,36,196,28,248,80,158,47,41,193,248,80,158,47,42,193,11,248,80,158, -46,39,248,80,158,47,37,196,11,11,11,28,192,27,248,22,58,194,27,248,22, -84,195,27,248,22,86,196,27,249,22,67,196,195,251,80,158,45,40,20,15,159, -45,37,43,21,94,3,1,4,103,55,48,48,83,3,1,4,103,54,57,57,84, -248,22,58,197,248,22,59,197,250,22,252,47,2,11,6,10,10,98,97,100,32, -115,121,110,116,97,120,85,197,34,20,99,159,34,16,9,30,86,65,35,37,115, -116,120,87,69,115,116,120,45,112,97,105,114,63,88,11,30,89,2,87,67,99, -111,110,115,47,35,102,90,1,30,91,2,87,67,115,116,120,45,99,97,114,92, -5,30,93,2,87,67,115,116,120,45,99,100,114,94,6,30,95,2,87,69,97, -112,112,101,110,100,47,35,102,96,0,30,97,2,87,71,115,116,120,45,110,117, -108,108,47,35,102,98,9,30,99,69,35,37,115,116,120,99,97,115,101,100,1, -24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115,116,105, -116,117,116,101,101,0,30,102,2,87,69,115,116,120,45,108,105,115,116,63,103, -8,30,104,2,87,69,115,116,120,45,62,108,105,115,116,105,4,16,4,18,98, -64,104,101,114,101,106,40,98,38,10,34,11,95,159,2,18,9,11,159,68,35, -37,100,101,102,105,110,101,107,9,11,159,74,35,37,115,109,97,108,108,45,115, -99,104,101,109,101,108,9,11,16,82,2,39,2,2,2,66,2,2,2,61,2, -2,2,49,2,2,2,45,2,2,2,59,2,2,2,35,2,2,2,10,2,2, -67,112,114,111,109,105,115,101,109,2,2,2,14,2,2,2,74,2,2,2,37, -2,2,2,12,2,2,2,6,2,2,2,43,2,2,2,78,2,2,2,69,2, -2,2,41,2,2,2,67,2,2,2,53,2,2,2,31,2,2,2,25,2,2, -2,73,2,2,2,57,2,2,2,4,2,2,2,55,2,2,2,68,2,2,2, -27,2,2,2,71,2,2,2,63,2,2,2,72,2,2,2,29,2,2,2,16, -2,2,2,70,2,2,1,22,98,114,101,97,107,45,112,97,114,97,109,101,116, -101,114,105,122,97,116,105,111,110,110,2,2,2,75,2,2,2,33,2,2,2, -76,2,2,2,8,2,2,2,77,2,2,2,23,2,2,98,37,10,35,11,95, -159,67,35,37,113,113,115,116,120,111,9,11,159,76,35,37,115,116,120,99,97, -115,101,45,115,99,104,101,109,101,112,9,11,159,2,87,9,11,16,0,96,36, -8,254,1,11,16,0,16,4,35,11,61,120,113,3,1,7,101,110,118,51,56, -49,55,114,18,158,95,100,63,101,113,63,115,43,38,37,36,35,16,8,42,11, -3,1,4,103,54,57,50,116,3,1,4,103,54,57,51,117,3,1,4,103,54, -57,52,118,3,1,7,101,110,118,51,56,50,52,119,2,119,2,119,16,8,41, -11,61,95,120,2,113,61,107,121,3,1,7,101,110,118,51,56,50,53,122,2, -122,2,122,158,2,79,43,158,95,10,65,113,117,111,116,101,123,2,80,43,43, -18,158,96,10,64,101,113,118,63,124,2,81,94,2,123,2,82,43,18,158,95, -100,64,109,101,109,118,125,46,38,37,36,35,16,8,45,11,3,1,4,103,54, -56,57,126,3,1,4,103,54,57,48,127,3,1,4,103,54,57,49,128,3,1, -7,101,110,118,51,56,51,57,129,2,129,2,129,16,6,44,11,2,120,2,121, -3,1,7,101,110,118,51,56,52,48,130,2,130,158,2,83,46,158,95,10,2, -123,2,84,46,46,11,16,5,93,2,76,89,162,34,35,8,27,9,223,0,27, -249,22,216,20,15,159,37,34,46,196,27,28,248,80,158,37,34,194,249,80,158, -38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34, -193,249,80,158,41,38,248,80,158,42,36,195,248,80,158,42,39,248,80,158,43, -37,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,250,80,158,41,40, -20,15,159,41,35,46,21,93,3,1,4,103,55,51,49,131,195,27,28,248,80, -158,38,34,195,249,80,158,39,35,248,80,158,40,36,197,27,248,80,158,41,37, -198,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27,248, -80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,38,27,248,80,158, -47,36,196,28,248,80,158,47,34,193,28,27,248,80,158,48,36,194,28,248,80, -158,48,41,193,28,249,22,230,194,20,15,159,49,36,46,9,11,11,27,248,80, -158,48,37,194,28,248,80,158,48,34,193,249,80,158,49,35,248,80,158,50,36, -195,27,248,80,158,51,37,196,28,248,80,158,51,42,193,248,80,158,51,43,193, -11,11,11,11,248,80,158,46,39,248,80,158,47,37,196,11,11,11,28,192,27, -248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197,249,80, -158,43,44,202,27,250,22,67,200,199,198,252,80,158,49,40,20,15,159,49,37, -46,21,95,3,1,4,103,55,51,52,132,3,1,4,103,55,51,51,133,3,1, -4,103,55,51,50,134,248,22,58,198,248,22,84,198,248,22,86,198,27,28,248, -80,158,39,34,196,249,80,158,40,35,248,80,158,41,36,198,27,248,80,158,42, -37,199,28,248,80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27, -248,80,158,45,37,196,28,248,80,158,45,34,193,249,80,158,46,38,27,248,80, -158,48,36,196,28,248,80,158,48,34,193,249,80,158,49,38,27,248,80,158,51, -36,196,28,248,80,158,51,42,193,248,22,65,248,80,158,52,43,194,11,27,248, -80,158,51,37,196,28,248,80,158,51,34,193,249,80,158,52,35,248,80,158,53, -36,195,27,248,80,158,54,37,196,28,248,80,158,54,42,193,248,80,158,54,43, -193,11,11,11,248,80,158,47,39,248,80,158,48,37,196,11,11,11,28,192,27, -248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248, -22,95,198,249,80,158,45,44,204,27,251,22,67,200,199,202,201,250,80,158,49, -45,89,162,34,34,43,9,224,15,3,253,80,158,41,40,20,15,159,41,38,46, -21,96,3,1,4,103,55,51,54,135,3,1,4,103,55,51,53,136,3,1,4, -103,55,51,56,137,3,1,4,103,55,51,55,138,248,22,93,199,248,22,94,199, -248,22,58,199,248,22,84,199,21,95,62,105,102,139,95,2,78,61,118,140,94, -2,121,63,46,46,46,141,96,2,0,62,101,49,142,62,101,50,143,2,141,20, -15,159,49,39,46,27,28,248,80,158,40,34,197,249,80,158,41,35,248,80,158, -42,36,199,27,248,80,158,43,37,200,28,248,80,158,43,34,193,249,80,158,44, -35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,34,193, -249,80,158,47,38,27,248,80,158,49,36,196,28,248,80,158,49,34,193,249,80, -158,50,38,27,248,80,158,52,36,196,28,248,80,158,52,42,193,248,22,65,248, -80,158,53,43,194,11,27,248,80,158,52,37,196,28,248,80,158,52,34,193,249, -80,158,53,35,248,80,158,54,36,195,27,248,80,158,55,37,196,28,248,80,158, -55,42,193,248,22,65,248,80,158,56,43,194,11,11,11,27,248,80,158,49,37, -196,28,248,80,158,49,34,193,249,80,158,50,35,248,80,158,51,36,195,27,248, -80,158,52,37,196,28,248,80,158,52,42,193,248,80,158,52,43,193,11,11,11, -11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248, -22,96,197,27,249,22,76,199,38,27,249,22,76,200,39,27,249,22,75,201,40, -249,80,158,48,44,23,15,27,253,22,67,204,203,206,202,201,205,250,80,158,52, -45,89,162,34,34,46,9,224,18,3,26,8,80,158,43,40,20,15,159,43,40, -46,21,98,3,1,4,103,55,51,57,144,3,1,4,103,55,52,48,145,3,1, -4,103,55,52,50,146,3,1,4,103,55,52,49,147,3,1,4,103,55,52,52, -148,3,1,4,103,55,52,51,149,248,22,93,201,249,22,75,202,39,248,22,58, -201,248,22,84,201,248,22,96,201,249,22,76,202,38,21,95,63,108,101,116,150, -93,94,2,113,2,140,96,2,139,95,2,78,2,113,94,2,121,2,141,96,2, -0,2,142,2,143,2,141,97,2,76,2,113,62,99,49,151,62,99,50,152,2, -141,20,15,159,52,41,46,27,28,248,80,158,41,34,198,249,80,158,42,35,248, -80,158,43,36,200,27,248,80,158,44,37,201,28,248,80,158,44,34,193,27,28, -248,22,213,194,193,201,249,80,158,46,35,248,80,158,47,36,196,27,248,80,158, -48,37,197,28,248,80,158,48,34,193,27,28,248,22,213,194,193,196,249,80,158, -50,38,27,248,80,158,52,36,197,28,248,80,158,52,34,193,249,80,158,53,35, -248,80,158,54,36,195,27,248,80,158,55,37,196,28,248,80,158,55,34,193,249, -80,158,56,35,248,80,158,57,36,195,27,248,80,158,58,37,196,28,248,80,158, -58,42,193,248,22,65,248,80,158,59,43,194,11,11,11,27,248,80,158,52,37, -197,250,22,216,198,195,198,11,11,11,28,192,27,248,22,58,194,27,248,22,84, -195,27,248,22,93,196,27,248,22,96,197,27,249,22,76,199,38,27,249,22,75, -200,39,251,22,252,47,2,11,6,33,33,98,97,100,32,115,121,110,116,97,120, -32,40,110,111,116,32,97,32,100,97,116,117,109,32,115,101,113,117,101,110,99, -101,41,153,23,17,199,27,28,248,80,158,42,34,199,249,80,158,43,35,248,80, -158,44,36,201,27,248,80,158,45,37,202,28,248,80,158,45,34,193,27,28,248, -22,213,194,193,202,249,80,158,47,35,248,80,158,48,36,196,27,248,80,158,49, -37,197,28,248,80,158,49,34,193,27,28,248,22,213,194,193,196,249,80,158,51, -35,248,80,158,52,36,196,27,248,80,158,53,37,197,250,22,216,198,195,198,11, -11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248, -22,94,197,251,22,252,47,2,11,6,52,52,98,97,100,32,115,121,110,116,97, -120,32,40,109,105,115,115,105,110,103,32,101,120,112,114,101,115,115,105,111,110, -32,97,102,116,101,114,32,100,97,116,117,109,32,115,101,113,117,101,110,99,101, -41,154,23,16,197,27,28,248,80,158,43,34,200,249,80,158,44,35,248,80,158, -45,36,202,27,248,80,158,46,37,203,250,22,216,205,195,205,11,28,192,27,248, -22,58,194,27,248,22,59,195,28,248,22,63,248,22,217,194,250,22,252,47,2, -11,2,85,204,250,22,252,47,2,11,6,31,31,98,97,100,32,115,121,110,116, -97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111,102,32,96,46, -39,41,155,206,250,22,252,47,2,11,2,85,202,34,20,99,159,34,16,12,2, -86,2,89,2,91,2,93,2,95,2,97,2,99,30,156,2,87,71,105,100,101, -110,116,105,102,105,101,114,63,157,2,2,102,2,104,30,158,68,35,37,115,116, -120,108,111,99,159,68,114,101,108,111,99,97,116,101,160,0,30,161,2,100,1, -20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111,114, -162,1,16,8,18,98,2,106,48,38,37,36,16,4,47,11,2,113,3,1,7, -101,110,118,51,56,53,48,163,18,158,95,100,2,0,51,38,37,36,47,16,6, -50,11,3,1,4,103,55,50,57,164,3,1,4,103,55,51,48,165,3,1,7, -101,110,118,51,56,53,53,166,2,166,16,6,49,11,2,120,2,140,3,1,7, -101,110,118,51,56,53,54,167,2,167,158,2,131,51,158,94,10,64,99,111,110, -100,168,51,51,18,16,2,158,64,101,108,115,101,169,48,52,18,158,162,37,100, -2,0,55,38,37,36,47,16,10,54,11,3,1,4,103,55,50,53,170,3,1, -4,103,55,50,54,171,3,1,4,103,55,50,55,172,3,1,4,103,55,50,56, -173,3,1,7,101,110,118,51,56,55,49,174,2,174,2,174,2,174,16,10,53, -11,2,120,2,140,2,142,2,143,3,1,7,101,110,118,51,56,55,50,175,2, -175,2,175,2,175,158,2,132,55,158,2,133,55,2,134,55,55,18,158,95,100, -2,139,58,38,37,36,47,16,12,57,11,3,1,4,103,55,50,48,176,3,1, -4,103,55,50,49,177,3,1,4,103,55,50,50,178,3,1,4,103,55,50,51, -179,3,1,4,103,55,50,52,180,3,1,7,101,110,118,51,56,57,49,181,2, -181,2,181,2,181,2,181,16,12,56,11,2,120,2,140,2,121,2,142,2,143, -3,1,7,101,110,118,51,56,57,50,182,2,182,2,182,2,182,2,182,158,96, -10,2,78,2,135,2,136,58,158,160,10,2,0,2,137,2,138,58,58,18,16, -2,96,2,141,8,26,93,8,252,221,12,16,4,59,11,61,114,183,3,1,7, -101,110,118,51,57,48,52,184,95,9,8,252,221,12,2,100,18,158,95,100,2, -150,8,29,38,37,36,47,16,16,8,28,11,3,1,4,103,55,49,51,185,3, -1,4,103,55,49,52,186,3,1,4,103,55,49,53,187,3,1,4,103,55,49, -54,188,3,1,4,103,55,49,55,189,3,1,4,103,55,49,56,190,3,1,4, -103,55,49,57,191,3,1,7,101,110,118,51,57,49,54,192,2,192,2,192,2, -192,2,192,2,192,2,192,16,16,8,27,11,2,120,2,140,2,121,2,142,2, -143,2,151,2,152,3,1,7,101,110,118,51,57,49,55,193,2,193,2,193,2, -193,2,193,2,193,2,193,158,94,10,94,2,113,2,144,8,29,158,97,10,2, -139,95,2,78,2,113,2,145,159,2,0,2,146,2,147,160,2,76,2,113,2, -148,2,149,8,29,8,29,18,16,2,96,2,141,8,31,93,8,252,226,12,16, -4,8,30,11,2,183,3,1,7,101,110,118,51,57,51,51,194,95,9,8,252, -226,12,2,100,11,16,5,93,2,74,87,95,83,159,34,93,80,159,34,8,33, -35,89,162,35,35,41,9,223,0,251,80,158,38,47,20,15,159,38,46,49,21, -94,3,1,4,103,55,54,54,195,3,1,4,103,55,54,53,196,248,22,58,198, -248,22,84,198,83,159,34,93,80,159,34,8,32,35,89,162,35,35,41,9,223, -0,251,80,158,38,47,20,15,159,38,42,49,21,94,3,1,4,103,55,54,48, -197,3,1,4,103,55,53,57,198,248,22,58,198,248,22,84,198,89,162,34,35, -8,28,9,223,0,27,249,22,216,20,15,159,37,34,49,196,27,28,248,80,158, -37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197, -28,248,80,158,40,34,193,249,80,158,41,38,27,248,80,158,43,36,196,28,248, -80,158,43,39,193,248,22,8,89,162,34,35,41,9,224,9,1,27,249,22,2, -89,162,34,35,50,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197, -249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80, -158,41,34,193,27,28,248,22,213,194,193,200,249,80,158,43,35,248,80,158,44, -36,196,27,248,80,158,45,37,197,248,22,65,250,22,216,199,196,199,11,11,194, -248,80,158,39,41,196,28,248,22,63,193,21,95,9,9,9,248,80,158,37,42, -193,11,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,38, -27,248,80,158,46,36,196,28,248,80,158,46,34,193,249,80,158,47,35,248,80, -158,48,36,195,27,248,80,158,49,37,196,28,248,80,158,49,39,193,248,22,65, -248,80,158,50,41,194,11,11,27,248,80,158,46,37,196,28,248,80,158,46,39, -193,248,80,158,46,41,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22, -84,195,27,248,22,93,196,27,248,22,96,197,27,249,22,76,199,38,27,249,22, -76,200,39,27,249,22,75,201,40,27,249,22,216,20,15,159,46,35,49,250,22, -2,89,162,34,36,45,9,224,15,16,27,249,22,216,20,15,159,38,36,49,198, -27,248,80,158,38,43,194,28,192,196,27,28,248,80,158,39,34,195,249,80,158, -40,38,248,80,158,41,36,197,248,80,158,41,43,248,80,158,42,37,198,11,28, -192,192,250,22,252,47,2,11,6,19,19,98,97,100,32,118,97,114,105,97,98, -108,101,32,115,121,110,116,97,120,199,198,248,22,223,249,80,158,52,44,20,15, -159,52,37,49,206,248,22,223,249,80,158,52,44,20,15,159,52,38,49,204,27, -28,248,80,158,46,39,194,248,80,158,46,41,194,11,28,192,27,249,22,216,20, -15,159,48,39,49,249,80,158,50,44,20,15,159,50,40,49,200,27,248,80,158, -48,43,194,28,192,249,80,158,49,45,23,16,27,252,22,67,204,206,23,16,202, -23,17,250,80,158,53,46,89,162,34,34,47,9,224,19,3,252,80,158,40,47, -20,15,159,40,41,49,21,95,3,1,4,103,55,54,52,200,3,1,4,103,55, -54,49,201,3,1,4,103,55,54,51,202,250,22,2,80,159,43,8,32,35,248, -22,95,201,248,22,93,201,248,22,84,198,249,22,71,248,22,58,200,250,80,158, -45,47,20,15,159,45,43,49,21,93,3,1,4,103,55,54,50,203,248,22,96, -203,21,96,2,150,66,100,111,108,111,111,112,204,94,94,63,118,97,114,205,64, -105,110,105,116,206,2,141,95,2,139,94,63,110,111,116,207,62,101,48,208,96, -2,0,61,99,209,2,141,95,2,204,64,115,116,101,112,210,2,141,20,15,159, -53,44,49,27,28,248,80,158,49,34,195,249,80,158,50,35,248,80,158,51,36, -197,27,248,80,158,52,37,198,28,248,80,158,52,39,193,248,80,158,52,41,193, -11,11,28,192,27,248,22,58,194,27,248,22,59,195,249,80,158,52,45,23,19, -27,254,22,67,203,23,19,23,21,23,17,23,15,202,23,22,250,80,158,56,46, -89,162,34,34,50,9,224,22,3,254,80,158,42,47,20,15,159,42,45,49,21, -97,3,1,4,103,55,55,50,211,3,1,4,103,55,55,49,212,3,1,4,103, -55,54,56,213,3,1,4,103,55,54,55,214,3,1,4,103,55,55,48,215,250, -22,2,80,159,45,8,33,35,249,22,75,204,40,248,22,93,203,248,22,84,200, -248,22,58,200,249,22,76,201,39,249,22,71,248,22,96,202,250,80,158,47,47, -20,15,159,47,47,49,21,93,3,1,4,103,55,54,57,216,249,22,76,206,38, -21,96,2,150,2,204,94,94,2,205,2,206,2,141,96,2,139,2,208,96,2, -0,2,142,2,143,2,141,96,2,0,2,209,2,141,95,2,204,2,210,2,141, -20,15,159,56,48,49,250,22,252,47,2,11,2,85,197,248,80,158,46,48,20, -15,159,46,49,49,250,22,252,47,2,11,2,85,196,34,20,99,159,36,16,15, -2,86,2,89,2,91,2,93,2,95,2,102,30,217,2,87,73,115,116,120,45, -99,104,101,99,107,47,101,115,99,218,7,2,104,30,219,2,87,70,115,116,120, -45,114,111,116,97,116,101,220,12,2,97,30,221,2,100,1,26,100,97,116,117, -109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112, -101,222,2,2,158,2,161,2,99,30,223,70,35,37,119,105,116,104,45,115,116, -120,224,76,119,105,116,104,45,115,121,110,116,97,120,45,102,97,105,108,225,3, -16,16,18,98,2,106,8,33,38,37,36,16,4,8,32,11,66,111,114,105,103, -45,120,226,3,1,7,101,110,118,51,57,57,49,227,18,100,2,106,8,36,38, -37,36,8,32,16,16,8,35,11,3,1,4,103,55,52,53,228,3,1,4,103, -55,52,54,229,3,1,4,103,55,52,55,230,3,1,4,103,55,52,56,231,3, -1,4,103,55,52,57,232,3,1,4,103,55,53,48,233,3,1,4,103,55,53, -49,234,3,1,7,101,110,118,52,48,48,56,235,2,235,2,235,2,235,2,235, -2,235,2,235,16,16,8,34,11,2,120,2,205,2,206,2,210,2,208,2,142, -2,209,3,1,7,101,110,118,52,48,48,57,236,2,236,2,236,2,236,2,236, -2,236,2,236,18,101,2,106,8,38,38,37,36,8,32,8,35,8,34,16,6, -8,37,11,2,140,61,115,237,3,1,7,101,110,118,52,48,50,54,238,2,238, -18,16,2,158,64,100,101,115,116,239,8,36,8,39,18,8,39,18,101,2,106, -8,41,38,37,36,8,32,8,35,8,34,16,4,8,40,11,3,1,4,103,55, -53,54,240,3,1,7,101,110,118,52,48,52,56,241,18,16,2,158,2,239,8, -41,8,42,18,158,97,10,2,150,2,204,2,200,95,2,139,94,2,207,2,201, -158,2,0,2,202,8,41,18,158,95,10,2,197,2,198,8,41,18,16,2,103, -93,158,159,10,2,204,2,203,8,41,8,50,98,8,49,10,34,11,95,159,2, -18,9,11,159,2,108,9,11,159,2,87,9,11,16,14,73,115,121,110,116,97, -120,45,99,97,115,101,42,42,242,29,243,11,11,2,222,2,243,66,115,121,110, -116,97,120,244,2,243,2,101,2,243,78,112,97,116,116,101,114,110,45,115,117, -98,115,116,105,116,117,116,101,245,2,243,75,115,117,98,115,116,105,116,117,116, -101,45,115,116,111,112,246,2,243,2,162,2,243,98,8,48,10,35,11,95,159, -64,35,37,115,99,247,9,11,159,2,108,9,11,159,2,87,9,11,16,0,96, -8,47,8,254,1,11,16,0,16,4,8,46,11,2,113,3,1,6,101,110,118, -52,53,52,248,16,4,8,45,11,68,104,101,114,101,45,115,116,120,249,3,1, -6,101,110,118,52,53,54,250,16,4,8,44,11,2,249,2,250,13,16,4,35, -2,243,2,100,11,93,8,252,32,13,16,4,8,43,11,2,183,3,1,7,101, -110,118,52,48,53,57,251,95,9,8,252,32,13,2,100,18,16,2,96,2,141, -8,52,93,8,252,32,13,16,4,8,51,11,2,183,2,251,95,9,8,252,32, -13,2,100,18,158,96,103,2,150,8,55,38,37,36,8,32,8,35,8,34,8, -40,16,6,8,54,11,3,1,4,103,55,53,55,252,252,0,3,1,4,103,55, -53,56,252,253,0,3,1,7,101,110,118,52,48,54,54,252,254,0,2,252,254, -0,16,4,8,53,11,2,143,3,1,7,101,110,118,52,48,54,55,252,255,0, -158,2,204,8,55,158,2,211,8,55,158,97,10,2,139,2,212,159,2,0,2, -213,2,214,158,2,0,2,215,8,55,8,55,18,158,95,10,2,195,2,196,8, -55,18,16,2,103,93,158,159,10,2,204,2,216,8,55,8,57,8,49,8,48, -8,47,8,46,8,45,8,44,13,16,4,35,2,243,2,100,11,93,8,252,39, -13,16,4,8,56,11,2,183,3,1,7,101,110,118,52,48,55,51,252,0,1, -95,9,8,252,39,13,2,100,18,16,2,96,2,141,8,59,93,8,252,39,13, -16,4,8,58,11,2,183,2,252,0,1,95,9,8,252,39,13,2,100,18,16, -2,158,94,98,2,210,8,63,93,8,252,7,13,16,4,8,62,11,3,1,8, -119,115,116,109,112,55,53,50,252,1,1,3,1,7,101,110,118,52,48,50,53, -252,2,1,16,4,8,61,11,3,1,4,103,55,53,53,252,3,1,3,1,7, -101,110,118,52,48,55,56,252,4,1,16,4,8,60,11,65,95,101,108,115,101, -252,5,1,3,1,7,101,110,118,52,48,55,57,252,6,1,158,2,141,8,63, -8,63,95,9,8,252,7,13,2,224,11,16,5,93,2,70,89,162,34,35,45, -9,223,0,27,249,22,216,20,15,159,37,34,42,196,27,28,248,80,158,37,34, -194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248, -80,158,40,34,193,249,80,158,41,38,248,80,158,42,36,195,248,80,158,42,39, -248,80,158,43,37,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,249, -80,158,40,40,199,250,80,158,43,41,20,15,159,43,35,42,21,93,3,1,4, -103,55,55,53,252,7,1,197,250,22,252,47,2,11,2,85,196,34,20,99,159, -34,16,8,2,86,2,89,2,91,2,93,2,95,2,97,2,158,2,99,16,2, -18,98,2,106,8,65,38,37,36,16,4,8,64,11,2,113,3,1,7,101,110, -118,52,48,56,51,252,8,1,18,158,94,100,2,6,8,68,38,37,36,8,64, -16,6,8,67,11,3,1,4,103,55,55,51,252,9,1,3,1,4,103,55,55, -52,252,10,1,3,1,7,101,110,118,52,48,56,56,252,11,1,2,252,11,1, -16,6,8,66,11,2,70,63,101,120,112,252,12,1,3,1,7,101,110,118,52, -48,56,57,252,13,1,2,252,13,1,158,96,10,66,108,97,109,98,100,97,252, -14,1,9,2,252,7,1,8,68,8,68,11,16,5,93,2,109,27,247,22,252, -110,3,253,22,66,248,199,20,15,159,42,34,34,248,199,20,15,159,42,35,34, -248,199,20,15,159,42,36,34,248,22,66,248,200,20,15,159,43,37,34,248,22, -66,248,200,20,15,159,43,38,34,10,43,20,99,159,34,16,0,16,5,18,97, -2,4,8,69,38,37,36,18,16,2,158,2,6,8,69,8,70,18,16,2,158, -2,8,8,69,8,71,18,16,2,158,2,10,8,69,8,72,18,16,2,158,2, -12,8,69,8,73,11,16,5,93,2,68,89,162,34,35,55,9,223,0,27,249, -22,216,20,15,159,37,34,49,196,27,28,248,80,158,37,34,194,249,80,158,38, -35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193, -28,248,80,158,40,38,248,80,158,41,36,194,27,248,80,158,41,37,194,28,248, -80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27,248,80,158,44, -37,196,28,248,80,158,44,39,193,248,80,158,44,40,193,11,11,11,11,11,28, -192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249,22,67,195, -196,251,80,158,44,41,20,15,159,44,35,49,21,94,3,1,4,103,55,56,54, -252,15,1,3,1,4,103,55,56,53,252,16,1,248,22,59,197,248,22,58,197, -27,28,248,80,158,38,34,195,249,80,158,39,35,248,80,158,40,36,197,27,248, -80,158,41,37,198,28,248,80,158,41,34,193,249,80,158,42,42,27,248,80,158, -44,36,196,28,248,80,158,44,39,193,248,22,8,89,162,34,35,41,9,224,10, -1,27,249,22,2,89,162,34,35,46,9,224,4,5,249,80,158,37,43,28,248, -80,158,38,34,197,249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41, -37,200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248, -80,158,43,38,248,80,158,44,37,196,11,11,194,248,80,158,39,40,196,28,248, -22,63,193,21,94,9,9,248,80,158,37,44,193,11,27,248,80,158,44,37,196, -28,248,80,158,44,34,193,249,80,158,45,35,248,80,158,46,36,195,27,248,80, -158,47,37,196,28,248,80,158,47,39,193,248,80,158,47,40,193,11,11,11,11, -28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96, -197,27,248,22,95,198,27,249,22,216,20,15,159,45,36,49,249,22,1,22,71, -250,22,2,22,65,248,22,223,249,80,158,53,45,20,15,159,53,37,49,206,248, -22,223,249,80,158,53,45,20,15,159,53,38,49,205,27,28,248,80,158,45,39, -194,248,80,158,45,40,194,11,28,192,249,80,158,46,46,205,27,250,22,67,198, -201,200,250,80,158,50,47,89,162,34,34,42,9,224,16,3,252,80,158,40,41, -20,15,159,40,39,49,21,95,3,1,4,103,55,57,48,252,17,1,3,1,4, -103,55,57,50,252,18,1,3,1,4,103,55,57,49,252,19,1,248,22,58,198, -248,22,84,198,248,22,86,198,21,96,1,22,119,105,116,104,45,99,111,110,116, -105,110,117,97,116,105,111,110,45,109,97,114,107,252,20,1,2,21,96,2,19, -95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45, -115,101,116,45,102,105,114,115,116,252,21,1,11,2,21,63,112,47,118,252,22, -1,2,141,97,2,150,9,65,101,120,112,114,49,252,23,1,64,101,120,112,114, -252,24,1,2,141,20,15,159,50,40,49,248,80,158,45,48,20,15,159,45,41, -49,250,22,252,47,2,11,2,85,197,34,20,99,159,34,16,15,2,86,2,89, -2,91,2,93,2,97,2,102,2,104,2,99,2,95,2,217,2,219,2,221,2, -158,2,161,2,223,16,8,18,98,2,106,8,75,38,37,36,16,4,8,74,11, -63,115,116,120,252,25,1,3,1,7,101,110,118,52,48,57,57,252,26,1,18, -158,162,37,100,2,150,8,78,38,37,36,8,74,16,8,8,77,11,3,1,4, -103,55,56,50,252,27,1,3,1,4,103,55,56,51,252,28,1,3,1,4,103, -55,56,52,252,29,1,3,1,7,101,110,118,52,49,48,54,252,30,1,2,252, -30,1,2,252,30,1,16,8,8,76,11,2,120,2,252,23,1,2,252,24,1, -3,1,7,101,110,118,52,49,48,55,252,31,1,2,252,31,1,2,252,31,1, -158,9,8,78,158,2,252,15,1,8,78,2,252,16,1,8,78,8,78,18,100, -2,106,8,81,38,37,36,8,74,16,12,8,80,11,3,1,4,103,55,55,55, -252,32,1,3,1,4,103,55,55,56,252,33,1,3,1,4,103,55,55,57,252, -34,1,3,1,4,103,55,56,48,252,35,1,3,1,4,103,55,56,49,252,36, -1,3,1,7,101,110,118,52,49,50,54,252,37,1,2,252,37,1,2,252,37, -1,2,252,37,1,2,252,37,1,16,12,8,79,11,2,120,65,112,97,114,97, -109,252,38,1,63,118,97,108,252,39,1,2,252,23,1,2,252,24,1,3,1, -7,101,110,118,52,49,50,55,252,40,1,2,252,40,1,2,252,40,1,2,252, -40,1,2,252,40,1,18,16,2,158,2,239,8,81,8,82,18,8,82,18,158, -96,102,2,252,20,1,8,85,38,37,36,8,74,8,80,8,79,16,4,8,84, -11,3,1,4,103,55,56,57,252,41,1,3,1,7,101,110,118,52,49,52,53, -252,42,1,16,4,8,83,11,2,252,22,1,3,1,7,101,110,118,52,49,52, -54,252,43,1,158,2,21,8,85,158,160,10,2,19,95,2,252,21,1,11,2, -21,2,252,17,1,8,85,158,161,10,2,150,9,2,252,18,1,2,252,19,1, -8,85,8,85,18,16,2,96,2,141,8,87,93,8,252,105,13,16,4,8,86, -11,2,183,3,1,7,101,110,118,52,49,53,48,252,44,1,95,9,8,252,105, -13,2,100,18,16,2,158,94,98,2,252,22,1,8,91,93,8,252,96,13,16, -4,8,90,11,3,1,8,119,115,116,109,112,55,56,55,252,45,1,3,1,7, -101,110,118,52,49,51,57,252,46,1,16,4,8,89,11,3,1,4,103,55,56, -56,252,47,1,3,1,7,101,110,118,52,49,53,51,252,48,1,16,4,8,88, -11,2,252,5,1,3,1,7,101,110,118,52,49,53,52,252,49,1,158,2,141, -8,91,8,91,95,9,8,252,96,13,2,224,11,16,5,93,2,71,89,162,34, -35,51,9,223,0,27,249,22,216,20,15,159,37,34,42,196,27,28,248,80,158, -37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197, -28,248,80,158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248,80, -158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,35,248,80,158,45,36, -195,27,248,80,158,46,37,196,28,248,80,158,46,38,193,248,80,158,46,39,193, -11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196, -27,248,22,94,197,249,80,158,42,40,201,27,250,22,67,200,198,199,252,80,158, -48,41,20,15,159,48,35,42,21,95,3,1,4,103,55,57,55,252,50,1,3, -1,4,103,55,57,57,252,51,1,3,1,4,103,55,57,56,252,52,1,248,22, -58,198,248,22,86,198,248,22,84,198,250,22,252,47,2,11,2,85,196,34,20, -99,159,34,16,8,2,86,2,89,2,91,2,93,2,102,2,104,2,158,2,99, -16,2,18,98,2,106,8,93,38,37,36,16,4,8,92,11,2,252,25,1,3, -1,7,101,110,118,52,49,53,56,252,53,1,18,158,96,100,2,252,20,1,8, -96,38,37,36,8,92,16,10,8,95,11,3,1,4,103,55,57,51,252,54,1, -3,1,4,103,55,57,52,252,55,1,3,1,4,103,55,57,53,252,56,1,3, -1,4,103,55,57,54,252,57,1,3,1,7,101,110,118,52,49,54,53,252,58, -1,2,252,58,1,2,252,58,1,2,252,58,1,16,10,8,94,11,2,120,69, -98,111,111,108,45,101,120,112,114,252,59,1,2,252,23,1,2,252,24,1,3, -1,7,101,110,118,52,49,54,54,252,60,1,2,252,60,1,2,252,60,1,2, -252,60,1,158,2,47,8,96,158,95,10,76,109,97,107,101,45,116,104,114,101, -97,100,45,99,101,108,108,252,61,1,95,63,97,110,100,252,62,1,2,252,50, -1,10,8,96,158,96,10,2,0,93,2,51,160,2,150,9,2,252,51,1,2, -252,52,1,8,96,8,96,11,16,5,93,2,110,27,247,22,252,110,3,253,22, -66,248,199,20,15,159,42,34,34,248,199,20,15,159,42,35,34,248,199,20,15, -159,42,36,34,248,22,66,248,200,20,15,159,43,37,34,248,22,66,248,200,20, -15,159,43,38,34,10,43,20,99,159,34,16,0,16,5,18,16,2,158,2,35, -8,69,8,97,18,16,2,158,2,37,8,69,8,98,18,16,2,158,2,39,8, -69,8,99,18,16,2,158,2,41,8,69,8,100,18,16,2,158,2,43,8,69, -8,101,11,16,5,94,2,75,2,77,87,96,83,159,34,93,80,159,34,8,35, -35,89,162,35,35,41,9,223,0,251,80,158,38,42,20,15,159,38,46,50,21, -94,3,1,4,103,56,50,53,252,63,1,3,1,4,103,56,50,52,252,64,1, -248,22,58,198,248,22,84,198,83,159,34,93,80,159,34,8,34,35,89,162,35, -35,41,9,223,0,251,80,158,38,42,20,15,159,38,45,50,21,94,3,1,4, -103,56,50,49,252,65,1,3,1,4,103,56,50,48,252,66,1,248,22,58,198, -248,22,84,198,83,159,34,93,80,159,34,8,33,35,89,162,35,35,41,9,223, -0,251,80,158,38,42,20,15,159,38,44,50,21,94,3,1,4,103,56,50,51, -252,67,1,3,1,4,103,56,50,50,252,68,1,248,22,58,198,248,22,84,198, -27,89,162,8,36,35,36,62,119,104,252,69,1,223,1,89,162,34,35,8,26, -9,224,0,1,27,249,22,216,20,15,159,38,34,50,197,27,28,248,80,158,38, -34,194,249,80,158,39,35,248,80,158,40,36,196,27,248,80,158,41,37,197,28, -248,80,158,41,34,193,28,248,80,158,41,38,248,80,158,42,36,194,27,248,80, -158,42,37,194,28,248,80,158,42,34,193,249,80,158,43,35,248,80,158,44,36, -195,27,248,80,158,45,37,196,28,248,80,158,45,39,193,248,80,158,45,40,193, -11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86, -196,249,80,158,42,41,201,27,249,22,67,197,198,251,80,158,47,42,20,15,159, -47,35,50,21,94,3,1,4,103,56,49,48,252,70,1,3,1,4,103,56,48, -57,252,71,1,248,22,59,197,248,22,58,197,27,28,248,80,158,39,34,195,249, -80,158,40,35,248,80,158,41,36,197,27,248,80,158,42,37,198,28,248,80,158, -42,34,193,249,80,158,43,43,27,248,80,158,45,36,196,28,248,80,158,45,39, -193,248,22,8,89,162,34,35,41,9,224,11,1,27,249,22,2,89,162,34,35, -46,9,224,4,5,249,80,158,37,44,28,248,80,158,38,34,197,249,80,158,39, +27,249,22,67,195,196,251,80,158,44,41,20,15,159,44,35,49,21,94,2,144, +2,2,145,2,248,22,59,197,248,22,58,197,27,28,248,80,158,38,34,195,249, +80,158,39,35,248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158, +41,34,193,249,80,158,42,42,27,248,80,158,44,36,196,28,248,80,158,44,39, +193,248,22,8,89,162,34,35,41,9,224,10,1,27,249,22,2,89,162,34,35, +46,9,224,4,5,249,80,158,37,43,28,248,80,158,38,34,197,249,80,158,39, 35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193, 249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37, 196,11,11,194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80, -158,37,45,193,11,27,248,80,158,45,37,196,28,248,80,158,45,34,193,249,80, -158,46,35,248,80,158,47,36,195,27,248,80,158,48,37,196,28,248,80,158,48, -39,193,248,80,158,48,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248, +158,37,44,193,11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80, +158,45,35,248,80,158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47, +39,193,248,80,158,47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248, 22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22, -216,20,15,159,46,36,50,248,80,158,47,46,249,22,2,32,252,72,1,89,162, -8,44,35,35,9,222,1,23,119,105,116,104,45,104,97,110,100,108,101,114,115, -45,112,114,101,100,105,99,97,116,101,252,73,1,248,22,223,249,80,158,52,47, -20,15,159,52,37,50,204,27,249,22,216,20,15,159,47,38,50,248,80,158,48, -46,249,22,2,32,252,74,1,89,162,8,44,35,35,9,222,1,21,119,105,116, -104,45,104,97,110,100,108,101,114,115,45,104,97,110,100,108,101,114,252,75,1, -248,22,223,249,80,158,53,47,20,15,159,53,39,50,204,27,28,248,80,158,47, -39,195,248,80,158,47,40,195,11,28,192,27,28,248,80,158,48,39,195,248,80, -158,48,40,195,11,28,192,27,249,22,216,20,15,159,50,40,50,28,23,15,20, -15,159,50,41,50,20,15,159,50,42,50,249,80,158,50,41,23,17,27,254,22, -67,23,16,203,23,15,23,17,23,18,202,204,250,80,158,54,48,89,162,34,34, -50,9,224,20,3,254,80,158,42,42,20,15,159,42,43,50,21,97,3,1,4, -103,56,51,48,252,76,1,3,1,4,103,56,50,55,252,77,1,3,1,4,103, -56,50,54,252,78,1,3,1,4,103,56,50,57,252,79,1,3,1,4,103,56, -50,56,252,80,1,249,22,71,250,22,2,80,159,47,8,33,35,249,22,75,206, -40,249,22,76,206,38,250,22,2,80,159,47,8,34,35,248,22,84,205,248,22, -96,205,249,22,76,201,39,250,22,2,80,159,45,8,35,35,249,22,75,204,40, -248,22,84,203,248,22,58,200,248,22,93,200,21,95,2,150,96,94,69,112,114, -101,100,45,110,97,109,101,252,81,1,64,112,114,101,100,252,82,1,2,141,94, -72,104,97,110,100,108,101,114,45,110,97,109,101,252,83,1,67,104,97,110,100, -108,101,114,252,84,1,2,141,95,2,150,93,94,63,98,112,122,252,85,1,95, -2,252,21,1,11,2,47,96,2,252,20,1,2,47,2,57,96,1,29,99,97, -108,108,45,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45, -112,114,111,109,112,116,252,86,1,95,2,252,14,1,9,96,2,252,20,1,2, -47,2,252,85,1,96,2,252,20,1,2,65,95,2,252,14,1,93,61,101,252, -87,1,95,1,26,97,98,111,114,116,45,99,117,114,114,101,110,116,45,99,111, -110,116,105,110,117,97,116,105,111,110,252,88,1,2,61,95,2,252,14,1,9, -96,63,117,113,49,252,89,1,2,252,87,1,2,252,85,1,95,64,108,105,115, -116,252,90,1,95,64,99,111,110,115,252,91,1,2,252,81,1,2,252,83,1, -2,141,97,2,150,9,2,252,23,1,2,252,24,1,2,141,2,61,95,2,252, -14,1,93,65,116,104,117,110,107,252,92,1,93,2,252,92,1,20,15,159,54, -47,50,248,80,158,48,49,20,15,159,48,48,50,248,80,158,47,49,20,15,159, -47,49,50,250,22,252,47,2,11,2,85,197,249,22,7,248,195,10,248,195,11, -38,20,99,159,37,16,16,2,86,2,89,2,91,2,93,2,97,2,102,2,104, -2,158,2,99,2,95,2,217,2,219,30,252,93,1,2,224,1,20,103,101,110, -101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115,252,94,1,0, -2,221,2,161,2,223,16,16,18,99,2,106,8,104,38,37,36,16,4,8,103, -11,74,100,105,115,97,98,108,101,45,98,114,101,97,107,63,252,95,1,3,1, -7,101,110,118,52,49,56,49,252,96,1,16,4,8,102,11,2,252,25,1,3, -1,7,101,110,118,52,49,56,50,252,97,1,18,158,162,37,101,2,150,8,107, -38,37,36,8,103,8,102,16,8,8,106,11,3,1,4,103,56,48,54,252,98, -1,3,1,4,103,56,48,55,252,99,1,3,1,4,103,56,48,56,252,100,1, -3,1,7,101,110,118,52,49,56,57,252,101,1,2,252,101,1,2,252,101,1, -16,8,8,105,11,2,120,2,252,23,1,2,252,24,1,3,1,7,101,110,118, -52,49,57,48,252,102,1,2,252,102,1,2,252,102,1,158,9,8,107,158,2, -252,70,1,8,107,2,252,71,1,8,107,8,107,18,101,2,106,8,110,38,37, -36,8,103,8,102,16,12,8,109,11,3,1,4,103,56,48,49,252,103,1,3, -1,4,103,56,48,50,252,104,1,3,1,4,103,56,48,51,252,105,1,3,1, -4,103,56,48,52,252,106,1,3,1,4,103,56,48,53,252,107,1,3,1,7, -101,110,118,52,50,48,57,252,108,1,2,252,108,1,2,252,108,1,2,252,108, -1,2,252,108,1,16,12,8,108,11,2,120,2,252,82,1,2,252,84,1,2, -252,23,1,2,252,24,1,3,1,7,101,110,118,52,50,49,48,252,109,1,2, -252,109,1,2,252,109,1,2,252,109,1,2,252,109,1,18,16,2,158,2,239, -8,110,8,111,18,16,2,158,2,106,8,110,8,112,18,8,111,18,105,2,106, -8,117,38,37,36,8,103,8,102,8,109,8,108,16,4,8,116,11,3,1,4, -103,56,49,52,252,110,1,3,1,7,101,110,118,52,50,51,48,252,111,1,16, -4,8,115,11,2,252,81,1,3,1,7,101,110,118,52,50,51,49,252,112,1, -16,4,8,114,11,3,1,4,103,56,49,54,252,113,1,3,1,7,101,110,118, -52,50,51,56,252,114,1,16,4,8,113,11,2,252,83,1,3,1,7,101,110, -118,52,50,51,57,252,115,1,18,16,2,158,2,53,8,117,8,118,18,16,2, -158,2,55,8,117,8,119,18,158,96,10,2,150,2,252,76,1,95,2,150,93, -94,2,252,85,1,95,2,252,21,1,11,2,47,96,2,252,20,1,2,47,2, -57,96,2,252,86,1,95,2,252,14,1,9,96,2,252,20,1,2,47,2,252, -85,1,96,2,252,20,1,2,65,95,2,252,14,1,93,2,252,87,1,95,2, -252,88,1,2,61,95,2,252,14,1,9,96,2,252,77,1,2,252,87,1,2, -252,85,1,158,2,252,90,1,2,252,78,1,160,2,150,9,2,252,79,1,2, -252,80,1,2,61,95,2,252,14,1,93,2,252,92,1,93,2,252,92,1,8, -117,18,158,95,10,2,252,67,1,2,252,68,1,8,117,18,158,95,10,2,252, -65,1,2,252,66,1,8,117,18,158,96,10,2,252,91,1,2,252,63,1,2, -252,64,1,8,117,18,16,2,96,2,141,8,121,93,8,252,195,13,16,4,8, -120,11,2,183,3,1,7,101,110,118,52,50,53,54,252,116,1,95,9,8,252, -195,13,2,100,18,16,2,158,94,98,2,252,83,1,8,125,93,8,252,170,13, -16,6,8,124,11,3,1,8,119,115,116,109,112,56,49,49,252,117,1,3,1, -8,119,115,116,109,112,56,49,50,252,118,1,3,1,7,101,110,118,52,50,50, -50,252,119,1,2,252,119,1,16,4,8,123,11,3,1,4,103,56,49,53,252, -120,1,3,1,7,101,110,118,52,50,54,53,252,121,1,16,4,8,122,11,2, -252,5,1,3,1,7,101,110,118,52,50,54,54,252,122,1,158,2,141,8,125, -8,125,95,9,8,252,170,13,2,224,18,16,2,158,94,98,2,252,81,1,8, -129,93,8,252,170,13,16,6,8,128,11,2,252,117,1,2,252,118,1,2,252, -119,1,2,252,119,1,16,4,8,127,11,3,1,4,103,56,49,51,252,123,1, -3,1,7,101,110,118,52,50,55,48,252,124,1,16,4,8,126,11,2,252,5, -1,3,1,7,101,110,118,52,50,55,49,252,125,1,158,2,141,8,129,8,129, -95,9,8,252,170,13,2,224,11,16,5,93,2,69,87,95,83,159,34,93,80, -159,34,8,28,35,89,162,34,36,49,68,116,114,121,45,110,101,120,116,252,126, -1,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36, -197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,39,27, -248,80,158,42,36,196,28,248,80,158,42,41,193,248,22,65,248,80,158,43,42, -194,11,27,248,80,158,42,37,196,28,248,80,158,42,34,193,249,80,158,43,39, -248,80,158,44,36,195,248,80,158,44,38,248,80,158,45,37,196,11,11,11,28, -192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,27,248,80,158, -40,42,249,80,158,42,43,20,15,159,42,36,50,197,87,94,249,22,3,89,162, -34,35,41,9,224,7,9,28,248,80,158,36,44,195,12,251,22,252,47,2,11, -6,17,17,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,252, -127,1,196,198,194,27,248,80,158,41,45,194,28,192,251,22,252,47,2,11,6, -20,20,100,117,112,108,105,99,97,116,101,32,105,100,101,110,116,105,102,105,101, -114,252,128,1,204,196,12,27,249,22,216,20,15,159,41,37,50,248,80,158,42, -46,249,80,158,44,43,20,15,159,44,38,50,199,27,28,248,80,158,41,41,194, -248,80,158,41,42,194,11,28,192,249,80,158,42,47,202,27,250,22,67,201,200, -198,250,80,158,46,48,89,162,34,34,45,9,224,12,3,252,80,158,40,40,20, -15,159,40,39,50,21,95,3,1,4,103,56,52,52,252,129,1,3,1,4,103, -56,52,51,252,130,1,3,1,4,103,56,52,55,252,131,1,248,22,86,198,248, -22,84,198,250,22,2,80,159,43,8,27,35,248,22,58,201,248,22,86,201,21, -96,70,108,101,116,45,118,97,108,117,101,115,252,132,1,93,94,94,64,116,101, -109,112,252,133,1,2,141,2,252,24,1,95,64,115,101,116,33,252,134,1,62, -105,100,252,135,1,2,252,133,1,2,141,20,15,159,46,41,50,248,80,158,41, -49,20,15,159,41,42,50,250,22,252,47,2,11,2,85,200,250,22,252,47,2, -11,2,85,197,83,159,34,93,80,159,34,8,27,35,89,162,35,35,41,9,223, -0,251,80,158,38,40,20,15,159,38,40,50,21,94,3,1,4,103,56,52,54, -252,136,1,3,1,4,103,56,52,53,252,137,1,248,22,58,198,248,22,84,198, -89,162,34,35,49,9,223,0,27,249,22,216,20,15,159,37,34,50,196,27,28, -248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158, -40,37,197,28,248,80,158,40,34,193,28,248,80,158,40,38,248,80,158,41,36, -194,27,248,80,158,41,37,194,28,248,80,158,41,34,193,249,80,158,42,39,248, -80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,11,11,28, -192,27,248,22,58,194,27,248,22,59,195,250,80,158,41,40,20,15,159,41,35, -50,21,93,3,1,4,103,56,51,57,252,138,1,195,27,28,248,80,158,38,34, -195,249,80,158,39,35,248,80,158,40,36,197,27,248,80,158,41,37,198,28,248, -80,158,41,34,193,249,80,158,42,39,27,248,80,158,44,36,196,28,248,80,158, -44,34,193,249,80,158,45,35,248,80,158,46,36,195,248,80,158,46,38,248,80, -158,47,37,196,11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80, -158,45,39,248,80,158,46,36,195,248,80,158,46,38,248,80,158,47,37,196,11, -11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248, -80,158,41,44,194,27,249,22,67,196,195,251,80,158,45,40,20,15,159,45,43, -50,21,94,3,1,4,103,56,52,57,252,139,1,3,1,4,103,56,52,56,252, -140,1,248,22,58,197,248,22,59,197,249,80,159,42,8,28,35,199,201,249,80, -159,39,8,28,35,196,198,34,20,99,159,36,16,16,2,86,2,89,2,91,2, -93,2,97,2,95,2,99,2,102,2,104,2,221,2,156,30,252,141,1,2,112, -1,26,99,104,101,99,107,45,100,117,112,108,105,99,97,116,101,45,105,100,101, -110,116,105,102,105,101,114,252,142,1,0,2,252,93,1,2,158,2,161,2,223, -16,10,18,98,2,106,8,131,38,37,36,16,4,8,130,11,2,252,25,1,3, -1,7,101,110,118,52,50,55,53,252,143,1,18,158,95,100,2,252,132,1,8, -134,38,37,36,8,130,16,6,8,133,11,3,1,4,103,56,51,55,252,144,1, -3,1,4,103,56,51,56,252,145,1,3,1,7,101,110,118,52,50,56,49,252, -146,1,2,252,146,1,16,6,8,132,11,2,120,2,252,24,1,3,1,7,101, -110,118,52,50,56,50,252,147,1,2,252,147,1,158,94,10,94,9,2,252,138, -1,8,134,158,94,10,64,118,111,105,100,252,148,1,8,134,8,134,18,100,2, -239,8,137,38,37,36,8,130,16,8,8,136,11,3,1,4,103,56,51,49,252, -149,1,3,1,4,103,56,51,50,252,150,1,3,1,4,103,56,51,51,252,151, -1,3,1,7,101,110,118,52,50,57,56,252,152,1,2,252,152,1,2,252,152, -1,16,8,8,135,11,2,120,2,252,135,1,2,252,24,1,3,1,7,101,110, -118,52,50,57,57,252,153,1,2,252,153,1,2,252,153,1,18,16,2,158,2, -106,8,137,8,138,18,16,2,158,2,239,8,137,8,139,18,158,161,36,102,2, -252,132,1,8,144,38,37,36,8,130,16,8,8,143,11,2,252,149,1,2,252, -150,1,2,252,151,1,2,252,152,1,2,252,152,1,2,252,152,1,16,8,8, -142,11,2,120,2,252,135,1,2,252,24,1,2,252,153,1,2,252,153,1,2, -252,153,1,16,4,8,141,11,3,1,4,103,56,52,50,252,154,1,3,1,7, -101,110,118,52,51,49,53,252,155,1,16,4,8,140,11,2,252,133,1,3,1, -7,101,110,118,52,51,49,54,252,156,1,158,94,10,94,2,252,129,1,2,252, -130,1,8,144,2,252,131,1,8,144,8,144,18,158,96,10,2,252,134,1,2, -252,136,1,2,252,137,1,8,144,18,16,2,96,2,141,8,146,93,8,252,248, -13,16,4,8,145,11,2,183,3,1,7,101,110,118,52,51,50,48,252,157,1, -95,9,8,252,248,13,2,100,18,16,2,158,94,98,2,252,133,1,8,150,93, -8,252,240,13,16,4,8,149,11,3,1,8,119,115,116,109,112,56,52,48,252, -158,1,3,1,7,101,110,118,52,51,49,48,252,159,1,16,4,8,148,11,3, -1,4,103,56,52,49,252,160,1,3,1,7,101,110,118,52,51,50,53,252,161, -1,16,4,8,147,11,2,252,5,1,3,1,7,101,110,118,52,51,50,54,252, -162,1,158,2,141,8,150,8,150,95,9,8,252,240,13,2,224,18,158,95,100, -2,252,134,1,8,153,38,37,36,8,130,16,8,8,152,11,3,1,4,103,56, -51,52,252,163,1,3,1,4,103,56,51,53,252,164,1,3,1,4,103,56,51, -54,252,165,1,3,1,7,101,110,118,52,51,51,52,252,166,1,2,252,166,1, -2,252,166,1,16,8,8,151,11,2,120,2,252,135,1,2,252,24,1,3,1, -7,101,110,118,52,51,51,53,252,167,1,2,252,167,1,2,252,167,1,158,2, -252,139,1,8,153,158,2,252,140,1,8,153,8,153,11,16,5,93,2,72,89, -162,34,35,51,9,223,0,27,249,22,216,20,15,159,37,34,42,196,27,28,248, +152,3,20,15,159,45,36,49,249,22,1,22,71,250,22,2,22,65,248,22,159, +3,249,80,158,53,45,20,15,159,53,37,49,206,248,22,159,3,249,80,158,53, +45,20,15,159,53,38,49,205,27,28,248,80,158,45,39,194,248,80,158,45,40, +194,11,28,192,249,80,158,46,46,205,27,250,22,67,200,201,198,250,80,158,50, +47,89,162,34,34,42,9,224,16,3,252,80,158,40,41,20,15,159,40,39,49, +21,95,2,146,2,2,147,2,2,148,2,248,22,86,198,248,22,84,198,248,22, +58,198,21,96,2,149,2,2,12,96,2,11,95,2,150,2,11,2,12,2,151, +2,2,83,97,2,92,9,2,152,2,2,153,2,2,83,20,15,159,50,40,49, +248,80,158,45,48,20,15,159,45,41,49,250,22,175,8,11,2,54,197,34,20, +99,159,34,16,15,2,134,4,2,135,4,2,136,4,2,137,4,2,139,4,2, +141,4,2,142,4,2,140,4,2,138,4,2,170,4,2,171,4,2,172,4,2, +154,4,2,155,4,2,173,4,16,8,33,152,5,33,154,5,33,158,5,33,159, +5,33,160,5,33,162,5,33,163,5,33,165,5,11,16,5,93,2,38,89,162, +34,35,51,9,223,0,27,249,22,152,3,20,15,159,37,34,42,196,27,28,248, 80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40, 37,197,28,248,80,158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27, 248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,35,248,80,158, 45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,38,193,248,80,158,46, 39,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22, -93,196,27,248,22,94,197,249,80,158,42,40,201,27,250,22,67,199,200,198,252, -80,158,48,41,20,15,159,48,35,42,21,95,3,1,4,103,56,53,52,252,168, -1,3,1,4,103,56,53,54,252,169,1,3,1,4,103,56,53,53,252,170,1, -248,22,84,198,248,22,58,198,248,22,86,198,250,22,252,47,2,11,2,85,196, -34,20,99,159,34,16,8,2,86,2,89,2,91,2,93,2,102,2,104,2,158, -2,99,16,2,18,98,2,106,8,155,38,37,36,16,4,8,154,11,2,252,25, -1,3,1,7,101,110,118,52,51,52,52,252,171,1,18,158,94,100,67,99,97, -108,108,47,99,99,252,172,1,8,158,38,37,36,8,154,16,10,8,157,11,3, -1,4,103,56,53,48,252,173,1,3,1,4,103,56,53,49,252,174,1,3,1, -4,103,56,53,50,252,175,1,3,1,4,103,56,53,51,252,176,1,3,1,7, -101,110,118,52,51,53,49,252,177,1,2,252,177,1,2,252,177,1,2,252,177, -1,16,10,8,156,11,2,120,2,205,65,98,111,100,121,49,252,178,1,64,98, -111,100,121,252,179,1,3,1,7,101,110,118,52,51,53,50,252,180,1,2,252, -180,1,2,252,180,1,2,252,180,1,158,161,10,2,252,14,1,93,2,252,168, -1,2,252,169,1,2,252,170,1,8,158,8,158,11,16,5,93,2,67,89,162, -34,35,51,9,223,0,27,249,22,216,20,15,159,37,34,44,196,27,28,248,80, -158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37, -197,28,248,80,158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248, -80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,38,27,248,80,158, -46,36,196,28,248,80,158,46,39,193,248,22,65,248,80,158,47,40,194,11,27, -248,80,158,46,37,196,28,248,80,158,46,34,193,249,80,158,47,35,248,80,158, -48,36,195,27,248,80,158,49,37,196,28,248,80,158,49,39,193,248,80,158,49, -40,193,11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248, -22,93,196,27,248,22,96,197,27,248,22,95,198,249,80,158,43,41,202,27,251, -22,67,200,202,201,199,250,80,158,47,42,89,162,34,34,43,9,224,13,3,253, -80,158,41,43,20,15,159,41,35,44,21,96,3,1,4,103,56,54,51,252,181, -1,3,1,4,103,56,54,50,252,182,1,3,1,4,103,56,54,53,252,183,1, -3,1,4,103,56,54,52,252,184,1,248,22,84,199,248,22,93,199,248,22,58, -199,248,22,94,199,21,98,2,150,9,95,73,100,101,102,105,110,101,45,115,116, -114,117,99,116,252,185,1,64,98,97,115,101,252,186,1,94,65,102,105,101,108, -100,252,187,1,2,141,2,252,178,1,2,252,179,1,2,141,20,15,159,47,36, -44,250,22,252,47,2,11,2,85,196,34,20,99,159,34,16,10,2,86,2,89, -2,91,2,93,2,95,2,102,2,104,2,158,2,161,2,99,16,3,18,98,2, -106,8,160,38,37,36,16,4,8,159,11,2,252,25,1,3,1,7,101,110,118, -52,51,54,52,252,188,1,18,158,163,38,100,2,150,8,163,38,37,36,8,159, -16,12,8,162,11,3,1,4,103,56,53,55,252,189,1,3,1,4,103,56,53, -56,252,190,1,3,1,4,103,56,53,57,252,191,1,3,1,4,103,56,54,48, -252,192,1,3,1,4,103,56,54,49,252,193,1,3,1,7,101,110,118,52,51, -55,51,252,194,1,2,252,194,1,2,252,194,1,2,252,194,1,2,252,194,1, -16,12,8,161,11,2,120,2,252,186,1,2,252,187,1,2,252,178,1,2,252, -179,1,3,1,7,101,110,118,52,51,55,52,252,195,1,2,252,195,1,2,252, -195,1,2,252,195,1,2,252,195,1,158,9,8,163,158,96,10,2,252,185,1, -2,252,181,1,2,252,182,1,8,163,158,2,252,183,1,8,163,2,252,184,1, -8,163,8,163,18,16,2,96,2,141,8,165,93,8,252,31,14,16,4,8,164, -11,2,183,3,1,7,101,110,118,52,51,56,54,252,196,1,95,9,8,252,31, -14,2,100,11,16,5,93,2,73,87,95,83,159,34,93,80,159,34,8,27,35, -89,162,35,35,41,9,223,0,251,80,158,38,42,20,15,159,38,40,50,21,94, -3,1,4,103,56,56,49,252,197,1,3,1,4,103,56,56,50,252,198,1,248, -22,58,198,248,22,93,198,83,159,34,93,80,159,34,8,26,35,89,162,35,35, -41,9,223,0,251,80,158,38,42,20,15,159,38,39,50,21,94,3,1,4,103, -56,56,48,252,199,1,3,1,4,103,56,55,57,252,200,1,248,22,58,198,248, -22,84,198,89,162,34,35,54,9,223,0,27,249,22,216,20,15,159,37,34,50, -196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27, -248,80,158,40,37,197,28,248,80,158,40,34,193,28,248,80,158,40,38,248,80, -158,41,36,194,27,248,80,158,41,37,194,28,248,80,158,41,34,193,249,80,158, -42,35,248,80,158,43,36,195,27,248,80,158,44,37,196,28,248,80,158,44,39, -193,248,80,158,44,40,193,11,11,11,11,11,28,192,27,248,22,58,194,27,248, -22,84,195,27,248,22,86,196,249,80,158,41,41,200,27,249,22,67,198,197,251, -80,158,46,42,20,15,159,46,35,50,21,94,3,1,4,103,56,55,53,252,201, -1,3,1,4,103,56,55,52,252,202,1,248,22,58,197,248,22,59,197,27,28, -248,80,158,38,34,195,249,80,158,39,35,248,80,158,40,36,197,27,248,80,158, -41,37,198,28,248,80,158,41,34,193,249,80,158,42,43,27,248,80,158,44,36, -196,28,248,80,158,44,39,193,248,22,8,89,162,34,35,41,9,224,10,1,27, -249,22,2,89,162,34,35,46,9,224,4,5,249,80,158,37,44,28,248,80,158, -38,34,197,249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200, -28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158, -43,38,248,80,158,44,37,196,11,11,194,248,80,158,39,40,196,28,248,22,63, -193,21,94,9,9,248,80,158,37,45,193,11,27,248,80,158,44,37,196,28,248, -80,158,44,34,193,249,80,158,45,35,248,80,158,46,36,195,27,248,80,158,47, -37,196,28,248,80,158,47,39,193,248,80,158,47,40,193,11,11,11,11,28,192, -27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27, -248,22,95,198,27,249,22,216,20,15,159,45,36,50,248,80,158,46,46,249,80, -158,48,47,20,15,159,48,37,50,201,27,28,248,80,158,45,39,194,248,80,158, -45,40,194,11,28,192,249,80,158,46,41,205,27,252,22,67,202,205,204,203,200, -250,80,158,50,48,89,162,34,34,48,9,224,16,3,253,80,158,41,42,20,15, -159,41,38,50,21,96,3,1,4,103,56,56,56,252,203,1,3,1,4,103,56, -56,53,252,204,1,3,1,4,103,56,56,55,252,205,1,3,1,4,103,56,56, -54,252,206,1,250,22,2,80,159,44,8,26,35,248,22,95,202,248,22,93,202, -252,22,2,80,159,46,8,27,35,248,22,95,204,248,22,95,204,248,22,84,204, -248,22,84,204,248,22,96,199,248,22,58,199,21,95,2,150,94,94,63,116,109, -112,252,207,1,2,252,39,1,2,141,95,2,150,93,94,64,115,119,97,112,252, -208,1,96,2,252,14,1,9,96,2,150,93,94,2,237,2,252,207,1,95,2, -252,134,1,2,252,207,1,64,110,97,109,101,252,209,1,95,2,252,134,1,2, -252,209,1,2,237,2,141,96,72,100,121,110,97,109,105,99,45,119,105,110,100, -252,210,1,2,252,208,1,97,2,252,14,1,9,2,252,178,1,2,252,179,1, -2,141,2,252,208,1,20,15,159,50,41,50,248,80,158,45,49,20,15,159,45, -42,50,250,22,252,47,2,11,2,85,197,34,20,99,159,36,16,16,2,86,2, -89,2,91,2,93,2,97,2,102,2,104,2,158,2,99,2,95,2,217,2,219, -2,252,93,1,2,221,2,161,2,223,16,9,18,98,2,106,8,167,38,37,36, -16,4,8,166,11,2,252,25,1,3,1,7,101,110,118,52,51,56,57,252,211, -1,18,158,162,37,100,2,150,8,170,38,37,36,8,166,16,8,8,169,11,3, -1,4,103,56,55,49,252,212,1,3,1,4,103,56,55,50,252,213,1,3,1, -4,103,56,55,51,252,214,1,3,1,7,101,110,118,52,51,57,54,252,215,1, -2,252,215,1,2,252,215,1,16,8,8,168,11,2,120,2,252,178,1,2,252, -179,1,3,1,7,101,110,118,52,51,57,55,252,216,1,2,252,216,1,2,252, -216,1,158,9,8,170,158,2,252,201,1,8,170,2,252,202,1,8,170,8,170, -18,100,2,106,8,173,38,37,36,8,166,16,12,8,172,11,3,1,4,103,56, -54,54,252,217,1,3,1,4,103,56,54,55,252,218,1,3,1,4,103,56,54, -56,252,219,1,3,1,4,103,56,54,57,252,220,1,3,1,4,103,56,55,48, -252,221,1,3,1,7,101,110,118,52,52,49,54,252,222,1,2,252,222,1,2, -252,222,1,2,252,222,1,2,252,222,1,16,12,8,171,11,2,120,2,252,209, -1,2,252,39,1,2,252,178,1,2,252,179,1,3,1,7,101,110,118,52,52, -49,55,252,223,1,2,252,223,1,2,252,223,1,2,252,223,1,2,252,223,1, -18,16,2,158,2,239,8,173,8,174,18,158,95,102,2,150,8,177,38,37,36, -8,166,8,172,8,171,16,4,8,176,11,3,1,4,103,56,55,56,252,224,1, -3,1,7,101,110,118,52,52,51,52,252,225,1,16,4,8,175,11,2,252,207, -1,3,1,7,101,110,118,52,52,51,53,252,226,1,158,2,252,203,1,8,177, -158,96,10,2,150,93,94,2,252,208,1,159,2,252,14,1,9,2,252,204,1, -96,2,252,210,1,2,252,208,1,160,2,252,14,1,9,2,252,205,1,2,252, -206,1,2,252,208,1,8,177,8,177,18,158,95,10,2,252,199,1,2,252,200, -1,8,177,18,158,97,10,2,150,93,94,2,237,2,252,197,1,95,2,252,134, -1,2,252,197,1,2,252,198,1,95,2,252,134,1,2,252,198,1,2,237,8, -177,18,16,2,96,2,141,8,179,93,8,252,67,14,16,4,8,178,11,2,183, -3,1,7,101,110,118,52,52,51,57,252,227,1,95,9,8,252,67,14,2,100, -18,16,2,158,94,98,2,252,207,1,8,183,93,8,252,59,14,16,4,8,182, -11,3,1,8,119,115,116,109,112,56,55,54,252,228,1,3,1,7,101,110,118, -52,52,50,57,252,229,1,16,4,8,181,11,3,1,4,103,56,55,55,252,230, -1,3,1,7,101,110,118,52,52,52,54,252,231,1,16,4,8,180,11,2,252, -5,1,3,1,7,101,110,118,52,52,52,55,252,232,1,158,2,141,8,183,8, -183,95,9,8,252,59,14,2,224,11,16,5,93,2,66,89,162,34,35,49,9, -223,0,27,249,22,216,20,15,159,37,34,42,196,27,28,248,80,158,37,34,194, -249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80, -158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248,80,158,43,37, -196,28,248,80,158,43,38,193,248,80,158,43,39,193,11,11,11,28,192,27,248, -22,58,194,27,248,22,84,195,27,248,22,86,196,249,80,158,41,40,200,27,249, -22,67,197,198,251,80,158,46,41,20,15,159,46,35,42,21,94,3,1,4,103, -56,57,51,252,233,1,3,1,4,103,56,57,50,252,234,1,248,22,59,197,248, -22,58,197,250,22,252,47,2,11,2,85,196,34,20,99,159,34,16,8,2,86, -2,89,2,91,2,93,2,102,2,104,2,158,2,99,16,2,18,98,2,106,8, -185,38,37,36,16,4,8,184,11,2,252,25,1,3,1,7,101,110,118,52,52, -53,49,252,235,1,18,158,96,100,2,252,132,1,8,188,38,37,36,8,184,16, -8,8,187,11,3,1,4,103,56,56,57,252,236,1,3,1,4,103,56,57,48, -252,237,1,3,1,4,103,56,57,49,252,238,1,3,1,7,101,110,118,52,52, -53,55,252,239,1,2,252,239,1,2,252,239,1,16,8,8,186,11,2,120,2, -252,23,1,2,252,24,1,3,1,7,101,110,118,52,52,53,56,252,240,1,2, -252,240,1,2,252,240,1,158,94,10,94,96,2,140,63,99,112,117,252,241,1, -64,117,115,101,114,252,242,1,62,103,99,252,243,1,95,70,116,105,109,101,45, -97,112,112,108,121,252,244,1,160,2,252,14,1,9,2,252,233,1,2,252,234, -1,64,110,117,108,108,252,245,1,8,188,158,98,10,66,112,114,105,110,116,102, -252,246,1,6,40,40,99,112,117,32,116,105,109,101,58,32,126,115,32,114,101, -97,108,32,116,105,109,101,58,32,126,115,32,103,99,32,116,105,109,101,58,32, -126,115,126,110,252,247,1,2,252,241,1,2,252,242,1,2,252,243,1,8,188, -158,96,10,65,97,112,112,108,121,252,248,1,66,118,97,108,117,101,115,252,249, -1,2,140,8,188,8,188,11,106,83,159,34,97,80,159,34,34,35,80,159,34, -35,35,80,159,34,36,35,80,159,34,37,35,80,159,34,38,35,27,247,22,252, -125,2,87,94,28,192,28,248,22,252,124,2,193,12,250,22,252,48,2,2,252, -185,1,6,15,15,105,110,115,112,101,99,116,111,114,32,111,114,32,35,102,252, -250,1,195,12,91,159,39,11,90,161,39,34,11,254,22,252,102,2,2,109,11, -35,34,11,9,204,252,22,7,197,198,199,250,22,252,104,2,203,34,61,112,252, -251,1,250,22,252,105,2,204,34,2,252,251,1,83,159,34,93,80,159,34,39, -35,89,162,34,35,41,2,14,223,0,87,94,28,248,80,158,35,36,194,12,250, -22,252,48,2,2,14,6,7,7,112,114,111,109,105,115,101,252,252,1,196,27, -248,80,158,36,37,195,28,248,22,0,193,27,249,22,6,195,22,65,87,94,28, -248,22,0,248,80,158,38,37,197,249,80,158,38,38,197,194,12,249,22,1,22, -7,248,80,158,39,37,198,249,22,1,22,7,194,83,159,34,93,80,159,34,40, -35,89,162,34,34,38,2,16,223,0,248,80,158,35,41,249,22,25,11,80,158, -37,42,83,159,34,93,80,159,34,43,35,89,162,34,36,42,2,23,223,0,87, -95,28,248,22,252,233,2,194,12,252,22,252,48,2,2,23,6,16,16,112,97, -114,97,109,101,116,101,114,105,122,97,116,105,111,110,252,253,1,34,198,199,28, -28,248,22,0,195,249,22,40,196,34,11,12,252,22,252,48,2,2,23,6,19, -19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32,48,41,252, -254,1,35,198,199,20,14,159,80,158,34,42,193,247,194,83,159,34,97,80,159, -34,44,35,80,159,34,45,35,80,159,34,46,35,80,159,34,47,35,80,159,34, -48,35,252,22,252,102,2,2,110,11,35,34,11,83,159,34,97,80,159,34,49, -35,80,159,34,50,35,80,159,34,51,35,80,159,34,52,35,80,159,34,53,35, -27,247,22,252,125,2,87,94,28,192,28,248,22,252,17,2,248,22,252,124,2, -194,250,22,252,48,2,2,252,185,1,2,252,250,1,195,12,12,91,159,39,11, -90,161,39,34,11,254,22,252,102,2,2,110,11,35,34,11,9,204,252,22,7, -197,198,199,250,22,252,104,2,203,34,64,99,101,108,108,252,255,1,250,22,252, -105,2,204,34,2,252,255,1,83,159,34,93,80,159,34,54,35,89,162,34,34, -38,2,45,223,0,248,80,158,35,45,249,22,25,11,80,158,37,55,83,159,34, -93,80,159,34,56,35,89,162,38,36,42,2,49,223,0,87,95,28,248,80,158, -35,46,194,12,252,22,252,48,2,2,49,6,22,22,98,114,101,97,107,32,112, -97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,252,0,2,34,198,199, -28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,252,48,2,2,23,6, -19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32,48,41, -252,1,2,35,198,199,83,158,38,20,94,94,20,14,159,80,158,34,55,249,80, -158,36,47,195,34,87,94,247,80,158,34,57,247,194,247,80,158,34,57,83,159, -34,93,80,159,34,58,35,89,162,34,37,42,2,53,223,0,28,248,22,63,196, -248,22,252,197,2,194,28,248,248,22,83,197,194,83,158,38,20,94,94,248,248, -22,85,197,194,20,14,159,80,158,34,55,194,247,80,158,34,57,250,80,158,37, -58,196,197,248,22,59,199,83,159,34,93,80,159,34,59,35,89,162,34,37,42, -2,55,223,0,28,248,22,63,196,248,22,252,197,2,194,28,248,248,22,83,197, -194,20,14,159,80,158,34,55,194,87,94,247,80,158,34,57,248,248,22,85,197, -194,250,80,158,37,59,196,197,248,22,59,199,83,159,34,93,80,159,34,8,26, -35,248,22,252,235,2,11,83,159,34,93,80,159,34,8,27,35,32,252,2,2, -89,162,34,35,37,2,59,222,28,248,22,16,193,12,249,22,252,45,2,2,75, -6,37,37,101,120,99,101,112,116,105,111,110,32,104,97,110,100,108,101,114,32, -117,115,101,100,32,111,117,116,32,111,102,32,99,111,110,116,101,120,116,252,3, -2,83,159,34,93,80,159,34,8,28,35,247,22,17,83,159,34,93,80,159,34, -8,29,35,89,162,34,36,37,2,63,223,0,20,14,159,80,158,34,8,30,193, -247,194,96,68,35,37,107,101,114,110,101,108,252,4,2,2,108,2,107,2,18, -96,2,252,4,2,2,87,2,112,2,111,0}; - EVAL_ONE_SIZED_STR((char *)expr, 17483); +93,196,27,248,22,94,197,249,80,158,42,40,201,27,250,22,67,198,199,200,252, +80,158,48,41,20,15,159,48,35,42,21,95,2,160,2,2,161,2,2,162,2, +248,22,86,198,248,22,84,198,248,22,58,198,250,22,175,8,11,2,54,196,34, +20,99,159,34,16,8,2,134,4,2,135,4,2,136,4,2,137,4,2,141,4, +2,142,4,2,154,4,2,140,4,16,2,33,167,5,33,169,5,11,16,5,93, +2,61,27,247,22,174,13,253,22,66,248,199,20,15,159,42,34,34,248,199,20, +15,159,42,35,34,248,199,20,15,159,42,36,34,248,22,66,248,200,20,15,159, +43,37,34,248,22,66,248,200,20,15,159,43,38,34,10,43,20,99,159,34,16, +0,16,5,33,170,5,33,171,5,33,172,5,33,173,5,33,174,5,11,16,5, +94,2,46,2,35,87,96,83,158,34,16,2,89,162,35,35,41,9,223,0,251, +80,158,38,42,20,15,159,38,46,50,21,94,2,165,2,2,166,2,248,22,58, +198,248,22,84,198,80,159,34,8,35,35,83,158,34,16,2,89,162,35,35,41, +9,223,0,251,80,158,38,42,20,15,159,38,45,50,21,94,2,167,2,2,168, +2,248,22,58,198,248,22,84,198,80,159,34,8,34,35,83,158,34,16,2,89, +162,35,35,41,9,223,0,251,80,158,38,42,20,15,159,38,44,50,21,94,2, +169,2,2,170,2,248,22,58,198,248,22,84,198,80,159,34,8,33,35,27,89, +162,8,36,35,36,62,119,104,223,1,89,162,34,35,8,26,9,224,0,1,27, +249,22,152,3,20,15,159,38,34,50,197,27,28,248,80,158,38,34,194,249,80, +158,39,35,248,80,158,40,36,196,27,248,80,158,41,37,197,28,248,80,158,41, +34,193,28,248,80,158,41,38,248,80,158,42,36,194,27,248,80,158,42,37,194, +28,248,80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27,248,80, +158,45,37,196,28,248,80,158,45,39,193,248,80,158,45,40,193,11,11,11,11, +11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,249,80,158, +42,41,201,27,249,22,67,197,198,251,80,158,47,42,20,15,159,47,35,50,21, +94,2,171,2,2,172,2,248,22,59,197,248,22,58,197,27,28,248,80,158,39, +34,195,249,80,158,40,35,248,80,158,41,36,197,27,248,80,158,42,37,198,28, +248,80,158,42,34,193,249,80,158,43,43,27,248,80,158,45,36,196,28,248,80, +158,45,39,193,248,22,8,89,162,34,35,41,9,224,11,1,27,249,22,2,89, +162,34,35,46,9,224,4,5,249,80,158,37,44,28,248,80,158,38,34,197,249, +80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158, +41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,38,248,80, +158,44,37,196,11,11,194,248,80,158,39,40,196,28,248,22,63,193,21,94,9, +9,248,80,158,37,45,193,11,27,248,80,158,45,37,196,28,248,80,158,45,34, +193,249,80,158,46,35,248,80,158,47,36,195,27,248,80,158,48,37,196,28,248, +80,158,48,39,193,248,80,158,48,40,193,11,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, +27,249,22,152,3,20,15,159,46,36,50,248,80,158,47,46,249,22,2,32,0, +89,162,8,44,35,35,9,222,1,23,119,105,116,104,45,104,97,110,100,108,101, +114,115,45,112,114,101,100,105,99,97,116,101,248,22,159,3,249,80,158,52,47, +20,15,159,52,37,50,204,27,249,22,152,3,20,15,159,47,38,50,248,80,158, +48,46,249,22,2,32,0,89,162,8,44,35,35,9,222,1,21,119,105,116,104, +45,104,97,110,100,108,101,114,115,45,104,97,110,100,108,101,114,248,22,159,3, +249,80,158,53,47,20,15,159,53,39,50,204,27,28,248,80,158,47,39,195,248, +80,158,47,40,195,11,28,192,27,28,248,80,158,48,39,195,248,80,158,48,40, +195,11,28,192,27,249,22,152,3,20,15,159,50,40,50,28,23,15,20,15,159, +50,41,50,20,15,159,50,42,50,249,80,158,50,41,23,17,27,254,22,67,202, +23,18,204,23,16,23,15,203,23,17,250,80,158,54,48,89,162,34,34,50,9, +224,20,3,254,80,158,42,42,20,15,159,42,43,50,21,97,2,173,2,2,174, +2,2,175,2,2,176,2,2,177,2,249,22,71,250,22,2,80,159,47,8,33, +35,248,22,93,205,248,22,84,205,250,22,2,80,159,47,8,34,35,249,22,76, +206,39,249,22,75,206,40,248,22,58,200,250,22,2,80,159,45,8,35,35,248, +22,93,203,249,22,76,204,39,248,22,96,200,249,22,76,201,38,21,95,2,92, +96,94,2,178,2,2,179,2,2,83,94,2,180,2,2,181,2,2,83,95,2, +92,93,94,2,182,2,95,2,150,2,11,2,25,96,2,149,2,2,25,2,30, +96,2,183,2,95,2,143,2,9,96,2,149,2,2,25,2,182,2,96,2,149, +2,2,34,95,2,143,2,93,2,184,2,95,2,185,2,2,32,95,2,143,2, +9,96,63,117,113,49,2,184,2,2,182,2,95,2,186,2,95,2,187,2,2, +178,2,2,180,2,2,83,97,2,92,9,2,152,2,2,153,2,2,83,2,32, +95,2,143,2,93,2,188,2,93,2,188,2,20,15,159,54,47,50,248,80,158, +48,49,20,15,159,48,48,50,248,80,158,47,49,20,15,159,47,49,50,250,22, +175,8,11,2,54,197,249,22,7,248,195,10,248,195,11,38,20,99,159,37,16, +16,2,134,4,2,135,4,2,136,4,2,137,4,2,139,4,2,141,4,2,142, +4,2,154,4,2,140,4,2,138,4,2,170,4,2,171,4,2,175,5,2,172, +4,2,155,4,2,173,4,16,16,33,178,5,33,180,5,33,184,5,33,185,5, +33,186,5,33,187,5,33,189,5,33,190,5,33,191,5,33,128,6,33,129,6, +33,130,6,33,131,6,33,132,6,33,134,6,33,136,6,11,16,5,93,2,42, +87,95,83,158,34,16,2,89,162,34,36,49,68,116,114,121,45,110,101,120,116, +223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197, +27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,39,27,248, +80,158,42,36,196,28,248,80,158,42,41,193,248,22,65,248,80,158,43,42,194, +11,27,248,80,158,42,37,196,28,248,80,158,42,34,193,249,80,158,43,39,248, +80,158,44,36,195,248,80,158,44,38,248,80,158,45,37,196,11,11,11,28,192, +27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,27,248,80,158,40, +42,249,80,158,42,43,20,15,159,42,36,50,197,87,94,249,22,3,89,162,34, +35,41,9,224,7,9,28,248,80,158,36,44,195,12,251,22,175,8,11,6,17, +17,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,196,198,194, +27,248,80,158,41,45,194,28,192,251,22,175,8,11,6,20,20,100,117,112,108, +105,99,97,116,101,32,105,100,101,110,116,105,102,105,101,114,204,196,12,27,249, +22,152,3,20,15,159,41,37,50,248,80,158,42,46,249,80,158,44,43,20,15, +159,44,38,50,199,27,28,248,80,158,41,41,194,248,80,158,41,42,194,11,28, +192,249,80,158,42,47,202,27,250,22,67,200,201,198,250,80,158,46,48,89,162, +34,34,45,9,224,12,3,252,80,158,40,40,20,15,159,40,39,50,21,95,2, +132,3,2,133,3,2,134,3,248,22,86,198,248,22,58,198,250,22,2,80,159, +43,8,27,35,248,22,84,201,248,22,86,201,21,96,2,135,3,93,94,94,2, +136,3,2,83,2,153,2,95,2,137,3,2,138,3,2,136,3,2,83,20,15, +159,46,41,50,248,80,158,41,49,20,15,159,41,42,50,250,22,175,8,11,2, +54,200,250,22,175,8,11,2,54,197,80,159,34,8,28,35,83,158,34,16,2, +89,162,35,35,41,9,223,0,251,80,158,38,40,20,15,159,38,40,50,21,94, +2,139,3,2,140,3,248,22,58,198,248,22,84,198,80,159,34,8,27,35,89, +162,34,35,49,9,223,0,27,249,22,152,3,20,15,159,37,34,50,196,27,28, +248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158, +40,37,197,28,248,80,158,40,34,193,28,248,80,158,40,38,248,80,158,41,36, +194,27,248,80,158,41,37,194,28,248,80,158,41,34,193,249,80,158,42,39,248, +80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,11,11,28, +192,27,248,22,58,194,27,248,22,59,195,250,80,158,41,40,20,15,159,41,35, +50,21,93,2,141,3,195,27,28,248,80,158,38,34,195,249,80,158,39,35,248, +80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249,80, +158,42,39,27,248,80,158,44,36,196,28,248,80,158,44,34,193,249,80,158,45, +35,248,80,158,46,36,195,248,80,158,46,38,248,80,158,47,37,196,11,27,248, +80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,39,248,80,158,46, +36,195,248,80,158,46,38,248,80,158,47,37,196,11,11,11,28,192,27,248,22, +58,194,27,248,22,84,195,27,248,22,86,196,28,248,80,158,41,44,194,27,249, +22,67,196,195,251,80,158,45,40,20,15,159,45,43,50,21,94,2,142,3,2, +143,3,248,22,58,197,248,22,59,197,249,80,159,42,8,28,35,199,201,249,80, +159,39,8,28,35,196,198,34,20,99,159,36,16,16,2,134,4,2,135,4,2, +136,4,2,137,4,2,139,4,2,138,4,2,140,4,2,141,4,2,142,4,2, +172,4,2,153,4,30,2,64,1,26,99,104,101,99,107,45,100,117,112,108,105, +99,97,116,101,45,105,100,101,110,116,105,102,105,101,114,0,2,175,5,2,154, +4,2,155,4,2,173,4,16,10,33,138,6,33,140,6,33,142,6,33,143,6, +33,144,6,33,146,6,33,147,6,33,148,6,33,150,6,33,152,6,11,16,5, +93,2,41,89,162,34,35,51,9,223,0,27,249,22,152,3,20,15,159,37,34, +42,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196, +27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35,248,80, +158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158, +44,35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,38, +193,248,80,158,46,39,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22, +84,195,27,248,22,93,196,27,248,22,94,197,249,80,158,42,40,201,27,250,22, +67,200,198,199,252,80,158,48,41,20,15,159,48,35,42,21,95,2,153,3,2, +154,3,2,155,3,248,22,58,198,248,22,86,198,248,22,84,198,250,22,175,8, +11,2,54,196,34,20,99,159,34,16,8,2,134,4,2,135,4,2,136,4,2, +137,4,2,141,4,2,142,4,2,154,4,2,140,4,16,2,33,154,6,33,156, +6,11,16,5,93,2,36,89,162,34,35,51,9,223,0,27,249,22,152,3,20, +15,159,37,34,44,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80, +158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158, +41,35,248,80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,34, +193,249,80,158,44,38,27,248,80,158,46,36,196,28,248,80,158,46,39,193,248, +22,65,248,80,158,47,40,194,11,27,248,80,158,46,37,196,28,248,80,158,46, +34,193,249,80,158,47,35,248,80,158,48,36,195,27,248,80,158,49,37,196,28, +248,80,158,49,39,193,248,80,158,49,40,193,11,11,11,11,11,28,192,27,248, +22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22, +95,198,249,80,158,43,41,202,27,251,22,67,202,199,200,201,250,80,158,47,42, +89,162,34,34,43,9,224,13,3,253,80,158,41,43,20,15,159,41,35,44,21, +96,2,160,3,2,161,3,2,162,3,2,163,3,248,22,58,199,248,22,94,199, +248,22,93,199,248,22,84,199,21,98,2,92,9,95,2,164,3,2,165,3,94, +2,166,3,2,83,2,157,3,2,158,3,2,83,20,15,159,47,36,44,250,22, +175,8,11,2,54,196,34,20,99,159,34,16,10,2,134,4,2,135,4,2,136, +4,2,137,4,2,138,4,2,141,4,2,142,4,2,154,4,2,155,4,2,140, +4,16,3,33,158,6,33,160,6,33,161,6,11,16,5,93,2,45,87,95,83, +158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,42,20,15,159,38, +40,50,21,94,2,169,3,2,170,3,248,22,58,198,248,22,93,198,80,159,34, +8,27,35,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,42, +20,15,159,38,39,50,21,94,2,171,3,2,172,3,248,22,58,198,248,22,84, +198,80,159,34,8,26,35,89,162,34,35,54,9,223,0,27,249,22,152,3,20, +15,159,37,34,50,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80, +158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,28,248,80, +158,40,38,248,80,158,41,36,194,27,248,80,158,41,37,194,28,248,80,158,41, +34,193,249,80,158,42,35,248,80,158,43,36,195,27,248,80,158,44,37,196,28, +248,80,158,44,39,193,248,80,158,44,40,193,11,11,11,11,11,28,192,27,248, +22,58,194,27,248,22,84,195,27,248,22,86,196,249,80,158,41,41,200,27,249, +22,67,197,198,251,80,158,46,42,20,15,159,46,35,50,21,94,2,173,3,2, +174,3,248,22,59,197,248,22,58,197,27,28,248,80,158,38,34,195,249,80,158, +39,35,248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34, +193,249,80,158,42,43,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248, +22,8,89,162,34,35,41,9,224,10,1,27,249,22,2,89,162,34,35,46,9, +224,4,5,249,80,158,37,44,28,248,80,158,38,34,197,249,80,158,39,35,248, +80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80, +158,42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11, +11,194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37, +45,193,11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45, +35,248,80,158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193, +248,80,158,47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84, +195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3, +20,15,159,45,36,50,248,80,158,46,46,249,80,158,48,47,20,15,159,48,37, +50,201,27,28,248,80,158,45,39,194,248,80,158,45,40,194,11,28,192,249,80, +158,46,41,205,27,252,22,67,200,202,205,204,203,250,80,158,50,48,89,162,34, +34,48,9,224,16,3,253,80,158,41,42,20,15,159,41,38,50,21,96,2,175, +3,2,176,3,2,177,3,2,178,3,250,22,2,80,159,44,8,26,35,248,22, +58,202,248,22,96,202,252,22,2,80,159,46,8,27,35,248,22,58,204,248,22, +58,204,248,22,93,204,248,22,93,204,248,22,95,199,248,22,84,199,21,95,2, +92,94,94,2,179,3,2,158,2,2,83,95,2,92,93,94,2,180,3,96,2, +143,2,9,96,2,92,93,94,2,130,2,2,179,3,95,2,137,3,2,179,3, +2,181,3,95,2,137,3,2,181,3,2,130,2,2,83,96,2,182,3,2,180, +3,97,2,143,2,9,2,157,3,2,158,3,2,83,2,180,3,20,15,159,50, +41,50,248,80,158,45,49,20,15,159,45,42,50,250,22,175,8,11,2,54,197, +34,20,99,159,36,16,16,2,134,4,2,135,4,2,136,4,2,137,4,2,139, +4,2,141,4,2,142,4,2,154,4,2,140,4,2,138,4,2,170,4,2,171, +4,2,175,5,2,172,4,2,155,4,2,173,4,16,9,33,163,6,33,165,6, +33,169,6,33,170,6,33,172,6,33,173,6,33,174,6,33,175,6,33,177,6, +11,16,5,93,2,37,89,162,34,35,49,9,223,0,27,249,22,152,3,20,15, +159,37,34,42,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158, +39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41, +35,248,80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,38,193, +248,80,158,43,39,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,86,196,249,80,158,41,40,200,27,249,22,67,198,197,251,80,158,46, +41,20,15,159,46,35,42,21,94,2,187,3,2,188,3,248,22,58,197,248,22, +59,197,250,22,175,8,11,2,54,196,34,20,99,159,34,16,8,2,134,4,2, +135,4,2,136,4,2,137,4,2,141,4,2,142,4,2,154,4,2,140,4,16, +2,33,179,6,33,181,6,11,106,83,158,34,16,6,27,247,22,189,9,87,94, +28,192,28,248,22,188,9,193,12,250,22,176,8,2,164,3,2,130,4,195,12, +91,159,39,11,90,161,39,34,11,254,22,166,9,2,62,11,35,34,11,9,204, +252,22,7,197,198,199,250,22,168,9,203,34,2,131,4,250,22,169,9,204,34, +2,131,4,80,159,34,34,35,80,159,34,35,35,80,159,34,36,35,80,159,34, +37,35,80,159,34,38,35,83,158,34,16,2,89,162,34,35,41,2,8,223,0, +87,94,28,248,80,158,35,36,194,12,250,22,176,8,2,8,6,7,7,112,114, +111,109,105,115,101,196,27,248,80,158,36,37,195,28,248,22,0,193,27,249,22, +6,195,22,65,87,94,28,248,22,0,248,80,158,38,37,197,249,80,158,38,38, +197,194,12,249,22,1,22,7,248,80,158,39,37,198,249,22,1,22,7,194,80, +159,34,39,35,83,158,34,16,2,89,162,34,34,38,2,9,223,0,248,80,158, +35,41,249,22,25,11,80,158,37,42,80,159,34,40,35,83,158,34,16,2,89, +162,34,36,42,2,13,223,0,87,95,28,248,22,169,11,194,12,252,22,176,8, +2,13,6,16,16,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, +34,198,199,28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,176,8,2, +13,6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32, +48,41,35,198,199,20,14,159,80,158,34,42,193,247,194,80,159,34,43,35,83, +158,34,16,6,252,22,166,9,2,61,11,35,34,11,80,159,34,44,35,80,159, +34,45,35,80,159,34,46,35,80,159,34,47,35,80,159,34,48,35,83,158,34, +16,6,27,247,22,189,9,87,94,28,192,28,248,22,145,8,248,22,188,9,194, +250,22,176,8,2,164,3,2,130,4,195,12,12,91,159,39,11,90,161,39,34, +11,254,22,166,9,2,61,11,35,34,11,9,204,252,22,7,197,198,199,250,22, +168,9,203,34,2,132,4,250,22,169,9,204,34,2,132,4,80,159,34,49,35, +80,159,34,50,35,80,159,34,51,35,80,159,34,52,35,80,159,34,53,35,83, +158,34,16,2,89,162,34,34,38,2,24,223,0,248,80,158,35,45,249,22,25, +11,80,158,37,55,80,159,34,54,35,83,158,34,16,2,89,162,38,36,42,2, +26,223,0,87,95,28,248,80,158,35,46,194,12,252,22,176,8,2,26,6,22, +22,98,114,101,97,107,32,112,97,114,97,109,101,116,101,114,105,122,97,116,105, +111,110,34,198,199,28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,176, +8,2,13,6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116, +121,32,48,41,35,198,199,83,158,38,20,94,94,20,14,159,80,158,34,55,249, +80,158,36,47,195,34,87,94,247,80,158,34,57,247,194,247,80,158,34,57,80, +159,34,56,35,83,158,34,16,2,89,162,34,37,42,2,28,223,0,28,248,22, +63,196,248,22,133,11,194,28,248,248,22,83,197,194,83,158,38,20,94,94,248, +248,22,85,197,194,20,14,159,80,158,34,55,194,247,80,158,34,57,250,80,158, +37,58,196,197,248,22,59,199,80,159,34,58,35,83,158,34,16,2,89,162,34, +37,42,2,29,223,0,28,248,22,63,196,248,22,133,11,194,28,248,248,22,83, +197,194,20,14,159,80,158,34,55,194,87,94,247,80,158,34,57,248,248,22,85, +197,194,250,80,158,37,59,196,197,248,22,59,199,80,159,34,59,35,83,158,34, +16,2,248,22,171,11,11,80,159,34,8,26,35,83,158,34,16,2,32,0,89, +162,34,35,37,2,31,222,28,248,22,16,193,12,249,22,173,8,2,46,6,37, +37,101,120,99,101,112,116,105,111,110,32,104,97,110,100,108,101,114,32,117,115, +101,100,32,111,117,116,32,111,102,32,99,111,110,116,101,120,116,80,159,34,8, +27,35,83,158,34,16,2,247,22,17,80,159,34,8,28,35,83,158,34,16,2, +89,162,34,36,37,2,33,223,0,20,14,159,80,158,34,8,30,193,247,194,80, +159,34,8,29,35,96,2,133,4,2,60,2,59,2,10,96,2,133,4,2,55, +2,64,2,63,0}; + EVAL_ONE_SIZED_STR((char *)expr, 18232); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,252,245,1,252,87,52,159,34,20,99,159,34,16, -1,20,24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,66,35,37, -109,105,115,99,1,29,2,11,11,10,10,10,46,80,158,34,34,20,99,159,39, -16,47,30,3,2,2,72,112,97,116,104,45,115,116,114,105,110,103,63,4,254, -1,30,5,2,2,70,45,114,101,58,115,117,102,102,105,120,6,254,1,30,7, -2,2,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105, -120,8,254,1,30,9,2,2,64,98,115,98,115,10,254,1,30,11,2,2,76, -110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,12,254,1,30,13, -2,2,71,114,97,116,105,111,110,97,108,105,122,101,14,254,1,30,15,2,2, -1,20,114,101,97,100,45,101,118,97,108,45,112,114,105,110,116,45,108,111,111, -112,16,254,1,30,17,2,2,67,108,111,97,100,47,99,100,18,254,1,30,19, -2,2,65,45,108,111,97,100,20,254,1,30,21,2,2,73,108,111,97,100,45, -114,101,108,97,116,105,118,101,22,254,1,30,23,2,2,1,23,108,111,97,100, -45,114,101,108,97,116,105,118,101,45,101,120,116,101,110,115,105,111,110,24,254, -1,30,25,2,2,1,27,112,97,116,104,45,108,105,115,116,45,115,116,114,105, -110,103,45,62,112,97,116,104,45,108,105,115,116,26,254,1,30,27,2,2,1, -20,102,105,110,100,45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104, -28,254,1,30,29,2,2,74,45,99,104,101,99,107,45,114,101,108,112,97,116, -104,30,254,1,30,31,2,2,77,45,99,104,101,99,107,45,99,111,108,108,101, -99,116,105,111,110,32,254,1,30,33,2,2,69,45,102,105,110,100,45,99,111, -108,34,254,1,30,35,2,2,70,100,108,108,45,115,117,102,102,105,120,36,254, -1,30,37,2,2,70,95,108,111,97,100,101,114,46,115,111,38,254,1,30,39, -2,2,1,25,99,117,114,114,101,110,116,45,108,111,97,100,47,117,115,101,45, -99,111,109,112,105,108,101,100,40,254,1,30,41,68,35,37,112,97,114,97,109, -122,42,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45, -107,101,121,43,4,30,44,2,42,1,23,101,120,116,101,110,100,45,112,97,114, -97,109,101,116,101,114,105,122,97,116,105,111,110,45,3,30,46,2,2,75,99, -111,108,108,101,99,116,105,111,110,45,112,97,116,104,47,254,1,30,48,2,2, -77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,49,254,1, -30,50,2,2,67,45,114,101,58,100,105,114,51,254,1,30,52,2,2,68,45, -114,101,58,97,117,116,111,53,254,1,30,54,2,2,74,45,114,101,58,111,107, -45,114,101,108,112,97,116,104,55,254,1,30,56,2,2,1,24,45,109,111,100, -117,108,101,45,104,97,115,104,45,116,97,98,108,101,45,116,97,98,108,101,57, -254,1,30,58,2,2,71,45,112,97,116,104,45,99,97,99,104,101,59,254,1, -30,60,2,2,77,45,108,111,97,100,105,110,103,45,102,105,108,101,110,97,109, -101,61,254,1,30,62,2,2,71,45,112,114,101,118,45,114,101,108,116,111,63, -254,1,30,64,2,2,75,45,112,114,101,118,45,114,101,108,116,111,45,100,105, -114,65,254,1,30,66,2,2,1,34,109,97,107,101,45,115,116,97,110,100,97, -114,100,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118, -101,114,67,254,1,30,68,2,2,1,29,102,105,110,100,45,108,105,98,114,97, -114,121,45,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,115,69,254, -1,30,70,2,2,65,112,111,114,116,63,71,254,1,30,72,2,2,72,115,116, -114,117,99,116,58,103,117,97,114,100,73,254,1,30,74,2,2,70,109,97,107, -101,45,103,117,97,114,100,75,254,1,30,76,2,2,66,103,117,97,114,100,63, -77,254,1,30,78,2,2,69,103,117,97,114,100,45,114,101,102,79,254,1,30, -80,2,2,70,103,117,97,114,100,45,115,101,116,33,81,254,1,30,82,2,2, -69,103,117,97,114,100,45,101,118,116,83,254,1,30,84,2,2,71,99,104,97, -110,110,101,108,45,103,101,116,85,254,1,30,86,2,2,75,99,104,97,110,110, -101,108,45,116,114,121,45,103,101,116,87,254,1,30,88,2,2,71,99,104,97, -110,110,101,108,45,112,117,116,89,254,1,30,90,2,2,1,23,105,110,116,101, -114,97,99,116,105,111,110,45,101,110,118,105,114,111,110,109,101,110,116,91,254, -1,30,92,2,2,1,25,115,99,104,101,109,101,45,114,101,112,111,114,116,45, -101,110,118,105,114,111,110,109,101,110,116,93,254,1,30,94,2,2,67,109,107, -45,114,53,114,115,95,254,1,30,96,2,2,76,110,117,108,108,45,101,110,118, -105,114,111,110,109,101,110,116,97,254,1,16,0,11,11,16,22,2,32,2,30, -2,34,2,20,2,61,2,57,2,59,2,63,2,65,2,53,2,51,2,55,2, -6,2,38,2,10,2,36,2,79,2,81,2,77,2,75,2,95,2,73,56,11, -16,24,2,85,2,89,2,87,2,47,2,40,2,28,2,69,2,83,2,91,2, -22,2,24,2,18,2,49,2,67,2,12,2,97,2,26,2,8,2,4,2,71, -2,14,2,16,2,93,79,109,101,109,111,114,121,45,116,114,97,99,101,45,108, -97,109,98,100,97,98,16,24,11,11,11,11,11,11,11,11,11,11,11,11,11, -11,11,11,11,11,11,11,11,11,11,11,16,24,2,85,2,89,2,87,2,47, -2,40,2,28,2,69,2,83,2,91,2,22,2,24,2,18,2,49,2,67,2, -12,2,97,2,26,2,8,2,4,2,71,2,14,2,16,2,93,2,98,57,58, -93,16,5,93,2,98,89,162,34,35,53,9,223,0,27,249,22,216,20,15,159, -37,34,41,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39, -36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35, -248,80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,38,193,248, -80,158,43,39,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, -248,22,86,196,27,249,22,216,20,15,159,42,35,41,249,22,216,203,247,22,54, -27,249,22,216,20,15,159,43,36,41,249,22,216,204,247,22,54,27,249,22,216, -20,15,159,44,37,41,249,22,216,205,247,22,54,27,252,22,67,202,198,199,201, -200,254,80,158,50,40,20,15,159,50,38,41,21,97,3,1,4,103,57,48,54, -99,3,1,4,103,57,49,50,100,3,1,4,103,57,49,49,101,3,1,4,103, -57,48,56,102,3,1,4,103,57,48,57,103,248,22,95,200,248,22,93,200,248, -22,58,200,248,22,84,200,248,22,96,200,250,22,252,47,2,11,6,10,10,98, -97,100,32,115,121,110,116,97,120,104,196,34,20,99,159,34,16,7,30,105,65, -35,37,115,116,120,106,69,115,116,120,45,112,97,105,114,63,107,11,30,108,2, -106,67,99,111,110,115,47,35,102,109,1,30,110,2,106,67,115,116,120,45,99, -97,114,111,5,30,112,2,106,67,115,116,120,45,99,100,114,113,6,30,114,2, -106,69,115,116,120,45,108,105,115,116,63,115,8,30,116,2,106,69,115,116,120, -45,62,108,105,115,116,117,4,30,118,69,35,37,115,116,120,99,97,115,101,119, -1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115,116, -105,116,117,116,101,120,0,16,5,18,98,64,104,101,114,101,121,40,98,38,10, -34,11,96,159,68,35,37,100,101,102,105,110,101,122,9,11,159,70,35,37,109, -101,109,116,114,97,99,101,123,9,11,159,74,35,37,115,109,97,108,108,45,115, -99,104,101,109,101,124,9,11,159,73,35,37,109,111,114,101,45,115,99,104,101, -109,101,125,9,11,16,92,2,32,2,2,2,57,2,2,2,10,2,2,2,77, -2,2,2,40,2,2,2,34,2,2,2,18,2,2,2,14,2,2,2,20,2, -2,2,95,2,2,2,36,2,2,2,75,2,2,2,89,2,2,2,38,2,2, -2,79,2,2,2,55,2,2,2,85,2,2,2,8,2,2,2,81,2,2,2, -12,2,2,2,67,2,2,2,61,2,2,2,83,2,2,2,6,2,2,2,30, -2,2,2,65,2,2,2,73,2,2,2,16,2,2,2,51,2,2,2,47,2, -2,2,49,2,2,2,22,2,2,2,69,2,2,2,4,2,2,2,87,2,2, -2,97,2,2,2,93,2,2,2,53,2,2,2,24,2,2,2,98,2,2,2, -59,2,2,2,91,2,2,2,26,2,2,2,71,2,2,2,63,2,2,2,28, -2,2,98,37,10,35,11,94,159,76,35,37,115,116,120,99,97,115,101,45,115, -99,104,101,109,101,126,9,11,159,2,106,9,11,16,0,96,36,8,254,1,11, -16,0,16,4,35,11,61,120,127,3,1,7,101,110,118,52,53,48,49,128,18, -100,2,121,43,38,37,36,35,16,8,42,11,3,1,4,103,56,57,52,129,3, -1,4,103,56,57,53,130,3,1,4,103,56,57,54,131,3,1,7,101,110,118, -52,53,48,55,132,2,132,2,132,16,8,41,11,61,95,133,64,97,114,103,115, -134,64,98,111,100,121,135,3,1,7,101,110,118,52,53,48,56,136,2,136,2, -136,18,16,2,158,2,121,43,44,18,44,18,158,95,106,63,108,101,116,137,51, -38,37,36,35,42,41,16,4,50,11,3,1,4,103,57,48,49,138,3,1,7, -101,110,118,52,53,50,52,139,16,4,49,11,68,99,111,110,116,109,97,114,107, -140,3,1,7,101,110,118,52,53,50,53,141,16,4,48,11,3,1,4,103,57, -48,51,142,3,1,7,101,110,118,52,53,51,54,143,16,4,47,11,64,102,117, -110,99,144,3,1,7,101,110,118,52,53,51,55,145,16,4,46,11,3,1,4, -103,57,48,53,146,3,1,7,101,110,118,52,53,52,56,147,16,4,45,11,67, -110,101,119,109,97,114,107,148,3,1,7,101,110,118,52,53,52,57,149,158,94, -10,94,2,99,11,51,158,97,10,2,137,93,94,2,100,95,66,108,97,109,98, -100,97,150,2,101,95,2,137,93,94,2,102,94,1,31,117,110,105,111,110,101, -100,45,109,101,109,116,114,97,99,101,45,116,114,97,99,107,105,110,103,45,118, -97,108,117,101,151,2,99,160,1,22,119,105,116,104,45,99,111,110,116,105,110, -117,97,116,105,111,110,45,109,97,114,107,152,1,30,109,101,109,111,114,121,45, -116,114,97,99,101,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97, -114,107,153,2,102,2,103,95,64,115,101,116,33,154,2,99,94,1,30,110,101, -119,45,109,101,109,116,114,97,99,101,45,116,114,97,99,107,105,110,103,45,102, -117,110,99,116,105,111,110,155,2,100,2,100,51,51,11,139,83,159,34,93,80, -159,34,8,51,35,89,162,8,64,35,44,64,108,111,111,112,156,223,0,28,248, -22,63,194,9,27,248,22,58,195,27,28,248,22,252,58,3,194,193,28,248,22, -252,57,3,194,249,22,252,59,3,195,250,80,158,41,46,248,22,252,72,3,69, -101,120,101,99,45,102,105,108,101,157,11,10,250,80,158,39,46,248,22,252,72, -3,2,157,196,10,28,192,249,22,57,248,22,252,61,3,249,22,252,59,3,197, -247,22,252,73,3,248,80,159,39,8,51,35,248,22,59,199,248,80,159,37,8, -51,35,248,22,59,197,83,159,34,93,80,159,34,8,50,35,89,162,34,35,47, -67,103,101,116,45,100,105,114,158,223,0,27,28,194,28,249,22,252,19,2,196, -80,158,37,8,29,80,158,35,8,30,27,248,22,252,220,1,248,22,50,197,28, -249,22,252,84,3,33,8,35,114,120,35,34,94,44,34,159,194,91,159,37,11, -90,161,37,34,11,248,22,252,55,3,248,22,252,44,3,250,22,252,204,1,200, -35,248,22,252,198,1,201,87,95,83,160,36,11,80,158,39,8,29,198,83,160, -36,11,80,158,39,8,30,192,192,11,11,28,192,192,27,247,22,252,97,1,28, -192,192,247,22,252,73,3,83,159,34,93,80,159,34,8,49,35,89,162,34,35, -43,9,223,0,87,94,28,27,248,22,252,36,3,195,28,192,192,28,248,22,252, -143,1,195,27,248,22,252,56,3,196,28,192,192,248,22,252,57,3,196,11,12, -250,22,252,48,2,2,47,6,25,25,112,97,116,104,32,111,114,32,118,97,108, -105,100,45,112,97,116,104,32,115,116,114,105,110,103,160,196,28,248,22,252,56, -3,194,12,248,22,252,197,2,249,22,252,142,2,248,22,252,172,1,250,22,252, -191,1,6,29,29,126,97,58,32,105,110,118,97,108,105,100,32,114,101,108,97, -116,105,118,101,32,112,97,116,104,58,32,126,115,161,2,47,200,247,22,21,83, -159,34,93,80,159,34,8,48,35,89,162,34,36,42,68,119,105,116,104,45,100, -105,114,162,223,0,20,14,159,80,158,34,53,250,80,158,37,54,249,22,25,11, -80,158,39,53,22,252,97,1,28,248,22,252,36,3,197,196,247,22,252,73,3, -247,194,83,159,34,93,80,159,34,8,47,35,89,162,8,36,37,38,66,103,101, -116,45,115,111,163,223,0,89,162,34,35,46,9,226,0,1,3,2,252,22,252, -52,3,199,201,6,6,6,110,97,116,105,118,101,164,247,22,252,227,1,28,198, -249,80,159,44,36,35,199,80,158,44,50,197,83,159,34,93,80,159,34,34,35, -32,165,89,162,34,35,38,2,4,222,27,248,22,252,36,3,194,28,192,192,28, -248,22,252,143,1,194,27,248,22,252,56,3,195,28,192,192,248,22,252,57,3, -195,11,83,159,34,93,80,159,34,35,35,33,18,35,114,120,35,34,40,91,46, -93,91,94,46,93,42,124,41,36,34,166,83,159,34,93,80,159,34,36,35,89, -162,34,36,48,2,8,223,0,87,95,28,28,248,22,252,37,3,194,10,27,248, -22,252,36,3,195,28,192,192,28,248,22,252,143,1,195,27,248,22,252,56,3, -196,28,192,192,248,22,252,57,3,196,11,12,252,22,252,48,2,2,8,6,42, -42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109, -41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110, -103,167,34,198,199,28,28,248,22,252,143,1,195,10,248,22,252,195,1,195,12, -252,22,252,48,2,2,8,6,21,21,115,116,114,105,110,103,32,111,114,32,98, -121,116,101,32,115,116,114,105,110,103,168,35,198,199,91,159,37,11,90,161,37, -34,11,248,22,252,55,3,197,87,94,28,192,12,250,22,252,49,2,2,8,6, -36,36,99,97,110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120, -32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,169,199,27,249, -22,252,45,3,250,22,252,90,3,2,166,248,22,252,42,3,200,28,248,22,252, -143,1,204,249,22,252,219,1,205,8,63,203,28,248,22,252,37,3,200,248,22, -252,38,3,200,247,22,252,39,3,28,248,22,252,36,3,194,249,22,252,52,3, -195,194,192,83,159,34,93,80,159,34,37,35,249,22,252,145,1,7,92,7,92, -83,159,34,93,80,159,34,38,35,89,162,34,35,47,2,12,223,0,87,94,28, -28,248,22,252,37,3,194,10,27,248,22,252,36,3,195,28,192,192,28,248,22, -252,143,1,195,27,248,22,252,56,3,196,28,192,192,248,22,252,57,3,196,11, -12,250,22,252,48,2,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97, -115,101,170,6,42,42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115, -121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32, -115,116,114,105,110,103,171,196,28,28,248,22,252,37,3,194,249,22,252,19,2, -248,22,252,38,3,196,67,119,105,110,100,111,119,115,172,249,22,252,19,2,247, -22,252,226,1,2,172,27,28,248,22,252,143,1,195,194,248,22,252,216,1,248, -22,252,41,3,196,28,249,22,252,84,3,33,21,35,114,120,34,94,91,92,92, -93,91,92,92,93,91,63,93,91,92,92,93,34,173,194,28,248,22,252,143,1, -195,248,22,252,43,3,195,194,27,248,22,252,182,1,194,249,22,252,44,3,248, -22,252,219,1,250,22,252,91,3,33,6,35,114,120,34,47,34,174,28,249,22, -252,84,3,33,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47, -92,92,93,42,36,34,175,200,198,250,22,252,91,3,33,19,35,114,120,34,91, -32,46,93,43,40,91,47,92,92,93,42,41,36,34,176,201,6,2,2,92,49, -177,80,158,42,37,2,172,28,248,22,252,143,1,194,248,22,252,43,3,194,193, -83,159,34,93,80,159,34,39,35,91,159,36,11,90,161,35,35,11,32,178,89, -162,8,64,35,38,65,99,104,101,99,107,179,222,28,248,22,136,193,12,250,22, -252,48,2,2,14,6,4,4,114,101,97,108,180,195,20,12,95,35,89,162,8, -36,36,53,2,14,223,0,87,95,28,248,22,136,194,12,250,22,252,48,2,2, -14,2,180,196,28,248,22,136,195,12,250,22,252,48,2,2,14,2,180,197,27, -248,22,183,196,27,249,22,180,197,195,27,249,22,179,198,196,28,249,22,188,198, -198,28,250,22,191,196,34,195,28,248,22,139,197,34,33,3,48,46,48,181,28, -248,22,195,194,248,22,180,27,248,22,180,195,27,248,22,180,197,28,248,22,138, -194,193,27,248,22,151,195,27,248,22,151,195,28,249,22,189,195,194,248,22,177, -194,249,22,179,195,248,22,182,249,205,248,22,182,249,22,180,202,201,248,22,182, -249,22,180,203,201,28,248,22,138,194,193,27,248,22,151,195,27,248,22,151,195, -28,249,22,189,195,194,248,22,177,194,249,22,179,195,248,22,182,249,202,248,22, -182,249,22,180,202,201,248,22,182,249,22,180,203,201,33,6,43,110,97,110,46, -48,182,89,162,8,36,36,54,72,102,105,110,100,45,98,101,116,119,101,101,110, -183,223,0,28,248,22,138,194,193,27,248,22,151,195,27,248,22,151,197,28,249, -22,189,195,194,248,22,177,194,249,22,179,195,248,22,182,27,248,22,182,249,22, -180,203,200,27,248,22,182,249,22,180,203,201,28,248,22,138,194,193,27,248,22, -151,195,27,248,22,151,195,28,249,22,189,195,194,248,22,177,194,249,22,179,195, -248,22,182,249,206,248,22,182,249,22,180,202,201,248,22,182,249,22,180,203,201, -83,159,34,93,80,159,34,40,35,32,184,89,162,34,34,35,2,16,222,247,32, -185,89,162,8,64,34,37,69,114,101,112,108,45,108,111,111,112,186,222,250,22, -13,32,187,89,162,34,34,37,9,222,27,247,247,22,46,28,248,22,252,77,1, -193,12,87,94,83,159,45,32,188,89,162,35,35,37,9,222,249,22,3,247,22, -45,194,249,22,13,89,162,34,34,41,9,223,2,27,249,22,57,77,35,37,116, -111,112,45,105,110,116,101,114,97,99,116,105,111,110,189,195,248,247,22,252,40, -2,28,248,22,213,195,248,22,252,38,2,250,22,216,11,197,198,193,247,22,18, -248,22,15,247,22,18,247,22,18,32,190,89,162,8,37,34,34,9,222,247,2, -185,83,159,34,93,80,159,34,41,35,32,191,89,162,34,35,45,2,18,222,87, -94,28,27,248,22,252,36,3,194,28,192,192,28,248,22,252,143,1,194,27,248, -22,252,56,3,195,28,192,192,248,22,252,57,3,195,11,12,250,22,252,48,2, -2,18,6,25,25,112,97,116,104,32,111,114,32,115,116,114,105,110,103,32,40, -115,97,110,115,32,110,117,108,41,192,195,91,159,37,11,90,161,37,34,11,248, -22,252,55,3,196,28,194,248,22,252,197,2,249,22,252,172,2,248,22,252,172, -1,249,22,252,191,1,6,36,36,108,111,97,100,47,99,100,58,32,99,97,110, -110,111,116,32,111,112,101,110,32,97,32,100,105,114,101,99,116,111,114,121,58, -32,126,115,193,201,247,22,21,28,248,22,252,36,3,193,87,94,28,248,22,252, -47,3,193,12,248,22,252,197,2,249,22,252,172,2,248,22,252,172,1,250,22, -252,191,1,6,65,65,108,111,97,100,47,99,100,58,32,100,105,114,101,99,116, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,114,0,0,0,1,0,0,3,0,16,0,27,0, +47,0,52,0,69,0,81,0,103,0,111,0,117,0,131,0,156,0,185,0,207, +0,222,0,240,0,250,0,5,1,16,1,43,1,52,1,68,1,86,1,94,1, +103,1,118,1,144,1,156,1,174,1,186,1,202,1,238,1,13,2,19,2,32, +2,43,2,50,2,60,2,71,2,81,2,93,2,109,2,121,2,146,2,173,2, +181,2,198,2,218,2,225,2,232,2,239,2,246,2,253,2,3,3,8,3,17, +3,28,3,43,3,57,3,74,3,84,3,94,3,98,3,103,3,113,3,141,3, +173,3,182,3,190,3,197,3,225,3,232,3,238,3,240,3,249,3,255,3,44, +4,49,4,54,4,85,4,89,4,92,4,96,4,99,4,107,4,114,4,123,4, +132,4,148,4,154,4,171,4,126,5,138,5,160,5,191,5,204,5,210,5,216, +5,222,5,106,6,29,7,39,7,59,7,202,7,25,8,179,8,17,9,124,9, +230,9,249,9,40,10,174,10,24,11,0,0,243,47,0,0,29,11,11,72,112, +97,116,104,45,115,116,114,105,110,103,63,70,45,114,101,58,115,117,102,102,105, +120,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120, +64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116, +104,71,114,97,116,105,111,110,97,108,105,122,101,1,20,114,101,97,100,45,101, +118,97,108,45,112,114,105,110,116,45,108,111,111,112,67,108,111,97,100,47,99, +100,65,45,108,111,97,100,73,108,111,97,100,45,114,101,108,97,116,105,118,101, +1,23,108,111,97,100,45,114,101,108,97,116,105,118,101,45,101,120,116,101,110, +115,105,111,110,1,27,112,97,116,104,45,108,105,115,116,45,115,116,114,105,110, +103,45,62,112,97,116,104,45,108,105,115,116,1,20,102,105,110,100,45,101,120, +101,99,117,116,97,98,108,101,45,112,97,116,104,74,45,99,104,101,99,107,45, +114,101,108,112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,108,101,99, +116,105,111,110,69,45,102,105,110,100,45,99,111,108,70,100,108,108,45,115,117, +102,102,105,120,70,95,108,111,97,100,101,114,46,115,111,1,25,99,117,114,114, +101,110,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100, +68,35,37,112,97,114,97,109,122,75,99,111,108,108,101,99,116,105,111,110,45, +112,97,116,104,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101, +100,67,45,114,101,58,100,105,114,68,45,114,101,58,97,117,116,111,74,45,114, +101,58,111,107,45,114,101,108,112,97,116,104,1,24,45,109,111,100,117,108,101, +45,104,97,115,104,45,116,97,98,108,101,45,116,97,98,108,101,71,45,112,97, +116,104,45,99,97,99,104,101,77,45,108,111,97,100,105,110,103,45,102,105,108, +101,110,97,109,101,71,45,112,114,101,118,45,114,101,108,116,111,75,45,112,114, +101,118,45,114,101,108,116,111,45,100,105,114,1,34,109,97,107,101,45,115,116, +97,110,100,97,114,100,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101, +115,111,108,118,101,114,1,29,102,105,110,100,45,108,105,98,114,97,114,121,45, +99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,115,65,112,111,114,116, +63,72,115,116,114,117,99,116,58,103,117,97,114,100,70,109,97,107,101,45,103, +117,97,114,100,66,103,117,97,114,100,63,69,103,117,97,114,100,45,114,101,102, +70,103,117,97,114,100,45,115,101,116,33,69,103,117,97,114,100,45,101,118,116, +71,99,104,97,110,110,101,108,45,103,101,116,75,99,104,97,110,110,101,108,45, +116,114,121,45,103,101,116,71,99,104,97,110,110,101,108,45,112,117,116,1,23, +105,110,116,101,114,97,99,116,105,111,110,45,101,110,118,105,114,111,110,109,101, +110,116,1,25,115,99,104,101,109,101,45,114,101,112,111,114,116,45,101,110,118, +105,114,111,110,109,101,110,116,67,109,107,45,114,53,114,115,76,110,117,108,108, +45,101,110,118,105,114,111,110,109,101,110,116,79,109,101,109,111,114,121,45,116, +114,97,99,101,45,108,97,109,98,100,97,3,1,4,103,57,48,54,3,1,4, +103,57,49,50,3,1,4,103,57,49,49,3,1,4,103,57,48,56,3,1,4, +103,57,48,57,65,35,37,115,116,120,64,104,101,114,101,68,35,37,100,101,102, +105,110,101,70,35,37,109,101,109,116,114,97,99,101,74,35,37,115,109,97,108, +108,45,115,99,104,101,109,101,73,35,37,109,111,114,101,45,115,99,104,101,109, +101,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,3,1,7, +101,110,118,52,53,48,55,3,1,7,101,110,118,52,53,48,56,63,108,101,116, +64,108,111,111,112,69,101,120,101,99,45,102,105,108,101,6,25,25,112,97,116, +104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110, +103,6,29,29,126,97,58,32,105,110,118,97,108,105,100,32,114,101,108,97,116, +105,118,101,32,112,97,116,104,58,32,126,115,6,6,6,110,97,116,105,118,101, +67,119,105,110,100,111,119,115,6,4,4,114,101,97,108,6,25,25,112,97,116, +104,32,111,114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108, +41,66,109,97,99,111,115,120,65,109,97,99,111,115,5,0,68,114,101,108,97, +116,105,118,101,65,99,108,111,111,112,6,42,42,126,97,58,32,99,111,108,108, +101,99,116,105,111,110,32,110,111,116,32,102,111,117,110,100,58,32,126,115,32, +105,110,32,97,110,121,32,111,102,58,32,126,115,64,115,97,109,101,64,119,101, +97,107,1,29,115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45,110, +97,109,101,45,114,101,115,111,108,118,101,114,63,108,105,98,5,1,46,5,2, +46,46,62,117,112,67,105,103,110,111,114,101,100,66,35,37,114,53,114,115,68, +109,122,115,99,104,101,109,101,68,35,37,107,101,114,110,101,108,16,4,11,11, +61,120,3,1,7,101,110,118,52,53,48,49,95,8,193,11,16,0,97,10,35, +11,94,159,2,60,9,11,159,2,54,9,11,16,0,97,10,34,11,96,159,2, +56,9,11,159,2,57,9,11,159,2,58,9,11,159,2,59,9,11,16,92,2, +7,2,1,2,48,2,1,2,10,2,1,2,27,2,1,2,20,2,1,2,24, +2,1,2,17,2,1,2,16,2,1,2,23,2,1,2,18,2,1,2,3,2, +1,2,8,2,1,2,43,2,1,2,19,2,1,2,38,2,1,2,41,2,1, +2,4,2,1,2,39,2,1,2,6,2,1,2,32,2,1,2,35,2,1,2, +40,2,1,2,26,2,1,2,37,2,1,2,36,2,1,2,46,2,1,2,2, +2,1,2,44,2,1,2,47,2,1,2,15,2,1,2,31,2,1,2,5,2, +1,2,11,2,1,2,9,2,1,2,33,2,1,2,22,2,1,2,42,2,1, +2,29,2,1,2,45,2,1,2,25,2,1,2,12,2,1,2,28,2,1,2, +13,2,1,2,34,2,1,2,30,2,1,2,14,2,1,18,97,2,55,8,92, +8,91,8,90,8,89,16,8,11,11,61,95,64,97,114,103,115,64,98,111,100, +121,2,62,2,62,2,62,16,8,11,11,3,1,4,103,56,57,52,3,1,4, +103,56,57,53,3,1,4,103,56,57,54,2,61,2,61,2,61,98,8,92,8, +91,8,90,8,89,8,95,8,94,18,158,2,55,8,96,18,158,2,55,8,96, +18,158,2,55,8,96,104,8,92,8,91,8,90,8,89,8,95,8,94,16,4, +11,11,3,1,4,103,57,48,49,3,1,7,101,110,118,52,53,50,52,16,4, +11,11,68,99,111,110,116,109,97,114,107,3,1,7,101,110,118,52,53,50,53, +16,4,11,11,3,1,4,103,57,48,51,3,1,7,101,110,118,52,53,51,54, +16,4,11,11,64,102,117,110,99,3,1,7,101,110,118,52,53,51,55,16,4, +11,11,3,1,4,103,57,48,53,3,1,7,101,110,118,52,53,52,56,16,4, +11,11,67,110,101,119,109,97,114,107,3,1,7,101,110,118,52,53,52,57,18, +158,96,10,2,63,93,94,2,49,11,96,2,63,93,94,2,50,95,66,108,97, +109,98,100,97,2,51,95,2,63,93,94,2,52,94,1,31,117,110,105,111,110, +101,100,45,109,101,109,116,114,97,99,101,45,116,114,97,99,107,105,110,103,45, +118,97,108,117,101,2,49,160,1,22,119,105,116,104,45,99,111,110,116,105,110, +117,97,116,105,111,110,45,109,97,114,107,1,30,109,101,109,111,114,121,45,116, +114,97,99,101,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114, +107,2,52,2,53,95,64,115,101,116,33,2,49,94,1,30,110,101,119,45,109, +101,109,116,114,97,99,101,45,116,114,97,99,107,105,110,103,45,102,117,110,99, +116,105,111,110,2,50,2,50,8,100,0,8,35,114,120,35,34,94,44,34,0, +18,35,114,120,35,34,40,91,46,93,91,94,46,93,42,124,41,36,34,32,104, +89,162,8,64,34,37,69,114,101,112,108,45,108,111,111,112,222,250,22,13,32, +0,89,162,34,34,36,9,222,27,247,247,22,46,28,248,22,141,5,193,12,87, +94,83,159,44,32,0,89,162,35,35,37,9,222,249,22,3,247,22,45,194,248, +22,13,89,162,34,34,41,9,223,1,27,249,22,57,77,35,37,116,111,112,45, +105,110,116,101,114,97,99,116,105,111,110,195,248,247,22,168,8,28,248,22,149, +3,195,248,22,166,8,250,22,152,3,11,197,198,193,248,22,15,247,22,18,247, +22,18,32,0,89,162,8,37,34,34,9,222,247,2,104,32,105,89,162,8,64, +37,44,2,64,222,27,249,22,147,13,196,197,28,192,27,248,22,84,194,27,250, +2,105,198,199,248,22,93,198,28,249,22,137,7,195,2,74,249,22,71,197,194, +249,22,57,248,22,172,12,196,194,28,249,22,137,7,197,2,74,249,22,71,195, +9,249,22,57,248,22,172,12,198,9,32,106,89,162,8,100,37,48,70,102,111, +117,110,100,45,101,120,101,99,222,28,192,91,159,37,11,90,161,37,34,11,248, +22,183,12,198,27,28,197,27,248,22,188,12,200,28,249,22,149,8,194,201,11, +28,248,22,184,12,193,250,2,106,200,201,249,22,180,12,199,197,250,2,106,200, +201,195,11,28,192,192,27,28,248,22,164,12,195,27,249,22,180,12,197,200,28, +28,248,22,175,12,193,10,248,22,174,12,193,192,11,11,28,192,192,28,198,11, +27,248,22,188,12,201,28,249,22,149,8,194,202,11,28,248,22,184,12,193,250, +2,106,201,202,249,22,180,12,200,197,250,2,106,201,202,195,194,32,107,89,162, +8,100,38,48,2,64,222,28,248,22,63,196,11,27,248,22,187,12,248,22,58, +198,27,249,22,180,12,195,196,28,248,22,174,12,193,250,2,106,198,199,195,27, +248,22,59,199,28,248,22,63,193,11,27,248,22,187,12,248,22,58,195,27,249, +22,180,12,195,199,28,248,22,174,12,193,250,2,106,201,202,195,251,2,107,201, +202,203,248,22,59,199,32,108,89,162,8,64,39,50,2,76,222,28,248,22,63, +197,248,22,133,11,249,22,172,10,248,22,172,6,251,22,191,6,2,77,201,28, +248,22,63,204,202,250,22,1,22,180,12,205,206,200,247,22,21,27,249,22,180, +12,248,22,58,200,197,28,248,22,175,12,193,27,250,22,1,22,180,12,196,200, +28,248,22,175,12,193,192,252,2,108,199,200,201,202,248,22,59,204,252,2,108, +198,199,200,201,248,22,59,203,32,109,89,162,8,64,38,49,2,76,222,28,248, +22,63,196,248,22,133,11,249,22,172,10,248,22,172,6,251,22,191,6,2,77, +2,22,28,248,22,63,203,201,250,22,1,22,180,12,204,205,200,247,22,21,27, +249,22,180,12,248,22,58,199,196,28,248,22,175,12,193,27,250,22,1,22,180, +12,196,199,28,248,22,175,12,193,192,251,2,109,198,199,200,248,22,59,202,251, +2,109,197,198,199,248,22,59,201,0,17,35,114,120,35,34,40,46,43,63,41, +47,43,40,46,42,41,34,0,45,35,114,120,35,34,94,91,45,97,45,122,65, +45,90,48,45,57,95,46,32,93,43,40,47,43,91,45,97,45,122,65,45,90, +48,45,57,95,46,32,93,43,41,42,36,34,32,112,89,162,8,64,36,47,2, +64,222,27,249,22,147,13,2,110,196,28,192,27,249,22,180,12,196,27,248,22, +84,197,28,249,22,137,7,194,2,82,2,78,28,249,22,137,7,194,2,83,2, +84,248,22,172,12,193,27,248,22,93,195,27,249,22,147,13,2,110,195,28,192, +249,2,112,249,22,180,12,198,27,248,22,84,198,28,249,22,137,7,194,2,82, +2,78,28,249,22,137,7,194,2,83,2,84,248,22,172,12,193,248,22,93,195, +249,22,180,12,196,248,22,172,12,196,249,22,180,12,195,248,22,172,12,197,32, +113,89,162,8,64,38,49,2,76,222,28,248,22,63,196,248,22,133,11,249,22, +172,10,248,22,172,6,251,22,191,6,2,77,2,80,28,248,22,63,203,201,250, +22,1,22,180,12,204,205,200,247,22,21,27,249,22,180,12,248,22,58,199,196, +28,248,22,175,12,193,27,250,22,1,22,180,12,196,199,28,248,22,175,12,193, +192,251,2,113,198,199,200,248,22,59,202,251,2,113,197,198,199,248,22,59,201, +159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40, +20,96,114,66,35,37,109,105,115,99,2,1,10,10,10,46,80,158,34,34,20, +99,159,39,16,47,30,2,1,2,2,193,30,2,1,2,3,193,30,2,1,2, +4,193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7,193,30, +2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2, +11,193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30, +2,1,2,15,193,30,2,1,2,16,193,30,2,1,2,17,193,30,2,1,2, +18,193,30,2,1,2,19,193,30,2,1,2,20,193,30,2,21,1,20,112,97, +114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2, +21,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122, +97,116,105,111,110,3,30,2,1,2,22,193,30,2,1,2,23,193,30,2,1, +2,24,193,30,2,1,2,25,193,30,2,1,2,26,193,30,2,1,2,27,193, +30,2,1,2,28,193,30,2,1,2,29,193,30,2,1,2,30,193,30,2,1, +2,31,193,30,2,1,2,32,193,30,2,1,2,33,193,30,2,1,2,34,193, +30,2,1,2,35,193,30,2,1,2,36,193,30,2,1,2,37,193,30,2,1, +2,38,193,30,2,1,2,39,193,30,2,1,2,40,193,30,2,1,2,41,193, +30,2,1,2,42,193,30,2,1,2,43,193,30,2,1,2,44,193,30,2,1, +2,45,193,30,2,1,2,46,193,30,2,1,2,47,193,16,0,11,11,16,22, +2,16,2,15,2,17,2,10,2,29,2,27,2,28,2,30,2,31,2,25,2, +24,2,26,2,3,2,19,2,5,2,18,2,38,2,39,2,37,2,36,2,46, +2,35,56,11,16,24,2,41,2,43,2,42,2,22,2,20,2,14,2,33,2, +40,2,44,2,11,2,12,2,9,2,23,2,32,2,6,2,47,2,13,2,4, +2,2,2,34,2,7,2,8,2,45,2,48,16,24,11,11,11,11,11,11,11, +11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,16,24,2,41, +2,43,2,42,2,22,2,20,2,14,2,33,2,40,2,44,2,11,2,12,2, +9,2,23,2,32,2,6,2,47,2,13,2,4,2,2,2,34,2,7,2,8, +2,45,2,48,57,58,93,16,5,93,2,48,89,162,34,35,53,9,223,0,27, +249,22,152,3,20,15,159,37,34,41,196,27,28,248,80,158,37,34,194,249,80, +158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40, +34,193,249,80,158,41,35,248,80,158,42,36,195,27,248,80,158,43,37,196,28, +248,80,158,43,38,193,248,80,158,43,39,193,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,86,196,27,249,22,152,3,20,15,159,42,35, +41,249,22,152,3,203,247,22,54,27,249,22,152,3,20,15,159,43,36,41,249, +22,152,3,204,247,22,54,27,249,22,152,3,20,15,159,44,37,41,249,22,152, +3,205,247,22,54,27,252,22,67,202,199,198,201,200,254,80,158,50,40,20,15, +159,50,38,41,21,97,2,49,2,50,2,51,2,52,2,53,248,22,95,200,248, +22,84,200,248,22,58,200,248,22,93,200,248,22,96,200,250,22,175,8,11,6, +10,10,98,97,100,32,115,121,110,116,97,120,196,34,20,99,159,34,16,7,30, +2,54,69,115,116,120,45,112,97,105,114,63,11,30,2,54,67,99,111,110,115, +47,35,102,1,30,2,54,67,115,116,120,45,99,97,114,5,30,2,54,67,115, +116,120,45,99,100,114,6,30,2,54,69,115,116,120,45,108,105,115,116,63,8, +30,2,54,69,115,116,120,45,62,108,105,115,116,4,30,69,35,37,115,116,120, +99,97,115,101,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115, +117,98,115,116,105,116,117,116,101,0,16,5,33,93,33,97,33,98,33,99,33, +101,11,139,83,158,34,16,2,89,162,8,64,35,44,2,64,223,0,28,248,22, +63,194,9,27,248,22,58,195,27,28,248,22,186,12,194,193,28,248,22,185,12, +194,249,22,187,12,195,250,80,158,41,46,248,22,136,13,2,65,11,10,250,80, +158,39,46,248,22,136,13,2,65,196,10,28,192,249,22,57,248,22,189,12,249, +22,187,12,197,247,22,137,13,248,80,159,39,8,51,35,248,22,59,199,248,80, +159,37,8,51,35,248,22,59,197,80,159,34,8,51,35,83,158,34,16,2,89, +162,34,35,47,67,103,101,116,45,100,105,114,223,0,27,28,194,28,249,22,147, +8,196,80,158,37,8,29,80,158,35,8,30,27,248,22,156,7,248,22,50,197, +28,249,22,148,13,2,102,194,91,159,37,11,90,161,37,34,11,248,22,183,12, +248,22,172,12,250,22,140,7,200,35,248,22,134,7,201,87,95,83,160,36,11, +80,158,39,8,29,198,83,160,36,11,80,158,39,8,30,192,192,11,11,28,192, +192,27,247,22,161,5,28,192,192,247,22,137,13,80,159,34,8,50,35,83,158, +34,16,2,89,162,34,35,43,9,223,0,87,94,28,27,248,22,164,12,195,28, +192,192,28,248,22,143,6,195,27,248,22,184,12,196,28,192,192,248,22,185,12, +196,11,12,250,22,176,8,2,22,2,66,196,28,248,22,184,12,194,12,248,22, +133,11,249,22,142,10,248,22,172,6,250,22,191,6,2,67,2,22,200,247,22, +21,80,159,34,8,49,35,83,158,34,16,2,89,162,34,36,42,68,119,105,116, +104,45,100,105,114,223,0,20,14,159,80,158,34,53,250,80,158,37,54,249,22, +25,11,80,158,39,53,22,161,5,28,248,22,164,12,197,196,247,22,137,13,247, +194,80,159,34,8,48,35,83,158,34,16,2,89,162,8,36,37,38,66,103,101, +116,45,115,111,223,0,89,162,34,35,46,9,226,0,1,3,2,252,22,180,12, +199,201,2,68,247,22,163,7,28,198,249,80,159,44,36,35,199,80,158,44,50, +197,80,159,34,8,47,35,83,158,34,16,2,32,0,89,162,34,35,38,2,2, +222,27,248,22,164,12,194,28,192,192,28,248,22,143,6,194,27,248,22,184,12, +195,28,192,192,248,22,185,12,195,11,80,159,34,34,35,83,158,34,16,2,2, +103,80,159,34,35,35,83,158,34,16,2,89,162,34,36,48,2,4,223,0,87, +95,28,28,248,22,165,12,194,10,27,248,22,164,12,195,28,192,192,28,248,22, +143,6,195,27,248,22,184,12,196,28,192,192,248,22,185,12,196,11,12,252,22, +176,8,2,4,6,42,42,112,97,116,104,32,40,102,111,114,32,97,110,121,32, +115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,112,97,116,104, +32,115,116,114,105,110,103,34,198,199,28,28,248,22,143,6,195,10,248,22,131, +7,195,12,252,22,176,8,2,4,6,21,21,115,116,114,105,110,103,32,111,114, +32,98,121,116,101,32,115,116,114,105,110,103,35,198,199,91,159,37,11,90,161, +37,34,11,248,22,183,12,197,87,94,28,192,12,250,22,177,8,2,4,6,36, +36,99,97,110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32, +116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,199,27,249,22,173, +12,250,22,154,13,2,103,248,22,170,12,200,28,248,22,143,6,204,249,22,155, +7,205,8,63,203,28,248,22,165,12,200,248,22,166,12,200,247,22,167,12,28, +248,22,164,12,194,249,22,180,12,195,194,192,80,159,34,36,35,83,158,34,16, +2,249,22,145,6,7,92,7,92,80,159,34,37,35,83,158,34,16,2,89,162, +34,35,47,2,6,223,0,87,94,28,28,248,22,165,12,194,10,27,248,22,164, +12,195,28,192,192,28,248,22,143,6,195,27,248,22,184,12,196,28,192,192,248, +22,185,12,196,11,12,250,22,176,8,76,110,111,114,109,97,108,45,112,97,116, +104,45,99,97,115,101,6,42,42,112,97,116,104,32,40,102,111,114,32,97,110, +121,32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,112,97, +116,104,32,115,116,114,105,110,103,196,28,28,248,22,165,12,194,249,22,147,8, +248,22,166,12,196,2,69,249,22,147,8,247,22,162,7,2,69,27,28,248,22, +143,6,195,194,248,22,152,7,248,22,169,12,196,28,249,22,148,13,0,21,35, +114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34,194, +28,248,22,143,6,195,248,22,171,12,195,194,27,248,22,182,6,194,249,22,172, +12,248,22,155,7,250,22,155,13,0,6,35,114,120,34,47,34,28,249,22,148, +13,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92,92, +93,42,36,34,200,198,250,22,155,13,0,19,35,114,120,34,91,32,46,93,43, +40,91,47,92,92,93,42,41,36,34,201,6,2,2,92,49,80,158,42,37,2, +69,28,248,22,143,6,194,248,22,171,12,194,193,80,159,34,38,35,83,158,34, +16,2,91,159,36,11,90,161,35,35,11,32,0,89,162,8,64,35,38,65,99, +104,101,99,107,222,28,248,22,136,2,193,12,250,22,176,8,2,7,2,70,195, +20,12,95,35,89,162,8,36,36,53,2,7,223,0,87,95,28,248,22,136,2, +194,12,250,22,176,8,2,7,2,70,196,28,248,22,136,2,195,12,250,22,176, +8,2,7,2,70,197,27,248,22,183,2,196,27,249,22,180,2,197,195,27,249, +22,179,2,198,196,28,249,22,188,2,198,198,28,250,22,191,2,196,34,195,28, +248,22,139,2,197,34,0,3,48,46,48,28,248,22,131,3,194,248,22,180,2, +27,248,22,180,2,195,27,248,22,180,2,197,28,248,22,138,2,194,193,27,248, +22,151,2,195,27,248,22,151,2,195,28,249,22,189,2,195,194,248,22,177,2, +194,249,22,179,2,195,248,22,182,2,249,205,248,22,182,2,249,22,180,2,202, +201,248,22,182,2,249,22,180,2,203,201,28,248,22,138,2,194,193,27,248,22, +151,2,195,27,248,22,151,2,195,28,249,22,189,2,195,194,248,22,177,2,194, +249,22,179,2,195,248,22,182,2,249,202,248,22,182,2,249,22,180,2,202,201, +248,22,182,2,249,22,180,2,203,201,0,6,43,110,97,110,46,48,89,162,8, +36,36,54,72,102,105,110,100,45,98,101,116,119,101,101,110,223,0,28,248,22, +138,2,194,193,27,248,22,151,2,195,27,248,22,151,2,197,28,249,22,189,2, +195,194,248,22,177,2,194,249,22,179,2,195,248,22,182,2,27,248,22,182,2, +249,22,180,2,203,200,27,248,22,182,2,249,22,180,2,203,201,28,248,22,138, +2,194,193,27,248,22,151,2,195,27,248,22,151,2,195,28,249,22,189,2,195, +194,248,22,177,2,194,249,22,179,2,195,248,22,182,2,249,206,248,22,182,2, +249,22,180,2,202,201,248,22,182,2,249,22,180,2,203,201,80,159,34,39,35, +83,158,34,16,2,32,0,89,162,34,34,35,2,8,222,247,2,104,80,159,34, +40,35,83,158,34,16,2,32,0,89,162,34,35,45,2,9,222,87,94,28,27, +248,22,164,12,194,28,192,192,28,248,22,143,6,194,27,248,22,184,12,195,28, +192,192,248,22,185,12,195,11,12,250,22,176,8,2,9,6,25,25,112,97,116, +104,32,111,114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108, +41,195,91,159,37,11,90,161,37,34,11,248,22,183,12,196,28,194,248,22,133, +11,249,22,172,10,248,22,172,6,249,22,191,6,6,36,36,108,111,97,100,47, +99,100,58,32,99,97,110,110,111,116,32,111,112,101,110,32,97,32,100,105,114, +101,99,116,111,114,121,58,32,126,115,201,247,22,21,28,248,22,164,12,193,87, +94,28,248,22,175,12,193,12,248,22,133,11,249,22,172,10,248,22,172,6,250, +22,191,6,6,65,65,108,111,97,100,47,99,100,58,32,100,105,114,101,99,116, 111,114,121,32,111,102,32,126,115,32,100,111,101,115,32,110,111,116,32,101,120, 105,115,116,32,40,99,117,114,114,101,110,116,32,100,105,114,101,99,116,111,114, -121,32,105,115,32,126,115,41,194,202,247,22,252,73,3,247,22,21,27,247,22, -252,73,3,250,22,37,89,162,34,34,36,9,223,4,248,22,252,73,3,193,89, -162,34,34,36,9,223,5,248,22,252,95,1,193,89,162,34,34,36,9,223,3, -248,22,252,73,3,193,248,22,252,95,1,196,83,159,34,93,80,159,34,42,35, -32,195,89,162,34,37,41,2,20,222,87,94,28,27,248,22,252,36,3,196,28, -192,192,28,248,22,252,143,1,196,27,248,22,252,56,3,197,28,192,192,248,22, -252,57,3,197,11,12,250,22,252,48,2,196,6,25,25,112,97,116,104,32,111, -114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,196,197, -28,248,22,252,58,3,195,248,193,195,27,247,22,252,97,1,248,194,28,193,249, -22,252,59,3,198,195,196,83,159,34,93,80,159,34,43,35,89,162,34,35,40, -2,22,223,0,87,94,28,27,248,22,252,36,3,195,28,192,192,28,248,22,252, -143,1,195,27,248,22,252,56,3,196,28,192,192,248,22,252,57,3,196,11,12, -250,22,252,48,2,2,22,2,196,196,28,248,22,252,58,3,194,248,22,252,95, -1,194,27,247,22,252,97,1,248,22,252,95,1,28,193,249,22,252,59,3,197, -195,195,83,159,34,93,80,159,34,44,35,89,162,34,35,40,2,24,223,0,87, -94,28,27,248,22,252,36,3,195,28,192,192,28,248,22,252,143,1,195,27,248, -22,252,56,3,196,28,192,192,248,22,252,57,3,196,11,12,250,22,252,48,2, -2,24,2,196,196,28,248,22,252,58,3,194,248,22,252,77,3,194,27,247,22, -252,97,1,248,22,252,77,3,28,193,249,22,252,59,3,197,195,195,83,159,34, -93,80,159,34,45,35,27,248,22,252,79,3,248,22,252,218,1,27,27,247,22, -252,226,1,28,249,22,78,194,21,96,64,117,110,105,120,197,64,98,101,111,115, -198,65,111,115,107,105,116,199,66,109,97,99,111,115,120,200,6,1,1,58,201, -28,249,22,78,194,21,94,2,172,65,109,97,99,111,115,202,6,1,1,59,203, -12,250,22,252,191,1,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46, -42,41,204,195,195,89,162,8,36,36,42,2,26,223,0,87,95,28,28,248,22, -252,195,1,194,10,248,22,252,143,1,194,12,250,22,252,48,2,2,26,6,21, -21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116,114,105,110, -103,205,196,28,28,248,22,64,195,249,22,4,22,252,36,3,196,11,12,250,22, -252,48,2,2,26,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115, -206,197,250,32,207,89,162,8,64,37,44,2,156,222,27,249,22,252,83,3,196, -197,28,192,27,248,22,84,194,27,250,2,207,198,199,248,22,93,198,28,249,22, -252,201,1,195,5,0,208,249,22,71,197,194,249,22,57,248,22,252,44,3,196, -194,28,249,22,252,201,1,197,2,208,249,22,71,195,9,249,22,57,248,22,252, -44,3,198,9,197,195,28,248,22,252,143,1,197,248,22,252,218,1,197,196,83, -159,34,93,80,159,34,46,35,83,158,37,20,93,96,2,28,89,162,8,36,37, -49,9,223,0,87,95,28,27,248,22,252,36,3,195,28,192,192,28,248,22,252, -143,1,195,27,248,22,252,56,3,196,28,192,192,248,22,252,57,3,196,11,12, -250,22,252,48,2,2,28,6,25,25,112,97,116,104,32,111,114,32,115,116,114, -105,110,103,32,40,115,97,110,115,32,110,117,108,41,209,196,28,28,194,28,27, -248,22,252,36,3,196,28,192,192,28,248,22,252,143,1,196,27,248,22,252,56, -3,197,28,192,192,248,22,252,57,3,197,11,248,22,252,56,3,195,11,10,12, -250,22,252,48,2,2,28,6,29,29,35,102,32,111,114,32,114,101,108,97,116, -105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,210,197,28, -28,248,22,252,56,3,194,91,159,37,11,90,161,37,34,11,248,22,252,55,3, -197,249,22,252,19,2,194,68,114,101,108,97,116,105,118,101,211,11,27,248,22, -252,224,1,6,4,4,80,65,84,72,212,27,28,193,27,249,80,158,39,45,196, -9,28,249,22,252,19,2,247,22,252,226,1,2,172,249,22,57,248,22,252,44, -3,5,1,46,213,194,192,9,28,248,22,63,193,11,27,248,22,252,59,3,248, -22,58,195,27,249,22,252,52,3,195,199,28,248,22,252,46,3,193,250,32,214, -89,162,8,100,37,48,70,102,111,117,110,100,45,101,120,101,99,215,222,28,192, -91,159,37,11,90,161,37,34,11,248,22,252,55,3,198,27,28,197,27,248,22, -252,60,3,200,28,249,22,252,21,2,194,201,11,28,248,22,252,56,3,193,250, -2,214,200,201,249,22,252,52,3,199,197,250,2,214,200,201,195,11,28,192,192, -27,28,248,22,252,36,3,195,27,249,22,252,52,3,197,200,28,28,248,22,252, -47,3,193,10,248,22,252,46,3,193,192,11,11,28,192,192,28,198,11,27,248, -22,252,60,3,201,28,249,22,252,21,2,194,202,11,28,248,22,252,56,3,193, -250,2,214,201,202,249,22,252,52,3,200,197,250,2,214,201,202,195,194,201,202, -195,251,32,216,89,162,8,100,38,48,2,156,222,28,248,22,63,196,11,27,248, -22,252,59,3,248,22,58,198,27,249,22,252,52,3,195,196,28,248,22,252,46, -3,193,250,2,214,198,199,195,27,248,22,59,199,28,248,22,63,193,11,27,248, -22,252,59,3,248,22,58,195,27,249,22,252,52,3,195,199,28,248,22,252,46, -3,193,250,2,214,201,202,195,251,2,216,201,202,203,248,22,59,199,201,202,203, -248,22,59,199,27,248,22,252,59,3,195,28,248,22,252,46,3,193,250,2,214, -198,199,195,11,89,162,34,36,40,9,223,0,250,80,158,37,46,196,197,11,89, -162,34,35,39,9,223,0,250,80,158,37,46,196,11,11,83,159,34,93,80,159, -34,47,35,32,217,89,162,34,36,43,2,30,222,87,94,28,27,248,22,252,36, -3,195,28,192,192,28,248,22,252,143,1,195,27,248,22,252,56,3,196,28,192, -192,248,22,252,57,3,196,11,12,250,22,252,48,2,195,2,160,196,28,248,22, -252,56,3,194,12,248,22,252,197,2,249,22,252,142,2,248,22,252,172,1,250, -22,252,191,1,2,161,199,200,247,22,21,83,159,34,93,80,159,34,48,35,89, -162,34,37,45,2,32,223,0,87,94,87,94,28,27,248,22,252,36,3,196,28, -192,192,28,248,22,252,143,1,196,27,248,22,252,56,3,197,28,192,192,248,22, -252,57,3,197,11,12,250,22,252,48,2,196,2,160,197,28,248,22,252,56,3, -195,12,248,22,252,197,2,249,22,252,142,2,248,22,252,172,1,250,22,252,191, -1,2,161,200,201,247,22,21,249,22,3,89,162,34,35,44,9,224,2,3,87, -94,28,27,248,22,252,36,3,196,28,192,192,28,248,22,252,143,1,196,27,248, -22,252,56,3,197,28,192,192,248,22,252,57,3,197,11,12,250,22,252,48,2, -195,2,160,197,28,248,22,252,56,3,195,12,248,22,252,197,2,249,22,252,142, -2,248,22,252,172,1,250,22,252,191,1,2,161,199,201,247,22,21,197,83,159, -34,93,80,159,34,49,35,32,218,89,162,34,37,44,2,34,222,27,247,22,252, -74,3,252,32,219,89,162,8,64,39,50,65,99,108,111,111,112,220,222,28,248, -22,63,197,248,22,252,197,2,249,22,252,172,2,248,22,252,172,1,251,22,252, -191,1,6,42,42,126,97,58,32,99,111,108,108,101,99,116,105,111,110,32,110, -111,116,32,102,111,117,110,100,58,32,126,115,32,105,110,32,97,110,121,32,111, -102,58,32,126,115,221,201,28,248,22,63,204,202,250,22,1,22,252,52,3,205, -206,200,247,22,21,27,249,22,252,52,3,248,22,58,200,197,28,248,22,252,47, -3,193,27,250,22,1,22,252,52,3,196,200,28,248,22,252,47,3,193,192,252, -2,219,199,200,201,202,248,22,59,204,252,2,219,198,199,200,201,248,22,59,203, -197,198,199,200,197,83,159,34,93,80,159,34,50,35,27,247,22,252,226,1,28, -249,22,252,19,2,194,2,172,5,4,46,100,108,108,222,28,249,22,78,194,21, -94,2,200,2,202,5,6,46,100,121,108,105,98,223,5,3,46,115,111,224,83, -159,34,93,80,159,34,51,35,249,80,159,36,36,35,248,22,252,44,3,5,10, -95,108,111,97,100,101,114,46,115,115,225,80,158,36,50,83,159,34,93,80,159, -34,52,35,249,22,252,231,2,27,89,162,34,36,8,28,1,25,100,101,102,97, -117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100, -226,223,3,87,94,28,27,248,22,252,36,3,195,28,192,192,28,248,22,252,143, -1,195,27,248,22,252,56,3,196,28,192,192,248,22,252,57,3,196,11,12,250, -22,252,48,2,2,49,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105, -100,45,112,97,116,104,32,115,116,114,105,110,103,227,196,91,159,40,11,90,161, -35,34,11,28,248,22,252,58,3,200,199,27,247,22,252,97,1,28,192,249,22, -252,59,3,202,194,200,90,161,37,35,11,248,22,252,55,3,193,90,161,35,38, -11,28,249,22,252,19,2,195,2,211,64,115,97,109,101,228,193,90,161,35,39, -11,247,22,252,75,3,27,89,162,34,35,43,62,122,111,229,225,7,5,3,250, -22,252,52,3,196,198,249,80,159,41,36,35,197,5,3,46,122,111,230,27,89, -162,34,35,45,9,225,8,6,4,252,22,252,52,3,198,200,2,164,247,22,252, -227,1,249,80,159,43,36,35,199,80,158,43,50,27,27,80,158,44,51,89,162, -34,35,43,9,225,10,8,0,252,22,252,52,3,198,200,2,164,247,22,252,227, -1,197,27,249,22,5,89,162,34,35,41,9,223,6,27,193,27,250,22,252,68, -3,196,11,32,231,89,162,8,44,34,34,9,222,11,28,192,249,22,57,195,194, -11,203,27,27,28,195,27,249,22,5,89,162,34,35,41,9,223,6,27,248,194, -195,27,250,22,252,68,3,196,11,32,232,89,162,8,44,34,34,9,222,11,28, -192,249,22,57,195,194,11,206,27,28,196,11,193,28,192,192,28,193,28,196,28, -249,22,192,248,22,59,196,248,22,59,199,193,11,11,11,11,28,192,27,248,22, -252,77,3,248,22,58,195,91,159,36,11,90,161,36,34,11,248,195,248,22,48, -248,22,252,217,1,248,22,252,41,3,249,80,159,55,36,35,23,17,5,0,233, -28,192,87,94,28,23,17,28,249,22,252,19,2,195,23,19,12,248,22,252,197, -2,249,22,252,139,2,248,22,252,172,1,251,22,252,191,1,6,81,81,108,111, -97,100,45,101,120,116,101,110,115,105,111,110,58,32,101,120,112,101,99,116,101, -100,32,109,111,100,117,108,101,32,100,101,99,108,97,114,97,116,105,111,110,32, -102,111,114,32,96,126,97,39,44,32,102,111,117,110,100,32,126,97,32,116,104, -114,111,117,103,104,32,108,111,97,100,101,114,58,32,126,101,234,23,25,28,201, -249,22,252,191,1,6,27,27,109,111,100,117,108,101,32,100,101,99,108,97,114, -97,116,105,111,110,32,102,111,114,32,96,126,97,39,235,203,6,4,4,110,111, -110,101,236,248,22,58,204,247,22,21,12,192,11,11,28,192,249,80,159,47,8, -48,35,203,194,27,28,196,27,249,22,5,89,162,34,35,41,9,223,7,27,248, -194,195,27,250,22,252,68,3,196,11,32,237,89,162,8,44,34,34,9,222,11, -28,192,249,22,57,195,194,11,206,27,28,196,11,193,28,192,192,28,193,28,196, -28,249,22,192,248,22,59,196,248,22,59,199,193,11,11,11,11,28,192,249,80, -159,48,8,48,35,204,89,162,34,34,39,9,224,16,2,249,247,22,252,78,3, -248,22,58,195,195,27,28,198,27,249,22,5,89,162,34,35,41,9,223,9,27, -248,194,195,27,250,22,252,68,3,196,11,32,238,89,162,8,44,34,34,9,222, -11,28,192,249,22,57,195,194,11,23,15,27,28,197,11,193,28,192,192,28,193, -28,197,28,249,22,192,248,22,59,196,248,22,59,200,193,11,11,11,11,28,192, -249,80,159,49,8,48,35,205,89,162,34,34,39,9,224,17,2,249,247,22,252, -96,1,248,22,58,195,195,249,80,159,49,8,48,35,205,89,162,34,34,38,9, -224,17,9,249,247,22,252,96,1,194,195,192,32,239,89,162,8,36,35,38,9, -222,87,94,28,28,248,22,0,193,249,22,40,194,36,11,12,250,22,252,48,2, -2,40,6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121, -32,50,41,240,195,192,83,159,34,93,80,159,34,55,35,89,162,8,37,36,44, -2,47,223,0,87,94,87,94,87,94,28,27,248,22,252,36,3,195,28,192,192, -28,248,22,252,143,1,195,27,248,22,252,56,3,196,28,192,192,248,22,252,57, -3,196,11,12,250,22,252,48,2,2,47,2,160,196,28,248,22,252,56,3,194, -12,248,22,252,197,2,249,22,252,142,2,248,22,252,172,1,250,22,252,191,1, -2,161,2,47,200,247,22,21,249,22,3,80,159,36,8,49,35,196,27,247,22, -252,74,3,251,32,241,89,162,8,64,38,49,2,220,222,28,248,22,63,196,248, -22,252,197,2,249,22,252,172,2,248,22,252,172,1,251,22,252,191,1,2,221, -2,47,28,248,22,63,203,201,250,22,1,22,252,52,3,204,205,200,247,22,21, -27,249,22,252,52,3,248,22,58,199,196,28,248,22,252,47,3,193,27,250,22, -1,22,252,52,3,196,199,28,248,22,252,47,3,193,192,251,2,241,198,199,200, -248,22,59,202,251,2,241,197,198,199,248,22,59,201,196,198,199,196,83,159,34, -93,80,159,34,56,35,89,162,34,35,38,2,49,223,0,249,247,80,158,36,52, -195,11,248,22,252,14,3,32,242,89,162,8,36,35,35,1,20,100,101,102,97, -117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100,243,222,192,83,159, -34,93,80,159,34,57,35,33,17,35,114,120,35,34,40,46,43,63,41,47,43, -40,46,42,41,34,244,83,159,34,93,80,159,34,58,35,2,159,83,159,34,93, -80,159,34,59,35,33,45,35,114,120,35,34,94,91,45,97,45,122,65,45,90, -48,45,57,95,46,32,93,43,40,47,43,91,45,97,45,122,65,45,90,48,45, -57,95,46,32,93,43,41,42,36,34,245,83,159,34,93,80,159,34,8,26,35, -248,22,116,64,119,101,97,107,246,83,159,34,93,80,159,34,8,27,35,249,22, -116,2,246,65,101,113,117,97,108,247,83,159,34,93,80,159,34,8,28,35,247, -22,54,83,159,34,93,80,158,34,8,29,11,83,159,34,93,80,158,34,8,30, -11,83,159,34,93,80,159,34,8,31,35,89,162,8,36,35,38,2,67,223,0, -91,159,36,10,90,161,35,34,10,11,90,161,35,35,10,83,158,37,20,93,96, -1,29,115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45,110,97,109, -101,45,114,101,115,111,108,118,101,114,248,89,162,8,36,35,44,9,224,2,0, -87,94,28,207,248,208,195,12,27,27,250,22,122,80,158,40,8,26,248,22,252, -101,3,247,22,252,222,2,11,28,192,192,27,247,22,116,87,94,250,22,121,80, -158,41,8,26,248,22,252,101,3,247,22,252,222,2,195,192,250,22,121,195,198, -66,97,116,116,97,99,104,249,89,162,34,37,42,9,223,1,251,211,197,198,199, -10,89,162,34,38,8,28,9,225,2,3,0,28,28,248,22,56,196,249,22,252, -19,2,248,22,58,198,66,112,108,97,110,101,116,250,11,87,94,28,207,12,20, -14,159,80,158,36,53,250,80,158,39,54,249,22,25,11,80,158,41,53,22,252, -222,2,196,90,161,35,34,10,249,22,242,21,95,63,108,105,98,251,6,11,11, -114,101,115,111,108,118,101,114,46,115,115,252,252,0,6,6,6,112,108,97,110, -101,116,252,253,0,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101,45, -110,97,109,101,45,114,101,115,111,108,118,101,114,252,254,0,12,251,211,199,200, -201,202,27,28,248,22,252,143,1,197,27,248,80,159,39,8,50,35,199,27,250, -22,122,80,158,42,8,27,249,22,57,203,198,11,28,192,192,27,248,22,252,218, -1,200,28,249,22,252,84,3,2,245,194,27,249,22,252,83,3,2,244,195,28, -192,249,32,252,255,0,89,162,8,64,36,47,2,156,222,27,249,22,252,83,3, -2,244,196,28,192,27,249,22,252,52,3,196,27,248,22,84,197,28,249,22,252, -201,1,194,5,1,46,252,0,1,2,228,28,249,22,252,201,1,194,5,2,46, -46,252,1,1,62,117,112,252,2,1,248,22,252,44,3,193,27,248,22,93,195, -27,249,22,252,83,3,2,244,195,28,192,249,2,252,255,0,249,22,252,52,3, -198,27,248,22,84,198,28,249,22,252,201,1,194,2,252,0,1,2,228,28,249, -22,252,201,1,194,2,252,1,1,2,252,2,1,248,22,252,44,3,193,248,22, -93,195,249,22,252,52,3,196,248,22,252,44,3,196,249,22,252,52,3,195,248, -22,252,44,3,197,249,22,252,52,3,199,27,248,22,84,198,28,249,22,252,201, -1,194,2,252,0,1,2,228,28,249,22,252,201,1,194,2,252,1,1,2,252, -2,1,248,22,252,44,3,193,248,22,93,195,249,22,252,52,3,197,248,22,252, -44,3,196,248,22,65,249,22,252,166,1,6,72,72,32,40,114,101,108,97,116, -105,118,101,32,115,116,114,105,110,103,32,102,111,114,109,32,109,117,115,116,32, -99,111,110,116,97,105,110,32,111,110,108,121,32,97,45,122,44,32,65,45,90, -44,32,48,45,57,44,32,45,44,32,95,44,32,46,44,32,47,44,32,97,110, -100,32,252,3,1,6,37,37,115,112,97,99,101,44,32,119,105,116,104,32,110, -111,32,108,101,97,100,105,110,103,32,111,114,32,116,114,97,105,108,105,110,103, -32,47,41,252,4,1,28,248,22,252,36,3,197,28,248,22,252,57,3,197,196, -248,22,65,6,25,25,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101, -32,97,98,115,111,108,117,116,101,41,252,5,1,28,28,248,22,56,197,248,22, -252,17,2,248,22,64,198,10,11,28,249,22,252,19,2,248,22,58,199,2,251, -27,250,22,122,80,158,41,8,27,249,22,57,202,247,22,252,74,3,11,28,192, -192,27,27,248,22,70,200,28,249,22,188,194,36,248,22,65,6,5,5,109,122, -108,105,98,252,6,1,28,249,22,190,194,36,248,22,86,200,11,28,192,28,249, -22,4,32,252,7,1,89,162,34,35,36,9,222,28,248,22,252,143,1,193,248, -22,252,56,3,193,11,194,28,248,22,252,143,1,248,22,84,200,28,248,22,252, -56,3,248,22,84,200,27,27,248,22,58,195,27,248,22,59,196,27,247,22,252, -74,3,251,32,252,8,1,89,162,8,64,38,49,2,220,222,28,248,22,63,196, -248,22,252,197,2,249,22,252,172,2,248,22,252,172,1,251,22,252,191,1,2, -221,2,248,28,248,22,63,203,201,250,22,1,22,252,52,3,204,205,200,247,22, -21,27,249,22,252,52,3,248,22,58,199,196,28,248,22,252,47,3,193,27,250, -22,1,22,252,52,3,196,199,28,248,22,252,47,3,193,192,251,2,252,8,1, -198,199,200,248,22,59,202,251,2,252,8,1,197,198,199,248,22,59,201,196,198, -197,196,249,22,252,52,3,194,248,22,84,202,11,11,11,11,28,249,22,252,19, -2,248,22,58,199,64,102,105,108,101,252,9,1,28,249,22,188,248,22,70,199, -36,27,248,22,84,198,28,248,22,252,143,1,193,28,27,248,22,252,36,3,194, -28,192,192,28,248,22,252,143,1,194,27,248,22,252,56,3,195,28,192,192,248, -22,252,57,3,195,11,249,22,252,59,3,194,248,80,159,41,8,50,35,201,11, -11,11,11,87,94,28,28,248,22,252,36,3,193,10,248,22,252,229,1,193,12, -28,198,250,22,252,47,2,67,114,101,113,117,105,114,101,252,10,1,249,22,252, -191,1,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126, -97,252,11,1,28,197,248,22,58,198,6,0,0,252,12,1,201,250,22,252,48, -2,2,248,249,22,252,191,1,6,13,13,109,111,100,117,108,101,32,112,97,116, -104,126,97,252,13,1,28,197,248,22,58,198,6,0,0,252,14,1,199,27,28, -248,22,252,229,1,194,249,22,252,234,1,195,34,248,22,252,61,3,248,22,252, -62,3,195,27,28,248,22,252,229,1,195,249,22,252,234,1,196,35,248,80,159, -40,38,35,194,91,159,37,11,90,161,37,34,11,28,248,22,252,229,1,198,250, -22,7,67,105,103,110,111,114,101,100,252,15,1,249,22,252,234,1,202,36,2, -252,15,1,248,22,252,55,3,197,27,28,248,22,252,229,1,199,249,22,252,234, -1,200,37,249,80,159,45,36,35,196,5,0,252,16,1,27,28,248,22,252,229, -1,200,249,22,252,234,1,201,38,249,22,252,191,1,6,3,3,44,126,97,252, -17,1,248,22,252,217,1,248,22,252,41,3,248,80,159,49,38,35,199,27,28, -248,22,252,229,1,201,249,22,252,234,1,202,39,248,22,48,249,22,252,166,1, -196,248,22,252,217,1,248,22,252,41,3,199,27,28,248,22,252,229,1,202,249, -22,252,234,1,203,40,27,249,22,252,83,3,2,166,248,22,252,41,3,201,28, -192,248,22,58,193,10,27,27,250,22,122,80,158,51,8,26,248,22,252,101,3, -247,22,252,222,2,11,28,192,192,27,247,22,116,87,94,250,22,121,80,158,52, -8,26,248,22,252,101,3,247,22,252,222,2,195,192,87,95,28,23,17,27,250, -22,122,196,198,11,87,94,28,192,28,28,248,22,47,193,10,249,22,252,21,2, -196,194,12,252,22,252,45,2,2,248,6,71,71,109,111,100,117,108,101,32,112, -114,101,118,105,111,117,115,108,121,32,108,111,97,100,101,100,32,119,105,116,104, -32,115,117,102,102,105,120,32,126,115,44,32,99,97,110,110,111,116,32,108,111, -97,100,32,119,105,116,104,32,115,117,102,102,105,120,32,126,115,58,32,126,101, -252,18,1,28,249,22,252,19,2,10,199,6,0,0,252,19,1,197,28,249,22, -252,19,2,10,201,6,0,0,252,20,1,199,23,15,12,28,192,12,87,95,27, -249,22,23,247,22,21,80,158,51,8,28,27,247,22,252,222,2,249,22,3,89, -162,34,35,48,9,226,13,14,2,3,28,249,22,252,21,2,248,22,59,199,197, -28,249,22,252,19,2,248,22,58,199,195,251,22,252,45,2,2,248,6,26,26, -99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126, -101,58,32,126,101,252,21,1,198,249,22,2,22,59,248,22,73,249,22,57,205, -201,12,12,195,27,248,22,48,198,20,14,159,80,158,49,8,28,249,22,57,247, -22,252,222,2,204,20,14,159,80,158,49,53,250,80,158,52,54,249,22,25,11, -80,158,54,53,22,241,195,249,247,80,158,51,52,205,248,22,48,248,22,252,217, -1,248,22,252,41,3,203,250,22,121,196,198,197,12,28,28,248,22,252,229,1, -203,11,27,248,22,252,143,1,23,16,28,192,192,28,248,22,56,23,16,249,22, -252,19,2,248,22,58,23,18,2,251,11,250,22,121,80,158,50,8,27,28,248, -22,252,143,1,23,18,249,22,57,23,19,248,80,159,53,8,50,35,23,21,249, -22,57,23,19,247,22,252,74,3,254,22,252,231,1,23,19,23,18,23,16,206, -205,204,203,12,194,208,83,159,34,93,80,159,34,8,32,35,83,158,37,20,93, -95,2,69,89,162,34,34,36,9,223,0,248,80,158,35,8,32,9,89,162,34, -35,47,9,223,0,27,247,22,252,76,3,249,80,158,37,45,28,194,27,248,22, -252,224,1,6,11,11,80,76,84,67,79,76,76,69,67,84,83,252,22,1,28, -192,192,6,0,0,252,23,1,6,0,0,252,24,1,27,28,195,250,22,252,52, -3,248,22,252,72,3,69,97,100,100,111,110,45,100,105,114,252,25,1,247,22, -252,222,1,6,8,8,99,111,108,108,101,99,116,115,252,26,1,11,27,248,80, -159,40,8,51,35,249,22,71,201,248,22,65,248,22,252,72,3,72,99,111,108, -108,101,99,116,115,45,100,105,114,252,27,1,28,193,249,22,57,195,194,192,83, -159,34,93,80,159,34,8,33,35,32,252,28,1,89,162,8,36,35,37,2,71, -222,27,248,22,252,11,1,194,28,192,192,248,22,252,12,1,194,83,159,34,97, -80,159,34,8,34,35,80,159,34,8,35,35,80,159,34,8,36,35,80,159,34, -8,37,35,80,159,34,8,38,35,26,9,22,252,102,2,63,101,118,116,252,29, -1,11,35,34,11,248,22,65,249,22,57,22,252,98,2,34,247,22,252,125,2, -11,21,93,34,83,159,34,93,80,159,34,8,39,35,89,162,34,35,39,2,83, -223,0,87,94,28,28,248,22,0,194,249,22,40,195,34,11,12,250,22,252,48, -2,2,83,6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116, -121,32,48,41,252,30,1,196,248,80,158,35,8,35,89,162,34,35,36,9,223, -2,247,192,83,159,34,93,80,159,34,8,40,35,32,252,31,1,89,162,34,35, -38,2,85,222,87,94,28,248,22,252,8,3,193,12,250,22,252,48,2,2,85, -6,7,7,99,104,97,110,110,101,108,252,32,1,195,248,22,252,249,2,193,83, -159,34,93,80,159,34,8,41,35,32,252,33,1,89,162,34,35,38,2,87,222, -87,94,28,248,22,252,8,3,193,12,250,22,252,48,2,2,87,6,7,7,99, -104,97,110,110,101,108,252,34,1,195,249,22,252,250,2,34,194,83,159,34,93, -80,159,34,8,42,35,32,252,35,1,89,162,34,36,39,2,89,222,87,94,28, -248,22,252,8,3,193,12,250,22,252,48,2,2,89,6,7,7,99,104,97,110, -110,101,108,252,36,1,195,28,248,22,252,249,2,249,22,252,7,3,195,196,12, -11,83,159,34,93,80,159,34,8,43,35,32,252,37,1,89,162,34,34,34,2, -91,222,247,22,252,222,2,83,159,34,93,80,159,34,8,44,35,89,162,34,35, -39,2,93,223,0,87,94,28,249,22,188,195,39,12,250,22,252,48,2,2,93, -6,1,1,53,252,38,1,196,248,80,158,35,8,45,11,83,159,34,93,80,159, -34,8,46,35,89,162,34,35,39,2,97,223,0,87,94,28,249,22,188,195,39, -12,250,22,252,48,2,2,97,6,1,1,53,252,39,1,196,248,80,158,35,8, -45,10,83,159,34,93,80,159,34,8,45,35,89,162,8,36,35,43,2,95,223, -0,27,248,22,252,200,2,65,101,109,112,116,121,252,40,1,27,247,22,252,200, -2,87,94,20,14,159,80,158,36,53,250,80,158,39,54,249,22,25,11,80,158, -41,53,22,252,222,2,196,87,96,249,22,246,194,66,35,37,114,53,114,115,252, -41,1,248,22,244,2,252,41,1,248,22,245,21,95,64,111,110,108,121,252,42, -1,68,109,122,115,99,104,101,109,101,252,43,1,72,115,121,110,116,97,120,45, -114,117,108,101,115,252,44,1,28,195,12,249,22,3,32,252,45,1,89,162,34, -35,39,9,222,249,22,252,98,3,194,249,22,242,2,252,43,1,196,21,15,203, -63,99,97,114,252,46,1,63,99,100,114,252,47,1,64,99,97,97,114,252,48, -1,64,99,97,100,114,252,49,1,64,99,100,97,114,252,50,1,64,99,100,100, -114,252,51,1,65,99,97,97,97,114,252,52,1,65,99,97,97,100,114,252,53, -1,65,99,97,100,97,114,252,54,1,65,99,97,100,100,114,252,55,1,65,99, -100,97,97,114,252,56,1,65,99,100,97,100,114,252,57,1,65,99,100,100,97, -114,252,58,1,65,99,100,100,100,114,252,59,1,66,99,97,97,97,97,114,252, -60,1,66,99,97,97,97,100,114,252,61,1,66,99,97,97,100,97,114,252,62, -1,66,99,97,97,100,100,114,252,63,1,66,99,97,100,97,97,114,252,64,1, -66,99,97,100,97,100,114,252,65,1,66,99,97,100,100,97,114,252,66,1,66, -99,97,100,100,100,114,252,67,1,66,99,100,97,97,97,114,252,68,1,66,99, -100,97,97,100,114,252,69,1,66,99,100,97,100,97,114,252,70,1,66,99,100, -97,100,100,114,252,71,1,66,99,100,100,97,97,114,252,72,1,66,99,100,100, -97,100,114,252,73,1,66,99,100,100,100,97,114,252,74,1,66,99,100,100,100, -100,114,252,75,1,63,109,97,112,252,76,1,61,61,252,77,1,61,60,252,78, -1,61,62,252,79,1,62,60,61,252,80,1,62,62,61,252,81,1,63,109,97, -120,252,82,1,63,109,105,110,252,83,1,61,43,252,84,1,61,45,252,85,1, -61,42,252,86,1,61,47,252,87,1,63,97,98,115,252,88,1,63,103,99,100, -252,89,1,63,108,99,109,252,90,1,63,101,120,112,252,91,1,63,108,111,103, -252,92,1,63,115,105,110,252,93,1,63,99,111,115,252,94,1,63,116,97,110, -252,95,1,63,110,111,116,252,96,1,63,101,113,63,252,97,1,1,30,99,97, -108,108,45,119,105,116,104,45,99,117,114,114,101,110,116,45,99,111,110,116,105, -110,117,97,116,105,111,110,252,98,1,71,109,97,107,101,45,115,116,114,105,110, -103,252,99,1,74,115,121,109,98,111,108,45,62,115,116,114,105,110,103,252,100, -1,74,115,116,114,105,110,103,45,62,115,121,109,98,111,108,252,101,1,76,109, -97,107,101,45,114,101,99,116,97,110,103,117,108,97,114,252,102,1,74,101,120, -97,99,116,45,62,105,110,101,120,97,99,116,252,103,1,74,105,110,101,120,97, -99,116,45,62,101,120,97,99,116,252,104,1,74,110,117,109,98,101,114,45,62, -115,116,114,105,110,103,252,105,1,74,115,116,114,105,110,103,45,62,110,117,109, -98,101,114,252,106,1,2,14,72,111,117,116,112,117,116,45,112,111,114,116,63, -252,107,1,78,99,117,114,114,101,110,116,45,105,110,112,117,116,45,112,111,114, -116,252,108,1,79,99,117,114,114,101,110,116,45,111,117,116,112,117,116,45,112, -111,114,116,252,109,1,78,99,117,114,114,101,110,116,45,101,114,114,111,114,45, -112,111,114,116,252,110,1,75,111,112,101,110,45,105,110,112,117,116,45,102,105, -108,101,252,111,1,76,111,112,101,110,45,111,117,116,112,117,116,45,102,105,108, -101,252,112,1,76,99,108,111,115,101,45,105,110,112,117,116,45,112,111,114,116, -252,113,1,77,99,108,111,115,101,45,111,117,116,112,117,116,45,112,111,114,116, -252,114,1,79,119,105,116,104,45,111,117,116,112,117,116,45,116,111,45,102,105, -108,101,252,115,1,73,116,114,97,110,115,99,114,105,112,116,45,111,110,252,116, -1,74,116,114,97,110,115,99,114,105,112,116,45,111,102,102,252,117,1,72,102, -108,117,115,104,45,111,117,116,112,117,116,252,118,1,73,115,116,114,105,110,103, -45,108,101,110,103,116,104,252,119,1,72,115,116,114,105,110,103,45,99,105,60, -61,63,252,120,1,72,115,116,114,105,110,103,45,99,105,62,61,63,252,121,1, -73,115,116,114,105,110,103,45,97,112,112,101,110,100,252,122,1,72,115,116,114, -105,110,103,45,62,108,105,115,116,252,123,1,72,108,105,115,116,45,62,115,116, -114,105,110,103,252,124,1,72,115,116,114,105,110,103,45,102,105,108,108,33,252, -125,1,73,118,101,99,116,111,114,45,108,101,110,103,116,104,252,126,1,72,118, -101,99,116,111,114,45,62,108,105,115,116,252,127,1,72,108,105,115,116,45,62, -118,101,99,116,111,114,252,128,1,72,118,101,99,116,111,114,45,102,105,108,108, -33,252,129,1,76,99,104,97,114,45,97,108,112,104,97,98,101,116,105,99,63, -252,130,1,73,99,104,97,114,45,110,117,109,101,114,105,99,63,252,131,1,76, -99,104,97,114,45,119,104,105,116,101,115,112,97,99,101,63,252,132,1,76,99, -104,97,114,45,117,112,112,101,114,45,99,97,115,101,63,252,133,1,76,99,104, -97,114,45,108,111,119,101,114,45,99,97,115,101,63,252,134,1,73,99,104,97, -114,45,62,105,110,116,101,103,101,114,252,135,1,73,105,110,116,101,103,101,114, -45,62,99,104,97,114,252,136,1,73,99,104,97,114,45,100,111,119,110,99,97, -115,101,252,137,1,1,21,99,97,108,108,45,119,105,116,104,45,111,117,116,112, -117,116,45,102,105,108,101,252,138,1,1,20,99,97,108,108,45,119,105,116,104, -45,105,110,112,117,116,45,102,105,108,101,252,139,1,1,20,119,105,116,104,45, -105,110,112,117,116,45,102,114,111,109,45,102,105,108,101,252,140,1,65,97,112, -112,108,121,252,141,1,68,102,111,114,45,101,97,99,104,252,142,1,67,115,121, -109,98,111,108,63,252,143,1,65,112,97,105,114,63,252,144,1,64,99,111,110, -115,252,145,1,68,115,101,116,45,99,97,114,33,252,146,1,68,115,101,116,45, -99,100,114,33,252,147,1,65,110,117,108,108,63,252,148,1,65,108,105,115,116, -63,252,149,1,64,108,105,115,116,252,150,1,66,108,101,110,103,116,104,252,151, -1,66,97,112,112,101,110,100,252,152,1,67,114,101,118,101,114,115,101,252,153, -1,69,108,105,115,116,45,116,97,105,108,252,154,1,68,108,105,115,116,45,114, -101,102,252,155,1,64,109,101,109,113,252,156,1,64,109,101,109,118,252,157,1, -66,109,101,109,98,101,114,252,158,1,64,97,115,115,113,252,159,1,64,97,115, -115,118,252,160,1,65,97,115,115,111,99,252,161,1,70,112,114,111,99,101,100, -117,114,101,63,252,162,1,67,110,117,109,98,101,114,63,252,163,1,68,99,111, -109,112,108,101,120,63,252,164,1,65,114,101,97,108,63,252,165,1,69,114,97, -116,105,111,110,97,108,63,252,166,1,68,105,110,116,101,103,101,114,63,252,167, -1,66,101,120,97,99,116,63,252,168,1,68,105,110,101,120,97,99,116,63,252, -169,1,65,122,101,114,111,63,252,170,1,69,112,111,115,105,116,105,118,101,63, -252,171,1,69,110,101,103,97,116,105,118,101,63,252,172,1,64,111,100,100,63, -252,173,1,65,101,118,101,110,63,252,174,1,68,113,117,111,116,105,101,110,116, -252,175,1,69,114,101,109,97,105,110,100,101,114,252,176,1,66,109,111,100,117, -108,111,252,177,1,65,102,108,111,111,114,252,178,1,67,99,101,105,108,105,110, -103,252,179,1,68,116,114,117,110,99,97,116,101,252,180,1,65,114,111,117,110, -100,252,181,1,69,110,117,109,101,114,97,116,111,114,252,182,1,71,100,101,110, -111,109,105,110,97,116,111,114,252,183,1,64,97,115,105,110,252,184,1,64,97, -99,111,115,252,185,1,64,97,116,97,110,252,186,1,64,115,113,114,116,252,187, -1,64,101,120,112,116,252,188,1,70,109,97,107,101,45,112,111,108,97,114,252, -189,1,69,114,101,97,108,45,112,97,114,116,252,190,1,69,105,109,97,103,45, -112,97,114,116,252,191,1,65,97,110,103,108,101,252,192,1,69,109,97,103,110, -105,116,117,100,101,252,193,1,71,105,110,112,117,116,45,112,111,114,116,63,252, -194,1,64,114,101,97,100,252,195,1,69,114,101,97,100,45,99,104,97,114,252, -196,1,69,112,101,101,107,45,99,104,97,114,252,197,1,71,101,111,102,45,111, -98,106,101,99,116,63,252,198,1,71,99,104,97,114,45,114,101,97,100,121,63, -252,199,1,65,119,114,105,116,101,252,200,1,67,100,105,115,112,108,97,121,252, -201,1,67,110,101,119,108,105,110,101,252,202,1,70,119,114,105,116,101,45,99, -104,97,114,252,203,1,64,108,111,97,100,252,204,1,67,115,116,114,105,110,103, -63,252,205,1,66,115,116,114,105,110,103,252,206,1,70,115,116,114,105,110,103, -45,114,101,102,252,207,1,71,115,116,114,105,110,103,45,115,101,116,33,252,208, -1,68,115,116,114,105,110,103,61,63,252,209,1,69,115,117,98,115,116,114,105, -110,103,252,210,1,71,115,116,114,105,110,103,45,99,111,112,121,252,211,1,71, -115,116,114,105,110,103,45,99,105,61,63,252,212,1,68,115,116,114,105,110,103, -60,63,252,213,1,68,115,116,114,105,110,103,62,63,252,214,1,69,115,116,114, -105,110,103,60,61,63,252,215,1,69,115,116,114,105,110,103,62,61,63,252,216, -1,71,115,116,114,105,110,103,45,99,105,60,63,252,217,1,71,115,116,114,105, -110,103,45,99,105,62,63,252,218,1,67,118,101,99,116,111,114,63,252,219,1, -71,109,97,107,101,45,118,101,99,116,111,114,252,220,1,66,118,101,99,116,111, -114,252,221,1,70,118,101,99,116,111,114,45,114,101,102,252,222,1,71,118,101, -99,116,111,114,45,115,101,116,33,252,223,1,65,99,104,97,114,63,252,224,1, -66,99,104,97,114,61,63,252,225,1,66,99,104,97,114,60,63,252,226,1,66, -99,104,97,114,62,63,252,227,1,67,99,104,97,114,60,61,63,252,228,1,67, -99,104,97,114,62,61,63,252,229,1,69,99,104,97,114,45,99,105,61,63,252, -230,1,69,99,104,97,114,45,99,105,60,63,252,231,1,69,99,104,97,114,45, -99,105,62,63,252,232,1,70,99,104,97,114,45,99,105,60,61,63,252,233,1, -70,99,104,97,114,45,99,105,62,61,63,252,234,1,71,99,104,97,114,45,117, -112,99,97,115,101,252,235,1,68,98,111,111,108,101,97,110,63,252,236,1,64, -101,113,118,63,252,237,1,66,101,113,117,97,108,63,252,238,1,65,102,111,114, -99,101,252,239,1,76,99,97,108,108,45,119,105,116,104,45,118,97,108,117,101, -115,252,240,1,66,118,97,108,117,101,115,252,241,1,64,101,118,97,108,252,242, -1,2,71,2,93,2,97,2,91,72,100,121,110,97,109,105,99,45,119,105,110, -100,252,243,1,9,193,97,68,35,37,107,101,114,110,101,108,252,244,1,2,125, -2,124,2,123,2,122,95,2,252,244,1,2,106,2,126,0}; - EVAL_ONE_SIZED_STR((char *)expr, 13413); +121,32,105,115,32,126,115,41,202,247,22,137,13,247,22,21,27,247,22,137,13, +250,22,37,89,162,34,34,36,9,223,4,248,22,137,13,193,89,162,34,34,36, +9,223,5,248,22,159,5,193,89,162,34,34,36,9,223,3,248,22,137,13,193, +248,22,159,5,196,80,159,34,41,35,83,158,34,16,2,32,0,89,162,34,37, +41,2,10,222,87,94,28,27,248,22,164,12,196,28,192,192,28,248,22,143,6, +196,27,248,22,184,12,197,28,192,192,248,22,185,12,197,11,12,250,22,176,8, +196,2,71,197,28,248,22,186,12,195,248,193,195,27,247,22,161,5,248,194,28, +193,249,22,187,12,198,195,196,80,159,34,42,35,83,158,34,16,2,89,162,34, +35,40,2,11,223,0,87,94,28,27,248,22,164,12,195,28,192,192,28,248,22, +143,6,195,27,248,22,184,12,196,28,192,192,248,22,185,12,196,11,12,250,22, +176,8,2,11,2,71,196,28,248,22,186,12,194,248,22,159,5,194,27,247,22, +161,5,248,22,159,5,28,193,249,22,187,12,197,195,195,80,159,34,43,35,83, +158,34,16,2,89,162,34,35,40,2,12,223,0,87,94,28,27,248,22,164,12, +195,28,192,192,28,248,22,143,6,195,27,248,22,184,12,196,28,192,192,248,22, +185,12,196,11,12,250,22,176,8,2,12,2,71,196,28,248,22,186,12,194,248, +22,141,13,194,27,247,22,161,5,248,22,141,13,28,193,249,22,187,12,197,195, +195,80,159,34,44,35,83,158,34,16,2,27,248,22,143,13,248,22,154,7,27, +27,247,22,162,7,28,249,22,78,194,21,96,64,117,110,105,120,64,98,101,111, +115,65,111,115,107,105,116,2,72,6,1,1,58,28,249,22,78,194,21,94,2, +69,2,73,6,1,1,59,12,250,22,191,6,6,14,14,40,91,94,126,97,93, +42,41,126,97,40,46,42,41,195,195,89,162,8,36,36,42,2,13,223,0,87, +95,28,28,248,22,131,7,194,10,248,22,143,6,194,12,250,22,176,8,2,13, +6,21,21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116,114, +105,110,103,196,28,28,248,22,64,195,249,22,4,22,164,12,196,11,12,250,22, +176,8,2,13,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,197, +250,2,105,197,195,28,248,22,143,6,197,248,22,154,7,197,196,80,159,34,45, +35,83,158,34,16,2,83,158,37,20,93,96,2,14,89,162,8,36,37,49,9, +223,0,87,95,28,27,248,22,164,12,195,28,192,192,28,248,22,143,6,195,27, +248,22,184,12,196,28,192,192,248,22,185,12,196,11,12,250,22,176,8,2,14, +6,25,25,112,97,116,104,32,111,114,32,115,116,114,105,110,103,32,40,115,97, +110,115,32,110,117,108,41,196,28,28,194,28,27,248,22,164,12,196,28,192,192, +28,248,22,143,6,196,27,248,22,184,12,197,28,192,192,248,22,185,12,197,11, +248,22,184,12,195,11,10,12,250,22,176,8,2,14,6,29,29,35,102,32,111, +114,32,114,101,108,97,116,105,118,101,32,112,97,116,104,32,111,114,32,115,116, +114,105,110,103,197,28,28,248,22,184,12,194,91,159,37,11,90,161,37,34,11, +248,22,183,12,197,249,22,147,8,194,2,75,11,27,248,22,160,7,6,4,4, +80,65,84,72,27,28,193,27,249,80,158,39,45,196,9,28,249,22,147,8,247, +22,162,7,2,69,249,22,57,248,22,172,12,5,1,46,194,192,9,28,248,22, +63,193,11,27,248,22,187,12,248,22,58,195,27,249,22,180,12,195,199,28,248, +22,174,12,193,250,2,106,201,202,195,251,2,107,201,202,203,248,22,59,199,27, +248,22,187,12,195,28,248,22,174,12,193,250,2,106,198,199,195,11,89,162,34, +36,40,9,223,0,250,80,158,37,46,196,197,11,89,162,34,35,39,9,223,0, +250,80,158,37,46,196,11,11,80,159,34,46,35,83,158,34,16,2,32,0,89, +162,34,36,43,2,15,222,87,94,28,27,248,22,164,12,195,28,192,192,28,248, +22,143,6,195,27,248,22,184,12,196,28,192,192,248,22,185,12,196,11,12,250, +22,176,8,195,2,66,196,28,248,22,184,12,194,12,248,22,133,11,249,22,142, +10,248,22,172,6,250,22,191,6,2,67,199,200,247,22,21,80,159,34,47,35, +83,158,34,16,2,89,162,34,37,45,2,16,223,0,87,94,87,94,28,27,248, +22,164,12,196,28,192,192,28,248,22,143,6,196,27,248,22,184,12,197,28,192, +192,248,22,185,12,197,11,12,250,22,176,8,196,2,66,197,28,248,22,184,12, +195,12,248,22,133,11,249,22,142,10,248,22,172,6,250,22,191,6,2,67,200, +201,247,22,21,249,22,3,89,162,34,35,44,9,224,2,3,87,94,28,27,248, +22,164,12,196,28,192,192,28,248,22,143,6,196,27,248,22,184,12,197,28,192, +192,248,22,185,12,197,11,12,250,22,176,8,195,2,66,197,28,248,22,184,12, +195,12,248,22,133,11,249,22,142,10,248,22,172,6,250,22,191,6,2,67,199, +201,247,22,21,197,80,159,34,48,35,83,158,34,16,2,32,0,89,162,34,37, +44,2,17,222,27,247,22,138,13,252,2,108,197,198,199,200,197,80,159,34,49, +35,83,158,34,16,2,27,247,22,162,7,28,249,22,147,8,194,2,69,5,4, +46,100,108,108,28,249,22,78,194,21,94,2,72,2,73,5,6,46,100,121,108, +105,98,5,3,46,115,111,80,159,34,50,35,83,158,34,16,2,249,80,159,36, +36,35,248,22,172,12,5,10,95,108,111,97,100,101,114,46,115,115,80,158,36, +50,80,159,34,51,35,83,158,34,16,2,249,22,167,11,27,89,162,34,36,8, +28,1,25,100,101,102,97,117,108,116,45,108,111,97,100,47,117,115,101,45,99, +111,109,112,105,108,101,100,223,3,87,94,28,27,248,22,164,12,195,28,192,192, +28,248,22,143,6,195,27,248,22,184,12,196,28,192,192,248,22,185,12,196,11, +12,250,22,176,8,2,23,6,25,25,112,97,116,104,32,111,114,32,118,97,108, +105,100,45,112,97,116,104,32,115,116,114,105,110,103,196,91,159,40,11,90,161, +35,34,11,28,248,22,186,12,200,199,27,247,22,161,5,28,192,249,22,187,12, +202,194,200,90,161,37,35,11,248,22,183,12,193,90,161,35,38,11,28,249,22, +147,8,195,2,75,2,78,193,90,161,35,39,11,247,22,139,13,27,89,162,34, +35,43,62,122,111,225,7,5,3,250,22,180,12,196,198,249,80,159,41,36,35, +197,5,3,46,122,111,27,89,162,34,35,45,9,225,8,6,4,252,22,180,12, +198,200,2,68,247,22,163,7,249,80,159,43,36,35,199,80,158,43,50,27,27, +80,158,44,51,89,162,34,35,43,9,225,10,8,0,252,22,180,12,198,200,2, +68,247,22,163,7,197,27,249,22,5,89,162,34,35,41,9,223,6,27,193,27, +250,22,132,13,196,11,32,0,89,162,8,44,34,34,9,222,11,28,192,249,22, +57,195,194,11,203,27,27,28,195,27,249,22,5,89,162,34,35,41,9,223,6, +27,248,194,195,27,250,22,132,13,196,11,32,0,89,162,8,44,34,34,9,222, +11,28,192,249,22,57,195,194,11,206,27,28,196,11,193,28,192,192,28,193,28, +196,28,249,22,128,3,248,22,59,196,248,22,59,199,193,11,11,11,11,28,192, +27,248,22,141,13,248,22,58,195,91,159,36,11,90,161,36,34,11,248,195,248, +22,48,248,22,153,7,248,22,169,12,249,80,159,55,36,35,23,17,5,0,28, +192,87,94,28,23,17,28,249,22,147,8,195,23,19,12,248,22,133,11,249,22, +139,10,248,22,172,6,251,22,191,6,6,81,81,108,111,97,100,45,101,120,116, +101,110,115,105,111,110,58,32,101,120,112,101,99,116,101,100,32,109,111,100,117, +108,101,32,100,101,99,108,97,114,97,116,105,111,110,32,102,111,114,32,96,126, +97,39,44,32,102,111,117,110,100,32,126,97,32,116,104,114,111,117,103,104,32, +108,111,97,100,101,114,58,32,126,101,23,25,28,201,249,22,191,6,6,27,27, +109,111,100,117,108,101,32,100,101,99,108,97,114,97,116,105,111,110,32,102,111, +114,32,96,126,97,39,203,6,4,4,110,111,110,101,248,22,58,204,247,22,21, +12,192,11,11,28,192,249,80,159,47,8,48,35,203,194,27,28,196,27,249,22, +5,89,162,34,35,41,9,223,7,27,248,194,195,27,250,22,132,13,196,11,32, +0,89,162,8,44,34,34,9,222,11,28,192,249,22,57,195,194,11,206,27,28, +196,11,193,28,192,192,28,193,28,196,28,249,22,128,3,248,22,59,196,248,22, +59,199,193,11,11,11,11,28,192,249,80,159,48,8,48,35,204,89,162,34,34, +39,9,224,16,2,249,247,22,142,13,248,22,58,195,195,27,28,198,27,249,22, +5,89,162,34,35,41,9,223,9,27,248,194,195,27,250,22,132,13,196,11,32, +0,89,162,8,44,34,34,9,222,11,28,192,249,22,57,195,194,11,23,15,27, +28,197,11,193,28,192,192,28,193,28,197,28,249,22,128,3,248,22,59,196,248, +22,59,200,193,11,11,11,11,28,192,249,80,159,49,8,48,35,205,89,162,34, +34,39,9,224,17,2,249,247,22,160,5,248,22,58,195,195,249,80,159,49,8, +48,35,205,89,162,34,34,38,9,224,17,9,249,247,22,160,5,194,195,192,32, +0,89,162,8,36,35,38,9,222,87,94,28,28,248,22,0,193,249,22,40,194, +36,11,12,250,22,176,8,2,20,6,19,19,112,114,111,99,101,100,117,114,101, +32,40,97,114,105,116,121,32,50,41,195,192,80,159,34,52,35,83,158,34,16, +2,89,162,8,37,36,44,2,22,223,0,87,94,87,94,87,94,28,27,248,22, +164,12,195,28,192,192,28,248,22,143,6,195,27,248,22,184,12,196,28,192,192, +248,22,185,12,196,11,12,250,22,176,8,2,22,2,66,196,28,248,22,184,12, +194,12,248,22,133,11,249,22,142,10,248,22,172,6,250,22,191,6,2,67,2, +22,200,247,22,21,249,22,3,80,159,36,8,49,35,196,27,247,22,138,13,251, +2,109,196,198,199,196,80,159,34,55,35,83,158,34,16,2,89,162,34,35,38, +2,23,223,0,249,247,80,158,36,52,195,11,80,159,34,56,35,248,22,142,12, +32,0,89,162,8,36,35,35,1,20,100,101,102,97,117,108,116,45,114,101,97, +100,101,114,45,103,117,97,114,100,222,192,83,158,34,16,2,2,110,80,159,34, +57,35,83,158,34,16,2,2,102,80,159,34,58,35,83,158,34,16,2,2,111, +80,159,34,59,35,83,158,34,16,2,248,22,116,2,79,80,159,34,8,26,35, +83,158,34,16,2,249,22,116,2,79,65,101,113,117,97,108,80,159,34,8,27, +35,83,158,34,16,2,247,22,54,80,159,34,8,28,35,83,158,34,16,2,11, +80,158,34,8,29,83,158,34,16,2,11,80,158,34,8,30,83,158,34,16,2, +89,162,8,36,35,38,2,32,223,0,91,159,36,10,90,161,35,34,10,11,90, +161,35,35,10,83,158,37,20,93,96,2,80,89,162,8,36,35,44,9,224,2, +0,87,94,28,207,248,208,195,12,27,27,250,22,122,80,158,40,8,26,248,22, +165,13,247,22,158,11,11,28,192,192,27,247,22,116,87,94,250,22,121,80,158, +41,8,26,248,22,165,13,247,22,158,11,195,192,250,22,121,195,198,66,97,116, +116,97,99,104,89,162,34,37,42,9,223,1,251,211,197,198,199,10,89,162,34, +38,8,28,9,225,2,3,0,28,28,248,22,56,196,249,22,147,8,248,22,58, +198,66,112,108,97,110,101,116,11,87,94,28,207,12,20,14,159,80,158,36,53, +250,80,158,39,54,249,22,25,11,80,158,41,53,22,158,11,196,90,161,35,34, +10,249,22,178,3,21,95,2,81,6,11,11,114,101,115,111,108,118,101,114,46, +115,115,6,6,6,112,108,97,110,101,116,1,27,112,108,97,110,101,116,45,109, +111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,251, +211,199,200,201,202,27,28,248,22,143,6,197,27,248,80,159,39,8,50,35,199, +27,250,22,122,80,158,42,8,27,249,22,57,203,198,11,28,192,192,27,248,22, +154,7,200,28,249,22,148,13,2,111,194,27,249,22,147,13,2,110,195,28,192, +249,2,112,249,22,180,12,199,27,248,22,84,198,28,249,22,137,7,194,2,82, +2,78,28,249,22,137,7,194,2,83,2,84,248,22,172,12,193,248,22,93,195, +249,22,180,12,197,248,22,172,12,196,248,22,65,249,22,166,6,6,72,72,32, +40,114,101,108,97,116,105,118,101,32,115,116,114,105,110,103,32,102,111,114,109, +32,109,117,115,116,32,99,111,110,116,97,105,110,32,111,110,108,121,32,97,45, +122,44,32,65,45,90,44,32,48,45,57,44,32,45,44,32,95,44,32,46,44, +32,47,44,32,97,110,100,32,6,37,37,115,112,97,99,101,44,32,119,105,116, +104,32,110,111,32,108,101,97,100,105,110,103,32,111,114,32,116,114,97,105,108, +105,110,103,32,47,41,28,248,22,164,12,197,28,248,22,185,12,197,196,248,22, +65,6,25,25,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97, +98,115,111,108,117,116,101,41,28,28,248,22,56,197,248,22,145,8,248,22,64, +198,10,11,28,249,22,147,8,248,22,58,199,2,81,27,250,22,122,80,158,41, +8,27,249,22,57,202,247,22,138,13,11,28,192,192,27,27,248,22,70,200,28, +249,22,188,2,194,36,248,22,65,6,5,5,109,122,108,105,98,28,249,22,190, +2,194,36,248,22,86,200,11,28,192,28,249,22,4,32,0,89,162,34,35,36, +9,222,28,248,22,143,6,193,248,22,184,12,193,11,194,28,248,22,143,6,248, +22,84,200,28,248,22,184,12,248,22,84,200,27,27,248,22,58,195,27,248,22, +59,196,27,247,22,138,13,251,2,113,196,198,197,196,249,22,180,12,194,248,22, +84,202,11,11,11,11,28,249,22,147,8,248,22,58,199,64,102,105,108,101,28, +249,22,188,2,248,22,70,199,36,27,248,22,84,198,28,248,22,143,6,193,28, +27,248,22,164,12,194,28,192,192,28,248,22,143,6,194,27,248,22,184,12,195, +28,192,192,248,22,185,12,195,11,249,22,187,12,194,248,80,159,41,8,50,35, +201,11,11,11,11,87,94,28,28,248,22,164,12,193,10,248,22,165,7,193,12, +28,198,250,22,175,8,67,114,101,113,117,105,114,101,249,22,191,6,6,17,17, +98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126,97,28,197,248,22, +58,198,6,0,0,201,250,22,176,8,2,80,249,22,191,6,6,13,13,109,111, +100,117,108,101,32,112,97,116,104,126,97,28,197,248,22,58,198,6,0,0,199, +27,28,248,22,165,7,194,249,22,170,7,195,34,248,22,189,12,248,22,190,12, +195,27,28,248,22,165,7,195,249,22,170,7,196,35,248,80,159,40,38,35,194, +91,159,37,11,90,161,37,34,11,28,248,22,165,7,198,250,22,7,2,85,249, +22,170,7,202,36,2,85,248,22,183,12,197,27,28,248,22,165,7,199,249,22, +170,7,200,37,249,80,159,45,36,35,196,5,0,27,28,248,22,165,7,200,249, +22,170,7,201,38,249,22,191,6,6,3,3,44,126,97,248,22,153,7,248,22, +169,12,248,80,159,49,38,35,199,27,28,248,22,165,7,201,249,22,170,7,202, +39,248,22,48,249,22,166,6,196,248,22,153,7,248,22,169,12,199,27,28,248, +22,165,7,202,249,22,170,7,203,40,27,249,22,147,13,2,103,248,22,169,12, +201,28,192,248,22,58,193,10,27,27,250,22,122,80,158,51,8,26,248,22,165, +13,247,22,158,11,11,28,192,192,27,247,22,116,87,94,250,22,121,80,158,52, +8,26,248,22,165,13,247,22,158,11,195,192,87,95,28,23,17,27,250,22,122, +196,198,11,87,94,28,192,28,28,248,22,47,193,10,249,22,149,8,196,194,12, +252,22,173,8,2,80,6,71,71,109,111,100,117,108,101,32,112,114,101,118,105, +111,117,115,108,121,32,108,111,97,100,101,100,32,119,105,116,104,32,115,117,102, +102,105,120,32,126,115,44,32,99,97,110,110,111,116,32,108,111,97,100,32,119, +105,116,104,32,115,117,102,102,105,120,32,126,115,58,32,126,101,28,249,22,147, +8,10,199,6,0,0,197,28,249,22,147,8,10,201,6,0,0,199,23,15,12, +28,192,12,87,95,27,249,22,23,247,22,21,80,158,51,8,28,27,247,22,158, +11,249,22,3,89,162,34,35,48,9,226,13,14,2,3,28,249,22,149,8,248, +22,59,199,197,28,249,22,147,8,248,22,58,199,195,251,22,173,8,2,80,6, +26,26,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116, +32,126,101,58,32,126,101,198,249,22,2,22,59,248,22,73,249,22,57,205,201, +12,12,195,27,248,22,48,198,20,14,159,80,158,49,8,28,249,22,57,247,22, +158,11,204,20,14,159,80,158,49,53,250,80,158,52,54,249,22,25,11,80,158, +54,53,22,177,3,195,249,247,80,158,51,52,205,248,22,48,248,22,153,7,248, +22,169,12,203,250,22,121,196,198,197,12,28,28,248,22,165,7,203,11,27,248, +22,143,6,23,16,28,192,192,28,248,22,56,23,16,249,22,147,8,248,22,58, +23,18,2,81,11,250,22,121,80,158,50,8,27,28,248,22,143,6,23,18,249, +22,57,23,19,248,80,159,53,8,50,35,23,21,249,22,57,23,19,247,22,138, +13,254,22,167,7,23,19,23,18,23,16,206,205,204,203,12,194,208,80,159,34, +8,31,35,83,158,34,16,2,83,158,37,20,93,95,2,33,89,162,34,34,36, +9,223,0,248,80,158,35,8,32,9,89,162,34,35,47,9,223,0,27,247,22, +140,13,249,80,158,37,45,28,194,27,248,22,160,7,6,11,11,80,76,84,67, +79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0,27,28,195,250,22, +180,12,248,22,136,13,69,97,100,100,111,110,45,100,105,114,247,22,158,7,6, +8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,40,8,51,35,249,22, +71,201,248,22,65,248,22,136,13,72,99,111,108,108,101,99,116,115,45,100,105, +114,28,193,249,22,57,195,194,192,80,159,34,8,32,35,83,158,34,16,2,32, +0,89,162,8,36,35,37,2,34,222,27,248,22,139,4,194,28,192,192,248,22, +140,4,194,80,159,34,8,33,35,83,158,34,16,6,26,9,22,166,9,63,101, +118,116,11,35,34,11,248,22,65,249,22,57,22,162,9,34,247,22,189,9,11, +21,93,34,80,159,34,8,34,35,80,159,34,8,35,35,80,159,34,8,36,35, +80,159,34,8,37,35,80,159,34,8,38,35,83,158,34,16,2,89,162,34,35, +39,2,40,223,0,87,94,28,28,248,22,0,194,249,22,40,195,34,11,12,250, +22,176,8,2,40,6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114, +105,116,121,32,48,41,196,248,80,158,35,8,35,89,162,34,35,36,9,223,2, +247,192,80,159,34,8,39,35,83,158,34,16,2,32,0,89,162,34,35,38,2, +41,222,87,94,28,248,22,136,12,193,12,250,22,176,8,2,41,6,7,7,99, +104,97,110,110,101,108,195,248,22,185,11,193,80,159,34,8,40,35,83,158,34, +16,2,32,0,89,162,34,35,38,2,42,222,87,94,28,248,22,136,12,193,12, +250,22,176,8,2,42,6,7,7,99,104,97,110,110,101,108,195,249,22,186,11, +34,194,80,159,34,8,41,35,83,158,34,16,2,32,0,89,162,34,36,39,2, +43,222,87,94,28,248,22,136,12,193,12,250,22,176,8,2,43,6,7,7,99, +104,97,110,110,101,108,195,28,248,22,185,11,249,22,135,12,195,196,12,11,80, +159,34,8,42,35,83,158,34,16,2,32,0,89,162,34,34,34,2,44,222,247, +22,158,11,80,159,34,8,43,35,83,158,34,16,2,89,162,34,35,39,2,45, +223,0,87,94,28,249,22,188,2,195,39,12,250,22,176,8,2,45,6,1,1, +53,196,248,80,158,35,8,45,11,80,159,34,8,44,35,83,158,34,16,2,89, +162,34,35,39,2,47,223,0,87,94,28,249,22,188,2,195,39,12,250,22,176, +8,2,47,6,1,1,53,196,248,80,158,35,8,45,10,80,159,34,8,46,35, +83,158,34,16,2,89,162,8,36,35,43,2,46,223,0,27,248,22,136,11,65, +101,109,112,116,121,27,247,22,136,11,87,94,20,14,159,80,158,36,53,250,80, +158,39,54,249,22,25,11,80,158,41,53,22,158,11,196,87,96,249,22,182,3, +194,2,86,248,22,180,3,2,86,248,22,181,3,21,95,64,111,110,108,121,2, +87,72,115,121,110,116,97,120,45,114,117,108,101,115,28,195,12,249,22,3,32, +0,89,162,34,35,39,9,222,249,22,162,13,194,249,22,178,3,2,87,196,21, +15,139,3,63,99,97,114,63,99,100,114,64,99,97,97,114,64,99,97,100,114, +64,99,100,97,114,64,99,100,100,114,65,99,97,97,97,114,65,99,97,97,100, +114,65,99,97,100,97,114,65,99,97,100,100,114,65,99,100,97,97,114,65,99, +100,97,100,114,65,99,100,100,97,114,65,99,100,100,100,114,66,99,97,97,97, +97,114,66,99,97,97,97,100,114,66,99,97,97,100,97,114,66,99,97,97,100, +100,114,66,99,97,100,97,97,114,66,99,97,100,97,100,114,66,99,97,100,100, +97,114,66,99,97,100,100,100,114,66,99,100,97,97,97,114,66,99,100,97,97, +100,114,66,99,100,97,100,97,114,66,99,100,97,100,100,114,66,99,100,100,97, +97,114,66,99,100,100,97,100,114,66,99,100,100,100,97,114,66,99,100,100,100, +100,114,63,109,97,112,61,61,61,60,61,62,62,60,61,62,62,61,63,109,97, +120,63,109,105,110,61,43,61,45,61,42,61,47,63,97,98,115,63,103,99,100, +63,108,99,109,63,101,120,112,63,108,111,103,63,115,105,110,63,99,111,115,63, +116,97,110,63,110,111,116,63,101,113,63,1,30,99,97,108,108,45,119,105,116, +104,45,99,117,114,114,101,110,116,45,99,111,110,116,105,110,117,97,116,105,111, +110,71,109,97,107,101,45,115,116,114,105,110,103,74,115,121,109,98,111,108,45, +62,115,116,114,105,110,103,74,115,116,114,105,110,103,45,62,115,121,109,98,111, +108,76,109,97,107,101,45,114,101,99,116,97,110,103,117,108,97,114,74,101,120, +97,99,116,45,62,105,110,101,120,97,99,116,74,105,110,101,120,97,99,116,45, +62,101,120,97,99,116,74,110,117,109,98,101,114,45,62,115,116,114,105,110,103, +74,115,116,114,105,110,103,45,62,110,117,109,98,101,114,2,7,72,111,117,116, +112,117,116,45,112,111,114,116,63,78,99,117,114,114,101,110,116,45,105,110,112, +117,116,45,112,111,114,116,79,99,117,114,114,101,110,116,45,111,117,116,112,117, +116,45,112,111,114,116,78,99,117,114,114,101,110,116,45,101,114,114,111,114,45, +112,111,114,116,75,111,112,101,110,45,105,110,112,117,116,45,102,105,108,101,76, +111,112,101,110,45,111,117,116,112,117,116,45,102,105,108,101,76,99,108,111,115, +101,45,105,110,112,117,116,45,112,111,114,116,77,99,108,111,115,101,45,111,117, +116,112,117,116,45,112,111,114,116,79,119,105,116,104,45,111,117,116,112,117,116, +45,116,111,45,102,105,108,101,73,116,114,97,110,115,99,114,105,112,116,45,111, +110,74,116,114,97,110,115,99,114,105,112,116,45,111,102,102,72,102,108,117,115, +104,45,111,117,116,112,117,116,73,115,116,114,105,110,103,45,108,101,110,103,116, +104,72,115,116,114,105,110,103,45,99,105,60,61,63,72,115,116,114,105,110,103, +45,99,105,62,61,63,73,115,116,114,105,110,103,45,97,112,112,101,110,100,72, +115,116,114,105,110,103,45,62,108,105,115,116,72,108,105,115,116,45,62,115,116, +114,105,110,103,72,115,116,114,105,110,103,45,102,105,108,108,33,73,118,101,99, +116,111,114,45,108,101,110,103,116,104,72,118,101,99,116,111,114,45,62,108,105, +115,116,72,108,105,115,116,45,62,118,101,99,116,111,114,72,118,101,99,116,111, +114,45,102,105,108,108,33,76,99,104,97,114,45,97,108,112,104,97,98,101,116, +105,99,63,73,99,104,97,114,45,110,117,109,101,114,105,99,63,76,99,104,97, +114,45,119,104,105,116,101,115,112,97,99,101,63,76,99,104,97,114,45,117,112, +112,101,114,45,99,97,115,101,63,76,99,104,97,114,45,108,111,119,101,114,45, +99,97,115,101,63,73,99,104,97,114,45,62,105,110,116,101,103,101,114,73,105, +110,116,101,103,101,114,45,62,99,104,97,114,73,99,104,97,114,45,100,111,119, +110,99,97,115,101,1,21,99,97,108,108,45,119,105,116,104,45,111,117,116,112, +117,116,45,102,105,108,101,1,20,99,97,108,108,45,119,105,116,104,45,105,110, +112,117,116,45,102,105,108,101,1,20,119,105,116,104,45,105,110,112,117,116,45, +102,114,111,109,45,102,105,108,101,65,97,112,112,108,121,68,102,111,114,45,101, +97,99,104,67,115,121,109,98,111,108,63,65,112,97,105,114,63,64,99,111,110, +115,68,115,101,116,45,99,97,114,33,68,115,101,116,45,99,100,114,33,65,110, +117,108,108,63,65,108,105,115,116,63,64,108,105,115,116,66,108,101,110,103,116, +104,66,97,112,112,101,110,100,67,114,101,118,101,114,115,101,69,108,105,115,116, +45,116,97,105,108,68,108,105,115,116,45,114,101,102,64,109,101,109,113,64,109, +101,109,118,66,109,101,109,98,101,114,64,97,115,115,113,64,97,115,115,118,65, +97,115,115,111,99,70,112,114,111,99,101,100,117,114,101,63,67,110,117,109,98, +101,114,63,68,99,111,109,112,108,101,120,63,65,114,101,97,108,63,69,114,97, +116,105,111,110,97,108,63,68,105,110,116,101,103,101,114,63,66,101,120,97,99, +116,63,68,105,110,101,120,97,99,116,63,65,122,101,114,111,63,69,112,111,115, +105,116,105,118,101,63,69,110,101,103,97,116,105,118,101,63,64,111,100,100,63, +65,101,118,101,110,63,68,113,117,111,116,105,101,110,116,69,114,101,109,97,105, +110,100,101,114,66,109,111,100,117,108,111,65,102,108,111,111,114,67,99,101,105, +108,105,110,103,68,116,114,117,110,99,97,116,101,65,114,111,117,110,100,69,110, +117,109,101,114,97,116,111,114,71,100,101,110,111,109,105,110,97,116,111,114,64, +97,115,105,110,64,97,99,111,115,64,97,116,97,110,64,115,113,114,116,64,101, +120,112,116,70,109,97,107,101,45,112,111,108,97,114,69,114,101,97,108,45,112, +97,114,116,69,105,109,97,103,45,112,97,114,116,65,97,110,103,108,101,69,109, +97,103,110,105,116,117,100,101,71,105,110,112,117,116,45,112,111,114,116,63,64, +114,101,97,100,69,114,101,97,100,45,99,104,97,114,69,112,101,101,107,45,99, +104,97,114,71,101,111,102,45,111,98,106,101,99,116,63,71,99,104,97,114,45, +114,101,97,100,121,63,65,119,114,105,116,101,67,100,105,115,112,108,97,121,67, +110,101,119,108,105,110,101,70,119,114,105,116,101,45,99,104,97,114,64,108,111, +97,100,67,115,116,114,105,110,103,63,66,115,116,114,105,110,103,70,115,116,114, +105,110,103,45,114,101,102,71,115,116,114,105,110,103,45,115,101,116,33,68,115, +116,114,105,110,103,61,63,69,115,117,98,115,116,114,105,110,103,71,115,116,114, +105,110,103,45,99,111,112,121,71,115,116,114,105,110,103,45,99,105,61,63,68, +115,116,114,105,110,103,60,63,68,115,116,114,105,110,103,62,63,69,115,116,114, +105,110,103,60,61,63,69,115,116,114,105,110,103,62,61,63,71,115,116,114,105, +110,103,45,99,105,60,63,71,115,116,114,105,110,103,45,99,105,62,63,67,118, +101,99,116,111,114,63,71,109,97,107,101,45,118,101,99,116,111,114,66,118,101, +99,116,111,114,70,118,101,99,116,111,114,45,114,101,102,71,118,101,99,116,111, +114,45,115,101,116,33,65,99,104,97,114,63,66,99,104,97,114,61,63,66,99, +104,97,114,60,63,66,99,104,97,114,62,63,67,99,104,97,114,60,61,63,67, +99,104,97,114,62,61,63,69,99,104,97,114,45,99,105,61,63,69,99,104,97, +114,45,99,105,60,63,69,99,104,97,114,45,99,105,62,63,70,99,104,97,114, +45,99,105,60,61,63,70,99,104,97,114,45,99,105,62,61,63,71,99,104,97, +114,45,117,112,99,97,115,101,68,98,111,111,108,101,97,110,63,64,101,113,118, +63,66,101,113,117,97,108,63,65,102,111,114,99,101,76,99,97,108,108,45,119, +105,116,104,45,118,97,108,117,101,115,66,118,97,108,117,101,115,64,101,118,97, +108,2,34,2,45,2,47,2,44,72,100,121,110,97,109,105,99,45,119,105,110, +100,9,193,80,159,34,8,45,35,97,2,88,2,59,2,58,2,57,2,56,95, +2,88,2,54,2,60,0}; + EVAL_ONE_SIZED_STR((char *)expr, 12522); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,24,252,46,2,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,72,35,37,115,116, -120,109,122,45,98,111,100,121,1,29,2,11,11,18,95,11,37,98,35,10,34, -11,94,159,68,35,37,100,101,102,105,110,101,3,9,11,159,76,35,37,115,116, -120,99,97,115,101,45,115,99,104,101,109,101,4,9,11,16,6,77,35,37,116, -111,112,45,105,110,116,101,114,97,99,116,105,111,110,5,2,2,1,28,109,122, -115,99,104,101,109,101,45,105,110,45,115,116,120,45,109,111,100,117,108,101,45, -98,101,103,105,110,6,2,2,1,20,35,37,112,108,97,105,110,45,109,111,100, -117,108,101,45,98,101,103,105,110,7,158,68,35,37,107,101,114,110,101,108,8, -74,35,37,109,111,100,117,108,101,45,98,101,103,105,110,9,10,10,34,80,158, -34,34,20,99,159,34,16,0,16,0,11,11,16,0,34,11,16,2,2,5,2, -6,16,2,11,11,16,2,2,5,2,6,34,36,94,16,5,93,2,6,89,162, -34,35,46,9,223,0,28,248,80,158,35,34,194,250,22,216,20,15,159,37,34, -36,250,22,67,20,15,159,40,35,36,249,22,216,201,249,22,65,20,15,159,44, -36,36,68,109,122,115,99,104,101,109,101,10,248,80,158,41,35,200,196,250,22, -252,47,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,11,196,34,20, -99,159,34,16,2,30,12,65,35,37,115,116,120,13,69,115,116,120,45,112,97, -105,114,63,14,11,30,15,2,13,67,115,116,120,45,99,100,114,16,6,16,3, -18,98,64,104,101,114,101,17,41,35,98,40,10,35,11,93,159,2,13,9,11, -16,0,96,39,8,254,1,11,16,0,16,4,38,11,63,115,116,120,18,3,1, -7,101,110,118,52,56,48,51,19,18,16,2,158,2,7,41,42,18,16,2,158, -78,114,101,113,117,105,114,101,45,102,111,114,45,115,121,110,116,97,120,20,41, -43,11,16,5,93,2,5,89,162,8,36,35,41,9,223,0,87,94,28,249,22, -252,19,2,69,116,111,112,45,108,101,118,101,108,21,247,22,252,105,3,62,111, -107,22,250,22,252,47,2,11,6,16,16,110,111,116,32,97,116,32,116,111,112, -32,108,101,118,101,108,23,196,251,22,216,197,248,80,158,39,34,198,197,197,34, -20,99,159,34,16,1,2,15,16,0,11,9,95,2,8,2,4,2,3,94,2, -8,2,13,0}; - EVAL_ONE_SIZED_STR((char *)expr, 570); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,15,0,0,0,1,0,0,3,0,12,0,29,0, +47,0,77,0,99,0,108,0,114,0,159,0,171,0,209,0,217,0,222,0,244, +0,0,0,36,2,0,0,29,11,11,68,35,37,100,101,102,105,110,101,76,35, +37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,77,35,37,116,111,112, +45,105,110,116,101,114,97,99,116,105,111,110,1,28,109,122,115,99,104,101,109, +101,45,105,110,45,115,116,120,45,109,111,100,117,108,101,45,98,101,103,105,110, +1,20,35,37,112,108,97,105,110,45,109,111,100,117,108,101,45,98,101,103,105, +110,68,35,37,107,101,114,110,101,108,65,35,37,115,116,120,97,10,34,11,94, +159,2,2,9,11,159,2,3,9,11,16,6,2,4,2,1,2,5,2,1,2, +6,158,2,7,74,35,37,109,111,100,117,108,101,45,98,101,103,105,110,30,2, +8,67,115,116,120,45,99,100,114,6,96,43,97,10,35,11,93,159,2,8,9, +11,16,0,95,8,193,11,16,0,16,4,11,11,63,115,116,120,3,1,7,101, +110,118,52,56,48,51,18,158,64,104,101,114,101,45,18,158,2,6,45,18,158, +78,114,101,113,117,105,114,101,45,102,111,114,45,115,121,110,116,97,120,45,159, +34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20, +96,114,72,35,37,115,116,120,109,122,45,98,111,100,121,2,1,18,94,11,43, +10,10,34,80,158,34,34,20,99,159,34,16,0,16,0,11,11,16,0,34,11, +16,2,2,4,2,5,16,2,11,11,16,2,2,4,2,5,34,36,94,16,5, +93,2,5,89,162,34,35,46,9,223,0,28,248,80,158,35,34,194,250,22,152, +3,20,15,159,37,34,36,250,22,67,20,15,159,40,35,36,249,22,152,3,201, +249,22,65,20,15,159,44,36,36,68,109,122,115,99,104,101,109,101,248,80,158, +41,35,200,196,250,22,175,8,11,6,10,10,98,97,100,32,115,121,110,116,97, +120,196,34,20,99,159,34,16,2,30,2,8,69,115,116,120,45,112,97,105,114, +63,11,2,10,16,3,33,12,33,13,33,14,11,16,5,93,2,4,89,162,8, +36,35,41,9,223,0,87,94,28,249,22,147,8,69,116,111,112,45,108,101,118, +101,108,247,22,169,13,62,111,107,250,22,175,8,11,6,16,16,110,111,116,32, +97,116,32,116,111,112,32,108,101,118,101,108,196,251,22,152,3,197,248,80,158, +39,34,198,197,197,34,20,99,159,34,16,1,2,10,16,0,11,9,95,2,7, +2,3,2,2,94,2,7,2,8,0}; + EVAL_ONE_SIZED_STR((char *)expr, 597); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,97,252,3,7,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,68,109,122,115,99, -104,101,109,101,1,29,2,11,11,10,10,10,34,80,158,34,34,20,99,159,34, -16,0,16,0,74,35,37,109,111,100,117,108,101,45,98,101,103,105,110,3,10, -16,0,34,11,16,78,1,32,99,97,108,108,45,119,105,116,104,45,98,114,101, -97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,4,1, -27,99,97,108,108,45,119,105,116,104,45,101,120,99,101,112,116,105,111,110,45, -104,97,110,100,108,101,114,5,1,26,99,97,108,108,45,119,105,116,104,45,112, -97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,6,71,99,104,97,110, -110,101,108,45,103,101,116,7,71,99,104,97,110,110,101,108,45,112,117,116,8, -75,99,104,97,110,110,101,108,45,116,114,121,45,103,101,116,9,1,26,99,104, -101,99,107,45,100,117,112,108,105,99,97,116,101,45,105,100,101,110,116,105,102, -105,101,114,10,75,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,11, -1,30,99,117,114,114,101,110,116,45,98,114,101,97,107,45,112,97,114,97,109, -101,116,101,114,105,122,97,116,105,111,110,12,1,25,99,117,114,114,101,110,116, -45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,13,1,24, -99,117,114,114,101,110,116,45,112,97,114,97,109,101,116,101,114,105,122,97,116, -105,111,110,14,1,20,102,105,110,100,45,101,120,101,99,117,116,97,98,108,101, -45,112,97,116,104,15,1,29,102,105,110,100,45,108,105,98,114,97,114,121,45, -99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,115,16,65,102,111,114, -99,101,17,1,20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97, -114,105,101,115,18,69,103,117,97,114,100,45,101,118,116,19,71,105,100,101,110, -116,105,102,105,101,114,63,20,1,23,105,110,116,101,114,97,99,116,105,111,110, -45,101,110,118,105,114,111,110,109,101,110,116,21,73,108,111,97,100,45,114,101, -108,97,116,105,118,101,22,1,23,108,111,97,100,45,114,101,108,97,116,105,118, -101,45,101,120,116,101,110,115,105,111,110,23,67,108,111,97,100,47,99,100,24, -77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,25,76,110, -111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,26,76,110,117,108,108, -45,101,110,118,105,114,111,110,109,101,110,116,27,1,27,112,97,116,104,45,108, -105,115,116,45,115,116,114,105,110,103,45,62,112,97,116,104,45,108,105,115,116, -28,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120, -29,72,112,97,116,104,45,115,116,114,105,110,103,63,30,65,112,111,114,116,63, -31,68,112,114,111,109,105,115,101,63,32,71,114,97,116,105,111,110,97,108,105, -122,101,33,1,20,114,101,97,100,45,101,118,97,108,45,112,114,105,110,116,45, -108,111,111,112,34,1,25,115,99,104,101,109,101,45,114,101,112,111,114,116,45, -101,110,118,105,114,111,110,109,101,110,116,35,64,108,101,116,42,36,77,117,110, -115,121,110,116,97,120,45,115,112,108,105,99,105,110,103,37,1,28,109,122,115, -99,104,101,109,101,45,105,110,45,115,116,120,45,109,111,100,117,108,101,45,98, -101,103,105,110,38,70,108,101,116,45,115,121,110,116,97,120,39,76,98,101,103, -105,110,45,102,111,114,45,115,121,110,116,97,120,40,63,97,110,100,41,62,111, -114,42,72,115,121,110,116,97,120,45,114,117,108,101,115,43,71,115,101,116,33, -45,118,97,108,117,101,115,44,64,99,111,110,100,45,63,108,101,116,46,70,115, -121,110,116,97,120,47,108,111,99,47,66,117,110,108,101,115,115,48,71,119,105, -116,104,45,115,121,110,116,97,120,49,70,108,101,116,45,115,116,114,117,99,116, -50,66,100,101,102,105,110,101,51,65,100,101,108,97,121,52,66,108,101,116,114, -101,99,53,66,108,101,116,47,99,99,54,77,35,37,116,111,112,45,105,110,116, -101,114,97,99,116,105,111,110,55,77,100,101,102,105,110,101,45,102,111,114,45, -115,121,110,116,97,120,56,64,99,97,115,101,57,73,100,101,102,105,110,101,45, -115,116,114,117,99,116,58,2,3,75,108,101,116,114,101,99,45,115,121,110,116, -97,120,101,115,59,73,108,101,116,114,101,99,45,115,121,110,116,97,120,60,64, -116,105,109,101,61,72,108,101,116,45,115,121,110,116,97,120,101,115,62,66,115, -121,110,116,97,120,63,75,115,121,110,116,97,120,45,105,100,45,114,117,108,101, -115,64,75,113,117,97,115,105,115,121,110,116,97,120,47,108,111,99,65,64,119, -104,101,110,66,72,115,121,110,116,97,120,45,99,97,115,101,42,67,66,108,101, -116,47,101,99,68,72,112,97,114,97,109,101,116,101,114,105,122,101,69,78,112, -97,114,97,109,101,116,101,114,105,122,101,45,98,114,101,97,107,70,73,119,105, -116,104,45,104,97,110,100,108,101,114,115,71,74,119,105,116,104,45,104,97,110, -100,108,101,114,115,42,72,79,109,101,109,111,114,121,45,116,114,97,99,101,45, -108,97,109,98,100,97,73,62,100,111,74,69,102,108,117,105,100,45,108,101,116, -75,73,100,101,102,105,110,101,45,115,121,110,116,97,120,76,70,113,117,97,115, -105,113,117,111,116,101,77,68,117,110,115,121,110,116,97,120,78,71,113,117,97, -115,105,115,121,110,116,97,120,79,71,115,121,110,116,97,120,45,99,97,115,101, -80,16,78,73,35,37,109,111,114,101,45,115,99,104,101,109,101,81,2,81,2, -81,66,35,37,109,105,115,99,82,2,82,2,82,76,35,37,115,116,120,99,97, -115,101,45,115,99,104,101,109,101,83,2,82,2,81,2,82,2,81,2,82,2, -82,2,81,70,35,37,119,105,116,104,45,115,116,120,84,2,82,65,35,37,115, -116,120,85,2,82,2,82,2,82,2,82,2,82,2,82,2,82,2,82,2,82, -2,82,2,82,2,81,2,82,2,82,2,82,71,35,37,113,113,45,97,110,100, -45,111,114,86,67,35,37,113,113,115,116,120,87,72,35,37,115,116,120,109,122, -45,98,111,100,121,88,2,83,68,35,37,100,101,102,105,110,101,89,2,86,2, -86,2,83,2,81,66,35,37,99,111,110,100,90,2,86,68,35,37,115,116,120, -108,111,99,91,74,35,37,100,101,102,105,110,101,45,101,116,45,97,108,92,2, -84,2,81,2,89,2,81,2,86,2,81,2,88,2,89,2,81,2,92,68,35, -37,107,101,114,110,101,108,93,2,83,2,83,2,81,2,83,69,35,37,115,116, -120,99,97,115,101,94,2,83,2,87,2,92,2,91,2,92,2,81,2,81,2, -81,2,81,2,82,2,81,2,81,2,89,2,86,2,87,2,87,2,91,16,78, -2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2, -14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24, -2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2, -35,2,36,2,37,2,3,2,39,2,40,2,41,2,42,2,43,2,44,2,45, -2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54,2,55,2, -56,2,57,2,58,1,20,35,37,112,108,97,105,110,45,109,111,100,117,108,101, -45,98,101,103,105,110,95,2,59,2,60,2,61,2,62,2,63,2,64,2,65, -2,66,2,67,2,68,2,69,2,70,2,71,2,72,2,73,2,74,2,75,2, -76,2,77,2,78,2,79,2,80,8,32,8,78,9,9,101,2,93,2,81,2, -82,2,83,2,85,2,88,2,87,2,89,68,35,37,101,120,112,111,98,115,96, -9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1807); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,90,0,0,0,1,0,0,15,0,49,0,78,0, +106,0,118,0,130,0,146,0,174,0,190,0,222,0,249,0,19,1,41,1,72, +1,78,1,100,1,110,1,122,1,147,1,161,1,186,1,194,1,212,1,229,1, +246,1,19,2,39,2,52,2,58,2,67,2,79,2,101,2,128,2,133,2,151, +2,154,2,172,2,177,2,189,2,193,2,213,2,218,2,230,2,237,2,248,2, +252,2,15,3,25,3,36,3,53,3,60,3,74,3,77,3,93,3,100,3,116, +3,130,3,143,3,156,3,172,3,179,3,192,3,205,3,219,3,234,3,239,3, +245,3,252,3,1,4,15,4,33,4,40,4,51,4,60,4,72,4,84,4,95, +4,109,4,116,4,133,4,144,4,150,4,162,4,170,4,183,4,198,4,207,4, +216,4,225,4,0,0,84,7,0,0,74,35,37,109,111,100,117,108,101,45,98, +101,103,105,110,1,32,99,97,108,108,45,119,105,116,104,45,98,114,101,97,107, +45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,1,27,99,97, +108,108,45,119,105,116,104,45,101,120,99,101,112,116,105,111,110,45,104,97,110, +100,108,101,114,1,26,99,97,108,108,45,119,105,116,104,45,112,97,114,97,109, +101,116,101,114,105,122,97,116,105,111,110,71,99,104,97,110,110,101,108,45,103, +101,116,71,99,104,97,110,110,101,108,45,112,117,116,75,99,104,97,110,110,101, +108,45,116,114,121,45,103,101,116,1,26,99,104,101,99,107,45,100,117,112,108, +105,99,97,116,101,45,105,100,101,110,116,105,102,105,101,114,75,99,111,108,108, +101,99,116,105,111,110,45,112,97,116,104,1,30,99,117,114,114,101,110,116,45, +98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, +110,1,25,99,117,114,114,101,110,116,45,108,111,97,100,47,117,115,101,45,99, +111,109,112,105,108,101,100,1,24,99,117,114,114,101,110,116,45,112,97,114,97, +109,101,116,101,114,105,122,97,116,105,111,110,1,20,102,105,110,100,45,101,120, +101,99,117,116,97,98,108,101,45,112,97,116,104,1,29,102,105,110,100,45,108, +105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45,112,97,116, +104,115,65,102,111,114,99,101,1,20,103,101,110,101,114,97,116,101,45,116,101, +109,112,111,114,97,114,105,101,115,69,103,117,97,114,100,45,101,118,116,71,105, +100,101,110,116,105,102,105,101,114,63,1,23,105,110,116,101,114,97,99,116,105, +111,110,45,101,110,118,105,114,111,110,109,101,110,116,73,108,111,97,100,45,114, +101,108,97,116,105,118,101,1,23,108,111,97,100,45,114,101,108,97,116,105,118, +101,45,101,120,116,101,110,115,105,111,110,67,108,111,97,100,47,99,100,77,108, +111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,76,110,111,114,109, +97,108,45,99,97,115,101,45,112,97,116,104,76,110,117,108,108,45,101,110,118, +105,114,111,110,109,101,110,116,1,27,112,97,116,104,45,108,105,115,116,45,115, +116,114,105,110,103,45,62,112,97,116,104,45,108,105,115,116,79,112,97,116,104, +45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,72,112,97,116,104,45, +115,116,114,105,110,103,63,65,112,111,114,116,63,68,112,114,111,109,105,115,101, +63,71,114,97,116,105,111,110,97,108,105,122,101,1,20,114,101,97,100,45,101, +118,97,108,45,112,114,105,110,116,45,108,111,111,112,1,25,115,99,104,101,109, +101,45,114,101,112,111,114,116,45,101,110,118,105,114,111,110,109,101,110,116,64, +108,101,116,42,77,117,110,115,121,110,116,97,120,45,115,112,108,105,99,105,110, +103,62,111,114,77,35,37,116,111,112,45,105,110,116,101,114,97,99,116,105,111, +110,64,99,111,110,100,71,119,105,116,104,45,115,121,110,116,97,120,63,108,101, +116,79,109,101,109,111,114,121,45,116,114,97,99,101,45,108,97,109,98,100,97, +64,119,104,101,110,71,115,121,110,116,97,120,45,99,97,115,101,66,117,110,108, +101,115,115,70,115,121,110,116,97,120,47,108,111,99,63,97,110,100,78,112,97, +114,97,109,101,116,101,114,105,122,101,45,98,114,101,97,107,69,102,108,117,105, +100,45,108,101,116,70,108,101,116,45,115,121,110,116,97,120,76,98,101,103,105, +110,45,102,111,114,45,115,121,110,116,97,120,66,100,101,102,105,110,101,73,100, +101,102,105,110,101,45,115,116,114,117,99,116,62,100,111,75,113,117,97,115,105, +115,121,110,116,97,120,47,108,111,99,66,115,121,110,116,97,120,75,108,101,116, +114,101,99,45,115,121,110,116,97,120,101,115,73,108,101,116,114,101,99,45,115, +121,110,116,97,120,72,108,101,116,45,115,121,110,116,97,120,101,115,72,115,121, +110,116,97,120,45,114,117,108,101,115,75,115,121,110,116,97,120,45,105,100,45, +114,117,108,101,115,66,108,101,116,47,101,99,72,115,121,110,116,97,120,45,99, +97,115,101,42,72,112,97,114,97,109,101,116,101,114,105,122,101,73,119,105,116, +104,45,104,97,110,100,108,101,114,115,74,119,105,116,104,45,104,97,110,100,108, +101,114,115,42,64,99,97,115,101,65,100,101,108,97,121,66,108,101,116,47,99, +99,64,116,105,109,101,73,100,101,102,105,110,101,45,115,121,110,116,97,120,77, +100,101,102,105,110,101,45,102,111,114,45,115,121,110,116,97,120,66,108,101,116, +114,101,99,70,113,117,97,115,105,113,117,111,116,101,68,117,110,115,121,110,116, +97,120,71,113,117,97,115,105,115,121,110,116,97,120,71,115,101,116,33,45,118, +97,108,117,101,115,70,108,101,116,45,115,116,114,117,99,116,73,35,37,109,111, +114,101,45,115,99,104,101,109,101,66,35,37,109,105,115,99,76,35,37,115,116, +120,99,97,115,101,45,115,99,104,101,109,101,70,35,37,119,105,116,104,45,115, +116,120,65,35,37,115,116,120,71,35,37,113,113,45,97,110,100,45,111,114,67, +35,37,113,113,115,116,120,72,35,37,115,116,120,109,122,45,98,111,100,121,74, +35,37,100,101,102,105,110,101,45,101,116,45,97,108,68,35,37,115,116,120,108, +111,99,68,35,37,100,101,102,105,110,101,68,35,37,107,101,114,110,101,108,159, +34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20, +96,114,68,109,122,115,99,104,101,109,101,29,11,11,10,10,10,34,80,158,34, +34,20,99,159,34,16,0,16,0,2,1,10,16,0,34,11,16,78,2,2,2, +3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13, +2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2, +24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34, +2,35,1,28,109,122,115,99,104,101,109,101,45,105,110,45,115,116,120,45,109, +111,100,117,108,101,45,98,101,103,105,110,2,36,2,37,2,38,2,39,2,40, +2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,2, +51,2,52,2,1,2,53,2,54,2,55,2,56,2,57,2,58,2,59,2,60, +2,61,2,62,2,63,2,64,2,65,2,66,2,67,2,68,2,69,2,70,2, +71,2,72,2,73,2,74,2,75,2,76,2,77,16,78,2,78,2,78,2,78, +2,79,2,79,2,79,2,80,2,79,2,78,2,79,2,78,2,79,2,79,2, +78,2,81,2,79,2,82,2,79,2,79,2,79,2,79,2,79,2,79,2,79, +2,79,2,79,2,79,2,79,2,78,2,79,2,79,2,79,2,83,2,84,2, +85,2,83,2,85,66,35,37,99,111,110,100,2,81,2,83,2,79,2,86,2, +87,2,86,2,87,2,83,2,78,2,78,2,80,2,88,2,88,2,86,2,89, +2,78,2,84,69,35,37,115,116,120,99,97,115,101,2,80,2,80,2,80,2, +80,2,80,2,86,2,87,2,78,2,78,2,78,2,78,2,78,2,78,2,78, +2,88,2,88,2,83,2,83,2,84,2,84,2,78,2,78,16,78,2,2,2, +3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13, +2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2, +24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34, +2,35,2,1,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2, +44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,1,20,35,37, +112,108,97,105,110,45,109,111,100,117,108,101,45,98,101,103,105,110,2,53,2, +54,2,55,2,56,2,57,2,58,2,59,2,60,2,61,2,62,2,63,2,64, +2,65,2,66,2,67,2,68,2,69,2,70,2,71,2,72,2,73,2,74,2, +75,2,76,2,77,8,32,8,78,9,9,101,2,89,2,78,2,79,2,80,2, +82,2,85,2,84,2,88,68,35,37,101,120,112,111,98,115,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2075); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,136,252,51,13,159,34,20,99,159,34,16,1,20, -24,65,98,101,103,105,110,0,16,0,83,158,41,20,96,114,66,35,37,114,53, -114,115,1,29,2,11,11,10,10,10,35,80,158,34,34,20,99,159,34,16,1, -30,3,2,2,69,117,110,100,101,102,105,110,101,100,4,254,1,16,0,11,11, -16,1,2,4,35,11,16,25,64,108,101,116,42,5,66,108,97,109,98,100,97, -6,73,100,101,102,105,110,101,45,115,121,110,116,97,120,7,70,113,117,97,115, -105,113,117,111,116,101,8,63,97,110,100,9,65,100,101,108,97,121,10,77,35, -37,116,111,112,45,105,110,116,101,114,97,99,116,105,111,110,11,71,114,53,114, -115,58,108,101,116,114,101,99,12,62,111,114,13,65,35,37,97,112,112,14,62, -100,111,15,67,35,37,100,97,116,117,109,16,63,108,101,116,17,64,99,111,110, -100,18,67,117,110,113,117,111,116,101,19,70,108,101,116,45,115,121,110,116,97, -120,20,76,117,110,113,117,111,116,101,45,115,112,108,105,99,105,110,103,21,66, -100,101,102,105,110,101,22,64,115,101,116,33,23,2,0,62,105,102,24,65,113, -117,111,116,101,25,73,108,101,116,114,101,99,45,115,121,110,116,97,120,26,64, -99,97,115,101,27,65,35,37,116,111,112,28,16,25,71,35,37,113,113,45,97, -110,100,45,111,114,29,68,35,37,107,101,114,110,101,108,30,68,35,37,100,101, -102,105,110,101,31,2,29,2,29,73,35,37,109,111,114,101,45,115,99,104,101, -109,101,32,72,35,37,115,116,120,109,122,45,98,111,100,121,33,11,2,29,2, -30,2,32,2,30,2,29,66,35,37,99,111,110,100,34,2,30,76,35,37,115, -116,120,99,97,115,101,45,115,99,104,101,109,101,35,2,30,2,31,2,30,2, -30,2,30,2,30,2,35,2,32,2,30,16,25,2,5,2,6,2,7,2,8, -2,9,2,10,2,11,66,108,101,116,114,101,99,36,2,13,2,14,2,15,2, -16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,0,2,24,2,25, -2,26,2,27,2,28,34,59,93,16,5,93,2,12,87,98,83,159,34,93,80, -159,34,8,30,35,89,162,35,35,41,9,223,0,251,80,158,38,46,20,15,159, -38,44,47,21,94,3,1,4,103,57,53,50,37,3,1,4,103,57,53,49,38, -248,22,58,198,248,22,84,198,83,159,34,93,80,159,34,8,29,35,89,162,35, -35,41,9,223,0,251,80,158,38,46,20,15,159,38,40,47,21,94,3,1,4, -103,57,52,54,39,3,1,4,103,57,52,53,40,248,22,58,198,248,22,84,198, -83,159,34,93,80,159,34,8,28,35,89,162,35,35,41,9,223,0,251,80,158, -38,46,20,15,159,38,39,47,21,94,3,1,4,103,57,52,51,41,3,1,4, -103,57,52,50,42,248,22,58,198,248,22,84,198,83,159,34,93,80,159,34,8, -27,35,89,162,35,35,40,9,223,0,250,80,158,37,46,20,15,159,37,38,47, -21,93,3,1,4,103,57,52,49,43,248,22,58,197,83,159,34,93,80,159,34, -8,26,35,89,162,35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,35, -47,21,94,3,1,4,103,57,51,55,44,3,1,4,103,57,51,54,45,248,22, -58,198,248,22,84,198,89,162,34,35,54,9,223,0,27,28,248,80,158,36,34, -195,249,80,158,37,35,248,80,158,38,36,197,27,248,80,158,39,37,198,28,248, -80,158,39,34,193,249,80,158,40,38,27,248,80,158,42,36,196,28,248,80,158, -42,39,193,248,22,8,89,162,34,35,41,9,224,8,1,27,249,22,2,89,162, -34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249,80, -158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41, -34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,41,248,80,158, -44,37,196,11,11,194,248,80,158,39,42,196,28,248,22,63,193,21,94,9,9, -248,80,158,37,43,193,11,27,248,80,158,42,37,196,28,248,80,158,42,39,193, -248,80,158,42,42,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, -27,248,22,93,196,27,248,22,94,197,249,80,158,41,44,200,27,250,22,67,200, -198,199,250,80,158,45,45,89,162,34,34,45,9,224,11,3,252,80,158,40,46, -20,15,159,40,34,47,21,95,3,1,4,103,57,52,48,46,3,1,4,103,57, -51,57,47,3,1,4,103,57,51,56,48,248,22,58,198,250,22,2,80,159,43, -8,26,35,248,22,58,201,248,22,86,201,248,22,84,198,21,99,2,12,6,19, -19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109,101,115,49, -94,64,118,97,114,49,50,63,46,46,46,51,9,94,94,2,50,65,105,110,105, -116,49,52,2,51,64,98,111,100,121,53,2,51,20,15,159,45,36,47,27,28, -248,80,158,37,34,196,249,80,158,38,35,248,80,158,39,36,198,27,248,80,158, -40,37,199,28,248,80,158,40,34,193,28,27,248,80,158,41,36,194,28,249,22, -252,21,2,6,19,19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110, -97,109,101,115,54,248,22,217,195,9,11,27,248,80,158,41,37,194,28,248,80, -158,41,34,193,28,248,80,158,41,41,248,80,158,42,36,194,27,248,80,158,42, -37,194,28,248,80,158,42,34,193,249,80,158,43,38,27,248,80,158,45,36,196, -28,248,80,158,45,39,193,248,22,65,248,80,158,46,42,194,11,27,248,80,158, -45,37,196,28,248,80,158,45,34,193,249,80,158,46,38,27,248,80,158,48,36, -196,28,248,80,158,48,39,193,248,22,8,89,162,34,35,41,9,224,14,1,27, -249,22,2,89,162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158, -38,34,197,249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200, -28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158, -43,41,248,80,158,44,37,196,11,11,194,248,80,158,39,42,196,28,248,22,63, -193,21,94,9,9,248,80,158,37,43,193,11,27,248,80,158,48,37,196,28,248, -80,158,48,39,193,248,80,158,48,42,193,11,11,11,11,11,11,11,11,28,192, -27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27, -248,22,95,198,249,80,158,43,44,202,27,251,22,67,199,202,200,201,250,80,158, -47,45,89,162,34,34,47,9,224,13,3,252,80,158,40,46,20,15,159,40,37, -47,21,95,3,1,4,103,57,52,57,55,3,1,4,103,57,52,56,56,3,1, -4,103,57,52,55,57,249,22,2,80,159,42,8,27,35,248,22,94,200,250,22, -2,80,159,43,8,28,35,248,22,84,201,248,22,93,201,249,22,71,250,22,2, -80,159,45,8,29,35,248,22,94,203,248,22,84,203,250,80,158,45,46,20,15, -159,45,41,47,21,93,3,1,4,103,57,52,52,58,248,22,58,203,21,95,2, -17,94,94,2,50,2,4,2,51,97,2,17,94,94,65,116,101,109,112,49,59, -2,52,2,51,95,2,23,2,50,2,59,2,51,96,2,17,9,2,53,2,51, -20,15,159,47,42,47,27,28,248,80,158,38,34,197,249,80,158,39,35,248,80, -158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,28,27,248, -80,158,42,36,194,28,249,22,252,21,2,6,19,19,103,101,110,101,114,97,116, -101,95,116,101,109,112,95,110,97,109,101,115,60,248,22,217,195,9,11,27,248, -80,158,42,37,194,28,248,80,158,42,34,193,249,80,158,43,38,27,248,80,158, -45,36,196,28,248,80,158,45,34,193,249,80,158,46,35,248,80,158,47,36,195, -27,248,80,158,48,37,196,28,248,80,158,48,39,193,248,22,65,248,80,158,49, -42,194,11,11,27,248,80,158,45,37,196,28,248,80,158,45,34,193,249,80,158, -46,38,27,248,80,158,48,36,196,28,248,80,158,48,39,193,248,22,65,248,80, -158,49,42,194,11,27,248,80,158,48,37,196,28,248,80,158,48,34,193,249,80, -158,49,38,27,248,80,158,51,36,196,28,248,80,158,51,39,193,248,22,8,89, -162,34,35,41,9,224,17,1,27,249,22,2,89,162,34,35,46,9,224,4,5, -249,80,158,37,40,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158,40, -36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35, -248,80,158,43,36,195,248,80,158,43,41,248,80,158,44,37,196,11,11,194,248, -80,158,39,42,196,28,248,22,63,193,21,94,9,9,248,80,158,37,43,193,11, -27,248,80,158,51,37,196,28,248,80,158,51,39,193,248,80,158,51,42,193,11, -11,11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22, -93,196,27,248,22,96,197,27,249,22,76,199,38,27,249,22,76,200,39,27,249, -22,75,201,40,249,80,158,46,44,205,27,252,22,67,201,202,204,200,203,250,80, -158,50,45,89,162,34,34,46,9,224,16,3,253,80,158,41,46,20,15,159,41, -43,47,21,96,3,1,4,103,57,53,53,61,3,1,4,103,57,53,48,62,3, -1,4,103,57,53,52,63,3,1,4,103,57,53,51,64,248,22,93,199,248,22, -95,199,250,22,2,80,159,44,8,30,35,248,22,84,202,248,22,58,202,248,22, -96,199,21,99,2,12,6,19,19,103,101,110,101,114,97,116,101,95,116,101,109, -112,95,110,97,109,101,115,65,94,61,121,66,2,51,95,67,110,101,119,116,101, -109,112,67,64,116,101,109,112,68,2,51,94,94,2,50,2,52,2,51,2,53, -2,51,20,15,159,50,45,47,250,22,252,47,2,11,6,10,10,98,97,100,32, -115,121,110,116,97,120,69,199,34,20,99,159,39,16,13,30,70,65,35,37,115, -116,120,71,69,115,116,120,45,112,97,105,114,63,72,11,30,73,2,71,67,99, -111,110,115,47,35,102,74,1,30,75,2,71,67,115,116,120,45,99,97,114,76, -5,30,77,2,71,67,115,116,120,45,99,100,114,78,6,30,79,2,71,69,97, -112,112,101,110,100,47,35,102,80,0,30,81,2,71,69,115,116,120,45,108,105, -115,116,63,82,8,30,83,2,71,73,115,116,120,45,99,104,101,99,107,47,101, -115,99,84,7,30,85,2,71,71,115,116,120,45,110,117,108,108,47,35,102,86, -9,30,87,2,71,69,115,116,120,45,62,108,105,115,116,88,4,30,89,2,71, -70,115,116,120,45,114,111,116,97,116,101,90,12,30,91,68,35,37,115,116,120, -108,111,99,92,68,114,101,108,111,99,97,116,101,93,0,30,94,69,35,37,115, -116,120,99,97,115,101,95,1,20,99,97,116,99,104,45,101,108,108,105,112,115, -105,115,45,101,114,114,111,114,96,1,30,97,2,95,1,24,97,112,112,108,121, -45,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,98,0, -16,12,18,158,164,39,99,2,12,41,98,39,10,34,11,93,159,68,109,122,115, -99,104,101,109,101,99,9,11,16,4,2,12,2,2,2,4,2,2,98,38,10, -35,11,93,159,2,99,9,11,16,0,96,37,8,254,1,11,16,0,16,8,36, -11,3,1,4,103,57,51,51,100,3,1,4,103,57,51,52,101,3,1,4,103, -57,51,53,102,3,1,7,101,110,118,52,56,49,56,103,2,103,2,103,16,8, -35,11,2,50,2,52,2,53,3,1,7,101,110,118,52,56,49,57,104,2,104, -2,104,158,2,49,41,158,2,46,41,158,9,41,158,2,47,41,2,48,41,41, -18,158,95,10,2,44,2,45,41,18,16,2,96,2,51,43,93,8,252,233,15, -16,4,42,11,61,114,105,3,1,7,101,110,118,52,56,50,57,106,95,9,8, -252,233,15,2,95,18,158,95,99,2,17,46,39,38,37,16,10,45,11,3,1, -4,103,57,50,56,107,3,1,4,103,57,50,57,108,3,1,4,103,57,51,48, -109,3,1,4,103,57,51,49,110,3,1,7,101,110,118,52,56,52,55,111,2, -111,2,111,2,111,16,10,44,11,2,59,2,50,2,52,2,53,3,1,7,101, -110,118,52,56,52,56,112,2,112,2,112,2,112,158,2,55,46,158,160,10,2, -17,2,56,2,57,46,46,18,158,95,10,2,43,2,4,46,18,158,95,10,2, -41,2,42,46,18,158,96,10,2,23,2,39,2,40,46,18,16,2,103,93,158, -160,10,2,17,9,2,58,46,54,98,53,10,34,11,95,159,68,35,37,112,97, -114,97,109,122,113,9,11,159,74,35,37,115,109,97,108,108,45,115,99,104,101, -109,101,114,9,11,159,2,71,9,11,16,14,73,115,121,110,116,97,120,45,99, -97,115,101,42,42,115,29,116,11,11,1,26,100,97,116,117,109,45,62,115,121, -110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112,101,117,2,116,66, -115,121,110,116,97,120,118,2,116,2,98,2,116,78,112,97,116,116,101,114,110, -45,115,117,98,115,116,105,116,117,116,101,119,2,116,75,115,117,98,115,116,105, -116,117,116,101,45,115,116,111,112,120,2,116,2,96,2,116,98,52,10,35,11, -95,159,64,35,37,115,99,121,9,11,159,2,114,9,11,159,2,71,9,11,16, -0,96,51,8,254,1,11,16,0,16,4,50,11,61,120,122,3,1,6,101,110, -118,52,53,52,123,16,4,49,11,68,104,101,114,101,45,115,116,120,124,3,1, -6,101,110,118,52,53,54,125,16,4,48,11,2,124,2,125,13,16,4,35,2, -116,2,95,11,93,8,252,241,15,16,4,47,11,2,105,3,1,7,101,110,118, -52,56,54,48,126,95,9,8,252,241,15,2,95,18,16,2,96,2,51,56,93, -8,252,241,15,16,4,55,11,2,105,2,126,95,9,8,252,241,15,2,95,18, -158,164,39,99,2,12,59,39,38,37,16,14,58,11,3,1,4,103,57,50,49, -127,3,1,4,103,57,50,50,128,3,1,4,103,57,50,51,129,3,1,4,103, -57,50,52,130,3,1,4,103,57,50,53,131,3,1,4,103,57,50,54,132,3, -1,7,101,110,118,52,56,56,52,133,2,133,2,133,2,133,2,133,2,133,16, -14,57,11,2,122,2,66,2,68,2,50,2,52,2,53,3,1,7,101,110,118, -52,56,56,53,134,2,134,2,134,2,134,2,134,2,134,158,2,65,59,158,2, -61,59,158,159,10,2,67,2,62,59,158,2,63,59,2,64,59,59,18,158,95, -10,2,37,2,38,59,18,16,2,96,2,51,8,27,93,8,252,253,15,16,4, -8,26,11,2,105,3,1,7,101,110,118,52,57,48,49,135,95,9,8,252,253, -15,2,95,11,93,83,159,34,93,80,159,34,34,35,91,159,35,10,90,161,35, -34,10,207,207,93,2,99,93,2,99,0}; - EVAL_ONE_SIZED_STR((char *)expr, 3391); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,99,0,0,0,1,0,0,6,0,9,0,19,0, +24,0,31,0,45,0,59,0,70,0,73,0,78,0,89,0,95,0,107,0,115, +0,121,0,126,0,134,0,139,0,156,0,163,0,166,0,172,0,178,0,182,0, +200,0,204,0,207,0,219,0,228,0,245,0,3,1,12,1,19,1,26,1,33, +1,40,1,47,1,54,1,61,1,68,1,75,1,82,1,89,1,96,1,118,1, +123,1,127,1,133,1,138,1,145,1,152,1,159,1,166,1,172,1,179,1,186, +1,193,1,200,1,222,1,224,1,232,1,237,1,243,1,253,1,19,2,45,2, +54,2,64,2,74,2,76,2,86,2,96,2,111,2,114,2,116,2,125,2,134, +2,144,2,154,2,164,2,170,2,182,2,202,2,0,3,17,3,27,3,60,3, +127,3,144,3,154,3,164,3,176,3,171,4,196,4,33,5,54,5,64,5,97, +5,0,0,91,13,0,0,65,98,101,103,105,110,29,11,11,69,117,110,100,101, +102,105,110,101,100,64,108,101,116,42,66,100,101,102,105,110,101,73,108,101,116, +114,101,99,45,115,121,110,116,97,120,73,100,101,102,105,110,101,45,115,121,110, +116,97,120,70,113,117,97,115,105,113,117,111,116,101,62,100,111,64,115,101,116, +33,70,108,101,116,45,115,121,110,116,97,120,65,35,37,97,112,112,71,114,53, +114,115,58,108,101,116,114,101,99,67,35,37,100,97,116,117,109,65,35,37,116, +111,112,64,99,111,110,100,67,117,110,113,117,111,116,101,64,99,97,115,101,76, +117,110,113,117,111,116,101,45,115,112,108,105,99,105,110,103,66,108,97,109,98, +100,97,62,105,102,65,113,117,111,116,101,65,100,101,108,97,121,63,108,101,116, +77,35,37,116,111,112,45,105,110,116,101,114,97,99,116,105,111,110,63,97,110, +100,62,111,114,71,35,37,113,113,45,97,110,100,45,111,114,68,35,37,100,101, +102,105,110,101,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101, +73,35,37,109,111,114,101,45,115,99,104,101,109,101,68,35,37,107,101,114,110, +101,108,3,1,4,103,57,53,50,3,1,4,103,57,53,49,3,1,4,103,57, +52,54,3,1,4,103,57,52,53,3,1,4,103,57,52,51,3,1,4,103,57, +52,50,3,1,4,103,57,52,49,3,1,4,103,57,51,55,3,1,4,103,57, +51,54,3,1,4,103,57,52,48,3,1,4,103,57,51,57,3,1,4,103,57, +51,56,6,19,19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97, +109,101,115,64,118,97,114,49,63,46,46,46,65,105,110,105,116,49,64,98,111, +100,121,3,1,4,103,57,52,57,3,1,4,103,57,52,56,3,1,4,103,57, +52,55,3,1,4,103,57,52,52,65,116,101,109,112,49,3,1,4,103,57,53, +53,3,1,4,103,57,53,48,3,1,4,103,57,53,52,3,1,4,103,57,53, +51,6,19,19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109, +101,115,61,121,67,110,101,119,116,101,109,112,64,116,101,109,112,65,35,37,115, +116,120,69,35,37,115,116,120,99,97,115,101,1,20,99,97,116,99,104,45,101, +108,108,105,112,115,105,115,45,101,114,114,111,114,1,24,97,112,112,108,121,45, +112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,68,109,122, +115,99,104,101,109,101,3,1,7,101,110,118,52,56,49,56,3,1,7,101,110, +118,52,56,49,57,61,114,3,1,7,101,110,118,52,56,52,55,3,1,7,101, +110,118,52,56,52,56,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101, +29,11,11,61,120,68,104,101,114,101,45,115,116,120,3,1,6,101,110,118,52, +53,54,3,1,7,101,110,118,52,56,54,48,3,1,7,101,110,118,52,56,56, +52,3,1,7,101,110,118,52,56,56,53,95,8,193,11,16,0,97,10,35,11, +93,159,2,67,9,11,16,0,97,10,34,11,93,159,2,67,9,11,16,4,2, +13,2,2,2,3,2,2,97,8,83,8,82,8,81,16,8,11,11,3,1,4, +103,57,51,51,3,1,4,103,57,51,52,3,1,4,103,57,51,53,2,68,2, +68,2,68,16,8,11,11,2,46,2,48,2,49,2,69,2,69,2,69,18,158, +163,10,2,13,2,45,2,42,9,2,43,2,44,8,84,18,158,95,10,2,40, +2,41,8,84,18,16,2,95,2,47,93,8,169,63,16,4,11,11,2,70,3, +1,7,101,110,118,52,56,50,57,95,9,8,169,63,2,64,97,8,83,8,82, +8,81,16,10,11,11,3,1,4,103,57,50,56,3,1,4,103,57,50,57,3, +1,4,103,57,51,48,3,1,4,103,57,51,49,2,71,2,71,2,71,2,71, +16,10,11,11,2,54,2,46,2,48,2,49,2,72,2,72,2,72,2,72,18, +158,96,10,2,24,2,50,159,2,24,2,51,2,52,8,88,18,158,95,10,2, +39,2,3,8,88,18,158,95,10,2,37,2,38,8,88,18,158,96,10,2,10, +2,35,2,36,8,88,18,16,2,103,93,158,160,10,2,24,9,2,53,8,88, +97,10,34,11,95,159,68,35,37,112,97,114,97,109,122,9,11,159,2,73,9, +11,159,2,63,9,11,16,14,73,115,121,110,116,97,120,45,99,97,115,101,42, +42,2,74,1,26,100,97,116,117,109,45,62,115,121,110,116,97,120,45,111,98, +106,101,99,116,47,115,104,97,112,101,2,74,78,112,97,116,116,101,114,110,45, +115,117,98,115,116,105,116,117,116,101,2,74,2,66,2,74,66,115,121,110,116, +97,120,2,74,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,2, +74,2,65,2,74,97,10,35,11,95,159,64,35,37,115,99,9,11,159,2,73, +9,11,159,2,63,9,11,16,0,95,8,193,11,16,0,16,4,11,11,2,75, +3,1,6,101,110,118,52,53,52,16,4,11,11,2,76,2,77,16,4,11,11, +2,76,2,77,16,4,11,11,2,76,3,1,6,101,110,118,52,53,56,13,16, +4,35,2,74,2,64,11,93,8,177,63,16,4,11,11,2,70,2,78,95,9, +8,177,63,2,64,18,16,2,95,2,47,93,8,177,63,16,4,11,11,2,70, +2,78,95,9,8,177,63,2,64,97,8,83,8,82,8,81,16,14,11,11,3, +1,4,103,57,50,49,3,1,4,103,57,50,50,3,1,4,103,57,50,51,3, +1,4,103,57,50,52,3,1,4,103,57,50,53,3,1,4,103,57,50,54,2, +79,2,79,2,79,2,79,2,79,2,79,16,14,11,11,2,75,2,60,2,62, +2,46,2,48,2,49,2,80,2,80,2,80,2,80,2,80,2,80,18,158,163, +10,2,13,2,59,2,55,158,2,61,2,56,2,57,2,58,8,95,18,158,95, +10,2,33,2,34,8,95,18,16,2,95,2,47,93,8,189,63,16,4,11,11, +2,70,3,1,7,101,110,118,52,57,48,49,95,9,8,189,63,2,64,159,34, +20,99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114,66,35,37, +114,53,114,115,2,2,10,10,10,35,80,158,34,34,20,99,159,34,16,1,30, +2,2,2,3,193,16,0,11,11,16,1,2,3,35,11,16,25,2,4,2,5, +2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2, +16,2,17,2,18,2,19,2,20,2,1,2,21,2,22,2,23,2,24,2,25, +2,26,2,27,16,25,2,28,2,29,2,30,2,29,2,28,2,31,2,32,2, +30,2,32,11,2,32,2,32,66,35,37,99,111,110,100,2,32,2,31,2,32, +2,32,2,32,2,32,2,32,2,31,2,28,72,35,37,115,116,120,109,122,45, +98,111,100,121,2,28,2,28,16,25,2,4,2,5,2,6,2,7,2,8,2, +9,2,10,2,11,2,12,66,108,101,116,114,101,99,2,14,2,15,2,16,2, +17,2,18,2,19,2,20,2,1,2,21,2,22,2,23,2,24,2,25,2,26, +2,27,34,59,93,16,5,93,2,13,87,98,83,158,34,16,2,89,162,35,35, +41,9,223,0,251,80,158,38,46,20,15,159,38,44,47,21,94,2,33,2,34, +248,22,58,198,248,22,84,198,80,159,34,8,30,35,83,158,34,16,2,89,162, +35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,40,47,21,94,2,35, +2,36,248,22,58,198,248,22,84,198,80,159,34,8,29,35,83,158,34,16,2, +89,162,35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,39,47,21,94, +2,37,2,38,248,22,58,198,248,22,84,198,80,159,34,8,28,35,83,158,34, +16,2,89,162,35,35,40,9,223,0,250,80,158,37,46,20,15,159,37,38,47, +21,93,2,39,248,22,58,197,80,159,34,8,27,35,83,158,34,16,2,89,162, +35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,35,47,21,94,2,40, +2,41,248,22,58,198,248,22,84,198,80,159,34,8,26,35,89,162,34,35,54, +9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36, +197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,38,27, +248,80,158,42,36,196,28,248,80,158,42,39,193,248,22,8,89,162,34,35,41, +9,224,8,1,27,249,22,2,89,162,34,35,46,9,224,4,5,249,80,158,37, +40,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158,40,36,199,27,248, +80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43, +36,195,248,80,158,43,41,248,80,158,44,37,196,11,11,194,248,80,158,39,42, +196,28,248,22,63,193,21,94,9,9,248,80,158,37,43,193,11,27,248,80,158, +42,37,196,28,248,80,158,42,39,193,248,80,158,42,42,193,11,11,11,28,192, +27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197,249, +80,158,41,44,200,27,250,22,67,200,198,199,250,80,158,45,45,89,162,34,34, +45,9,224,11,3,252,80,158,40,46,20,15,159,40,34,47,21,95,2,42,2, +43,2,44,248,22,58,198,250,22,2,80,159,43,8,26,35,248,22,58,201,248, +22,86,201,248,22,84,198,21,99,2,13,2,45,94,2,46,2,47,9,94,94, +2,46,2,48,2,47,2,49,2,47,20,15,159,45,36,47,27,28,248,80,158, +37,34,196,249,80,158,38,35,248,80,158,39,36,198,27,248,80,158,40,37,199, +28,248,80,158,40,34,193,28,27,248,80,158,41,36,194,28,249,22,149,8,6, +19,19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109,101,115, +248,22,153,3,195,9,11,27,248,80,158,41,37,194,28,248,80,158,41,34,193, +28,248,80,158,41,41,248,80,158,42,36,194,27,248,80,158,42,37,194,28,248, +80,158,42,34,193,249,80,158,43,38,27,248,80,158,45,36,196,28,248,80,158, +45,39,193,248,22,65,248,80,158,46,42,194,11,27,248,80,158,45,37,196,28, +248,80,158,45,34,193,249,80,158,46,38,27,248,80,158,48,36,196,28,248,80, +158,48,39,193,248,22,8,89,162,34,35,41,9,224,14,1,27,249,22,2,89, +162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249, +80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158, +41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,41,248,80, +158,44,37,196,11,11,194,248,80,158,39,42,196,28,248,22,63,193,21,94,9, +9,248,80,158,37,43,193,11,27,248,80,158,48,37,196,28,248,80,158,48,39, +193,248,80,158,48,42,193,11,11,11,11,11,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, +249,80,158,43,44,202,27,251,22,67,199,201,202,200,250,80,158,47,45,89,162, +34,34,47,9,224,13,3,252,80,158,40,46,20,15,159,40,37,47,21,95,2, +50,2,51,2,52,249,22,2,80,159,42,8,27,35,248,22,84,200,250,22,2, +80,159,43,8,28,35,248,22,93,201,248,22,94,201,249,22,71,250,22,2,80, +159,45,8,29,35,248,22,84,203,248,22,93,203,250,80,158,45,46,20,15,159, +45,41,47,21,93,2,53,248,22,58,203,21,95,2,24,94,94,2,46,2,3, +2,47,97,2,24,94,94,2,54,2,48,2,47,95,2,10,2,46,2,54,2, +47,96,2,24,9,2,49,2,47,20,15,159,47,42,47,27,28,248,80,158,38, +34,197,249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28, +248,80,158,41,34,193,28,27,248,80,158,42,36,194,28,249,22,149,8,6,19, +19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109,101,115,248, +22,153,3,195,9,11,27,248,80,158,42,37,194,28,248,80,158,42,34,193,249, +80,158,43,38,27,248,80,158,45,36,196,28,248,80,158,45,34,193,249,80,158, +46,35,248,80,158,47,36,195,27,248,80,158,48,37,196,28,248,80,158,48,39, +193,248,22,65,248,80,158,49,42,194,11,11,27,248,80,158,45,37,196,28,248, +80,158,45,34,193,249,80,158,46,38,27,248,80,158,48,36,196,28,248,80,158, +48,39,193,248,22,65,248,80,158,49,42,194,11,27,248,80,158,48,37,196,28, +248,80,158,48,34,193,249,80,158,49,38,27,248,80,158,51,36,196,28,248,80, +158,51,39,193,248,22,8,89,162,34,35,41,9,224,17,1,27,249,22,2,89, +162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249, +80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158, +41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,41,248,80, +158,44,37,196,11,11,194,248,80,158,39,42,196,28,248,22,63,193,21,94,9, +9,248,80,158,37,43,193,11,27,248,80,158,51,37,196,28,248,80,158,51,39, +193,248,80,158,51,42,193,11,11,11,11,11,11,11,28,192,27,248,22,58,194, +27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,249,22,76,199,38, +27,249,22,76,200,39,27,249,22,75,201,40,249,80,158,46,44,205,27,252,22, +67,202,200,204,203,201,250,80,158,50,45,89,162,34,34,46,9,224,16,3,253, +80,158,41,46,20,15,159,41,43,47,21,96,2,55,2,56,2,57,2,58,248, +22,93,199,248,22,96,199,250,22,2,80,159,44,8,30,35,248,22,58,202,248, +22,95,202,248,22,84,199,21,99,2,13,2,59,94,2,60,2,47,95,2,61, +2,62,2,47,94,94,2,46,2,48,2,47,2,49,2,47,20,15,159,50,45, +47,250,22,175,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,199,34, +20,99,159,39,16,13,30,2,63,69,115,116,120,45,112,97,105,114,63,11,30, +2,63,67,99,111,110,115,47,35,102,1,30,2,63,67,115,116,120,45,99,97, +114,5,30,2,63,67,115,116,120,45,99,100,114,6,30,2,63,69,97,112,112, +101,110,100,47,35,102,0,30,2,63,69,115,116,120,45,108,105,115,116,63,8, +30,2,63,73,115,116,120,45,99,104,101,99,107,47,101,115,99,7,30,2,63, +71,115,116,120,45,110,117,108,108,47,35,102,9,30,2,63,69,115,116,120,45, +62,108,105,115,116,4,30,2,63,70,115,116,120,45,114,111,116,97,116,101,12, +30,68,35,37,115,116,120,108,111,99,68,114,101,108,111,99,97,116,101,0,30, +2,64,2,65,1,30,2,64,2,66,0,16,12,33,85,33,86,33,87,33,89, +33,90,33,91,33,92,33,93,33,94,33,96,33,97,33,98,11,93,83,158,34, +16,2,91,159,35,10,90,161,35,34,10,207,207,80,159,34,34,35,93,2,67, +93,2,67,0}; + EVAL_ONE_SIZED_STR((char *)expr, 3636); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,5,89,159,34,20,99,159,34,16,1,20,24,65, -98,101,103,105,110,0,16,0,83,160,42,80,158,34,34,34,18,158,94,96,67, -114,101,113,117,105,114,101,1,36,10,11,158,96,10,64,111,110,108,121,2,68, -109,122,115,99,104,101,109,101,3,1,22,110,97,109,101,115,112,97,99,101,45, -114,101,113,117,105,114,101,47,99,111,112,121,4,36,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 99); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,2,0,0,0,1,0,0,3,0,0,0,81,0, +0,0,94,10,11,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110, +16,0,83,160,41,80,158,34,34,34,18,158,95,10,67,114,101,113,117,105,114, +101,95,64,111,110,108,121,68,109,122,115,99,104,101,109,101,1,22,110,97,109, +101,115,112,97,99,101,45,114,101,113,117,105,114,101,47,99,111,112,121,35,0}; + EVAL_ONE_SIZED_STR((char *)expr, 104); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,3,77,159,35,20,99,159,34,16,1,20,24,65, -98,101,103,105,110,0,16,0,83,158,46,87,94,248,22,248,68,109,122,115,99, -104,101,109,101,1,83,160,42,80,158,34,34,35,18,158,94,96,78,114,101,113, -117,105,114,101,45,102,111,114,45,115,121,110,116,97,120,2,36,10,11,158,2, -1,36,36,0}; + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,3,0,0,0,1,0,0,9,0,12,0,0,0, +75,0,0,0,68,109,122,115,99,104,101,109,101,94,10,11,159,35,20,99,159, +34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,45,87,94,248,22,184, +3,2,1,83,160,41,80,158,34,34,35,18,158,95,10,78,114,101,113,117,105, +114,101,45,102,111,114,45,115,121,110,116,97,120,2,1,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 100); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,51,1,0,0,0,0,0,0,0,0,66,0,0,0, +159,38,20,99,159,34,16,0,16,0,248,22,176,3,248,249,22,178,3,66,35, +37,109,105,115,99,1,34,109,97,107,101,45,115,116,97,110,100,97,114,100,45, +109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,247, +22,158,11,0}; EVAL_ONE_SIZED_STR((char *)expr, 87); } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,50,2,67,159,38,20,99,159,34,16,0,16,0,248, -22,240,248,249,22,242,66,35,37,109,105,115,99,0,1,34,109,97,107,101,45, -115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45,110,97,109,101,45, -114,101,115,111,108,118,101,114,1,247,22,252,222,2,0}; - EVAL_ONE_SIZED_STR((char *)expr, 77); - } diff --git a/src/mzscheme/src/env.c b/src/mzscheme/src/env.c index 8b4de0c77c..680c610f78 100644 --- a/src/mzscheme/src/env.c +++ b/src/mzscheme/src/env.c @@ -4228,7 +4228,7 @@ static Scheme_Object *read_local_unbox(Scheme_Object *obj) static Scheme_Object *write_resolve_prefix(Scheme_Object *obj) { Resolve_Prefix *rp = (Resolve_Prefix *)obj; - Scheme_Object *tv, *sv; + Scheme_Object *tv, *sv, *ds; int i; i = rp->num_toplevels; @@ -4240,7 +4240,10 @@ static Scheme_Object *write_resolve_prefix(Scheme_Object *obj) i = rp->num_stxes; sv = scheme_make_vector(i, NULL); while (i--) { - SCHEME_VEC_ELS(sv)[i] = rp->stxes[i]; + ds = scheme_alloc_small_object(); + ds->type = scheme_delay_syntax_type; + SCHEME_PTR_VAL(ds) = rp->stxes[i]; + SCHEME_VEC_ELS(sv)[i] = ds; } return scheme_make_pair(scheme_make_integer(rp->num_lifts), scheme_make_pair(tv, sv)); @@ -4249,7 +4252,7 @@ static Scheme_Object *write_resolve_prefix(Scheme_Object *obj) static Scheme_Object *read_resolve_prefix(Scheme_Object *obj) { Resolve_Prefix *rp; - Scheme_Object *tv, *sv, **a; + Scheme_Object *tv, *sv, **a, *stx; int i; if (!SCHEME_PAIRP(obj)) return NULL; @@ -4279,7 +4282,15 @@ static Scheme_Object *read_resolve_prefix(Scheme_Object *obj) i = rp->num_stxes; a = MALLOC_N(Scheme_Object *, i); while (i--) { - a[i] = SCHEME_VEC_ELS(sv)[i]; + stx = SCHEME_VEC_ELS(sv)[i]; + if (SCHEME_RPAIRP(stx)) { + rp->delay_info = (struct Scheme_Load_Delay *)SCHEME_CDR(stx); + rp->delay_refcount++; + stx = SCHEME_CAR(stx); + } else { + if (!SCHEME_STXP(stx)) return NULL; + } + a[i] = stx; } rp->stxes = a; diff --git a/src/mzscheme/src/error.c b/src/mzscheme/src/error.c index 21506b23ba..442f120187 100644 --- a/src/mzscheme/src/error.c +++ b/src/mzscheme/src/error.c @@ -63,7 +63,7 @@ static Scheme_Object *emergency_error_display_proc(int, Scheme_Object *[]); static Scheme_Object *def_error_value_string_proc(int, Scheme_Object *[]); static Scheme_Object *def_exit_handler_proc(int, Scheme_Object *[]); -static Scheme_Object *do_raise(Scheme_Object *arg, int return_ok, int need_debug); +static Scheme_Object *do_raise(Scheme_Object *arg, int need_debug); static Scheme_Object *nested_exn_handler(void *old_exn, int argc, Scheme_Object *argv[]); @@ -606,8 +606,6 @@ scheme_inescapeable_error(const char *a, const char *b) scheme_console_output(t, al + bl + 1); } -#define RAISE_RETURNED "exception handler did not escape" - static void call_error(char *buffer, int len, Scheme_Object *exn) { @@ -1838,7 +1836,7 @@ static Scheme_Object *do_error(int for_user, int argc, Scheme_Object *argv[]) newargs[1] = TMP_CMARK_VALUE; do_raise(scheme_make_struct_instance(exn_table[for_user ? MZEXN_FAIL_USER : MZEXN_FAIL].type, 2, newargs), - 0, 1); + 1); return scheme_void; #else @@ -2387,7 +2385,7 @@ scheme_raise_exn(int id, ...) do_raise(scheme_make_struct_instance(exn_table[id].type, c, eargs), - 0, 1); + 1); #else call_error(buffer, alen, scheme_false); #endif @@ -2439,22 +2437,30 @@ nested_exn_handler(void *old_exn, int argc, Scheme_Object *argv[]) { Scheme_Object *arg = argv[0], *orig_arg = SCHEME_CDR((Scheme_Object *)old_exn); long len, mlen = -1, orig_mlen = -1, blen; - char *buffer, *msg, *orig_msg, *raisetype, *orig_raisetype, *who; + char *buffer, *msg, *orig_msg, *raisetype, *orig_raisetype, *who, *sep; buffer = init_buf(&len, &blen); - - who = SCHEME_BYTE_STR_VAL(SCHEME_CAR((Scheme_Object *)old_exn)); - if (SCHEME_STRUCTP(arg) - && scheme_is_struct_instance(exn_table[MZEXN].type, arg)) { - Scheme_Object *str = ((Scheme_Structure *)arg)->slots[0]; - raisetype = "exception raised"; - str = scheme_char_string_to_byte_string(str); - msg = SCHEME_BYTE_STR_VAL(str); - mlen = SCHEME_BYTE_STRLEN_VAL(str); + if (SCHEME_FALSEP(SCHEME_CAR((Scheme_Object *)old_exn))) { + raisetype = ""; + sep = ""; + who = "handler for uncaught exceptions"; + msg = "did not escape"; } else { - msg = error_write_to_string_w_max(arg, len, NULL); - raisetype = "raise called (with non-exception value)"; + who = SCHEME_BYTE_STR_VAL(SCHEME_CAR((Scheme_Object *)old_exn)); + sep = " by "; + + if (SCHEME_STRUCTP(arg) + && scheme_is_struct_instance(exn_table[MZEXN].type, arg)) { + Scheme_Object *str = ((Scheme_Structure *)arg)->slots[0]; + raisetype = "exception raised"; + str = scheme_char_string_to_byte_string(str); + msg = SCHEME_BYTE_STR_VAL(str); + mlen = SCHEME_BYTE_STRLEN_VAL(str); + } else { + msg = error_write_to_string_w_max(arg, len, NULL); + raisetype = "raise called (with non-exception value)"; + } } if (SCHEME_STRUCTP(orig_arg) @@ -2470,9 +2476,8 @@ nested_exn_handler(void *old_exn, int argc, Scheme_Object *argv[]) } - blen = scheme_sprintf(buffer, blen, "%s by %s: %t; original %s: %t", - raisetype, - who, + blen = scheme_sprintf(buffer, blen, "%s%s%s: %t; original %s: %t", + raisetype, sep, who, msg, mlen, orig_raisetype, orig_msg, orig_mlen); @@ -2483,59 +2488,99 @@ nested_exn_handler(void *old_exn, int argc, Scheme_Object *argv[]) } static Scheme_Object * -do_raise(Scheme_Object *arg, int return_ok, int need_debug) +do_raise(Scheme_Object *arg, int need_debug) { - Scheme_Object *v, *p[1], *h; - Scheme_Cont_Frame_Data cframe, cframe2; + Scheme_Object *v, *p[1], *h, *marks; + Scheme_Cont_Mark_Chain *chain; + Scheme_Cont_Frame_Data cframe, cframe2; if (scheme_current_thread->skip_error) { scheme_longjmp (scheme_error_buf, 1); } + /* In case we need to chain to the previous exception + handler, collect all marks. In the common case, getting the + marks will be cheap, because we just got them for + the exception record (and they're cached) or we're getting + them now for the exception record. + Continuation jumps into an exception handler are + disallowed, so we don't have to worry about the + context changing by the time an exception handler + returns. */ + marks = scheme_current_continuation_marks(NULL); + chain = NULL; + if (need_debug) { - Scheme_Object *marks; - marks = scheme_current_continuation_marks(NULL); ((Scheme_Structure *)arg)->slots[1] = marks; } h = scheme_extract_one_cc_mark(NULL, scheme_exn_handler_key); - if (!h) { - h = scheme_get_param(scheme_current_config(), MZCONFIG_INIT_EXN_HANDLER); + + while (1) { + if (!h) { + h = scheme_get_param(scheme_current_config(), MZCONFIG_INIT_EXN_HANDLER); + marks = NULL; + } + + v = scheme_make_byte_string_without_copying("exception handler"); + v = scheme_make_closed_prim_w_arity(nested_exn_handler, + scheme_make_pair(v, arg), + "nested-exception-handler", + 1, 1); + + scheme_push_continuation_frame(&cframe); + scheme_set_cont_mark(scheme_exn_handler_key, v); + scheme_push_break_enable(&cframe2, 0, 0); + + p[0] = arg; + v = scheme_apply(h, 1, p); + + scheme_pop_break_enable(&cframe2, 0); + scheme_pop_continuation_frame(&cframe); + + /* Getting a value back means that we should chain to the + next exception handler; we supply the returned value to + the next exception handler (if any). */ + if (marks) { + chain = ((Scheme_Cont_Mark_Set *)marks)->chain; + marks = NULL; + /* Init chain to position of the handler we just + called. */ + while (chain->key != scheme_exn_handler_key) { + chain = chain->next; + } + } + + if (chain) { + chain = chain->next; + while (chain && (chain->key != scheme_exn_handler_key)) { + chain = chain->next; + } + + if (!chain) + h = NULL; /* use uncaught handler */ + else + h = chain->val; + arg = v; + } else { + /* return from uncaught-exception handler */ + p[0] = scheme_false; + return nested_exn_handler(scheme_make_pair(scheme_false, arg), 1, p); + } } - v = scheme_make_byte_string_without_copying("exception handler"); - v = scheme_make_closed_prim_w_arity(nested_exn_handler, - scheme_make_pair(v, arg), - "nested-exception-handler", - 1, 1); - - scheme_push_continuation_frame(&cframe); - scheme_set_cont_mark(scheme_exn_handler_key, v); - scheme_push_break_enable(&cframe2, 0, 0); - - p[0] = arg; - v = scheme_apply(h, 1, (Scheme_Object **)p); - - scheme_pop_break_enable(&cframe2, 0); - scheme_pop_continuation_frame(&cframe); - - if (return_ok) - return v; - - call_error(RAISE_RETURNED, -1, scheme_false); - return scheme_void; } static Scheme_Object * sch_raise(int argc, Scheme_Object *argv[]) { - return do_raise(argv[0], 0, 0); + return do_raise(argv[0], 0); } void scheme_raise(Scheme_Object *exn) { - do_raise(exn, 0, 0); + do_raise(exn, 0); } typedef Scheme_Object (*Scheme_Struct_Field_Guard_Proc)(int argc, Scheme_Object *v); diff --git a/src/mzscheme/src/eval.c b/src/mzscheme/src/eval.c index cf65b4541b..0124498e42 100644 --- a/src/mzscheme/src/eval.c +++ b/src/mzscheme/src/eval.c @@ -2831,7 +2831,7 @@ Scheme_Object *scheme_optimize_clone(int dup_ok, Scheme_Object *expr, Optimize_I head2->iso.so.type = scheme_compiled_let_void_type; head2->count = head->count; head2->num_clauses = head->num_clauses; - SCHEME_LET_RECURSIVE(head2) = SCHEME_LET_RECURSIVE(head); + SCHEME_LET_FLAGS(head2) = SCHEME_LET_FLAGS(head); /* Build let-value change: */ body = head->body; @@ -7020,8 +7020,7 @@ scheme_do_eval(Scheme_Object *obj, int num_rands, Scheme_Object **rands, v = globs[i+p+1]; if (!v) { v = globs[p]; - v = scheme_add_rename(((Scheme_Object **)SCHEME_CDR(v))[i], - SCHEME_CAR(v)); + v = scheme_delayed_rename((Scheme_Object **)v, i); globs[i+p+1] = v; } @@ -7266,7 +7265,7 @@ Scheme_Object *scheme_load_compiled_stx_string(const char *str, long len) port = scheme_make_sized_byte_string_input_port(str, -len); - expr = scheme_internal_read(port, NULL, 1, 0, 0, 0, -1, NULL, NULL, NULL); + expr = scheme_internal_read(port, NULL, 1, 0, 0, 0, -1, NULL, NULL, NULL, NULL); expr = _scheme_eval_compiled(expr, scheme_get_env(NULL)); @@ -8068,10 +8067,13 @@ Scheme_Object **scheme_push_prefix(Scheme_Env *genv, Resolve_Prefix *rp, i = rp->num_toplevels; v = scheme_stx_phase_shift_as_rename(now_phase - src_phase, src_modidx, now_modidx, genv ? genv->export_registry : NULL); - if (v) { + if (v || rp->delay_info) { /* Put lazy-shift info in a[i]: */ - v = scheme_make_raw_pair(v, (Scheme_Object *)rp->stxes); - a[i] = v; + Scheme_Object **ls; + ls = MALLOC_N(Scheme_Object *, 2); + ls[0] = v; + ls[1] = (Scheme_Object *)rp; + a[i] = (Scheme_Object *)ls; /* Rest of a left zeroed, to be filled in lazily by quote-syntax evaluation */ } else { /* No shift, so fill in stxes immediately */ @@ -8563,7 +8565,6 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, case scheme_let_value_type: { Scheme_Let_Value *lv = (Scheme_Let_Value *)expr; - Scheme_Object *rhs; int q, p, c, i; scheme_validate_expr(port, lv->value, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, @@ -8584,18 +8585,6 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, if (!SCHEME_LET_AUTOBOX(lv)) { stack[p] = VALID_VAL; - - /* Check for wrappers on the RHS that box the `i'th result: */ - for (rhs = lv->value; - SAME_TYPE(SCHEME_TYPE(rhs), scheme_syntax_type) && (SCHEME_PINT_VAL(rhs) == BOXVAL_EXPD); - rhs = SCHEME_CDDR((Scheme_Object *)SCHEME_IPTR_VAL(rhs))) { - int j = SCHEME_INT_VAL(SCHEME_CAR((Scheme_Object *)SCHEME_IPTR_VAL(rhs))); - - if (j == i) { - stack[p] = VALID_BOX; - break; - } - } } } diff --git a/src/mzscheme/src/file.c b/src/mzscheme/src/file.c index e03558fb35..8c3c2be02b 100644 --- a/src/mzscheme/src/file.c +++ b/src/mzscheme/src/file.c @@ -3423,6 +3423,14 @@ static Scheme_Object *path_to_complete_path(int argc, Scheme_Object **argv) return p; } +Scheme_Object *scheme_path_to_complete_path(Scheme_Object *path, Scheme_Object *relto_path) +{ + Scheme_Object *a[2]; + a[0] = path; + a[1] = relto_path; + return path_to_complete_path(relto_path ? 2 : 1, a); +} + #ifndef NO_FILE_SYSTEM_UTILS static char *filename_for_error(Scheme_Object *p) diff --git a/src/mzscheme/src/jit.c b/src/mzscheme/src/jit.c index db931e228b..923ec72fa0 100644 --- a/src/mzscheme/src/jit.c +++ b/src/mzscheme/src/jit.c @@ -515,30 +515,6 @@ Scheme_Object *scheme_make_native_case_closure(Scheme_Native_Closure_Data *code) return do_make_native_closure(code, -(code->closure_size + 1)); } -static void box_multiple_array_element(int pos) -{ - Scheme_Thread *p = scheme_current_thread; - Scheme_Object **naya, **a; - int i; - - a = p->ku.multiple.array; - if (SAME_OBJ(a, p->values_buffer)) - p->values_buffer = NULL; - - naya = MALLOC_N(Scheme_Object *, p->ku.multiple.count); - - for (i = p->ku.multiple.count; i--; ) { - naya[i] = a[i]; - } - { - Scheme_Object *eb; - eb = scheme_make_envunbox(naya[pos]); - naya[pos] = eb; - } - - p->ku.multiple.array = naya; -} - static void call_set_global_bucket(Scheme_Bucket *b, Scheme_Object *val, int set_undef) { scheme_set_global_bucket("set!", b, val, set_undef); @@ -4096,74 +4072,6 @@ static int generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int m END_JIT_DATA(8); } break; - case BOXVAL_EXPD: - { - Scheme_Object *p, *v; - int pos, cnt; - START_JIT_DATA(); - - LOG_IT(("boxval\n")); - - p = (Scheme_Object *)SCHEME_IPTR_VAL(obj); - v = SCHEME_CAR(p); - pos = SCHEME_INT_VAL(v); - p = SCHEME_CDR(p); - v = SCHEME_CAR(p); - cnt = SCHEME_INT_VAL(v); - p = SCHEME_CDR(p); - - /* cnt is expected number of returns, and it will be - consistent with multi_ok; do something only if the actual - count is the same as cnt */ - - generate_non_tail(p, jitter, cnt != 1, 1); - CHECK_LIMIT(); - - JIT_UPDATE_THREAD_RSPTR_IF_NEEDED(); - - if (cnt != 1) { - jit_insn *ref, *ref2, *ref3; - - __START_SHORT_JUMPS__(1); - ref = jit_bnei_p(jit_forward(), JIT_R0, SCHEME_MULTIPLE_VALUES); - /* Handle multiple values: */ - jit_ldi_p(JIT_R2, &scheme_current_thread); - jit_ldxi_l(JIT_R1, JIT_R2, &((Scheme_Thread *)0x0)->ku.multiple.count); - ref3 = jit_bnei_p(jit_forward(), JIT_R1, cnt); - CHECK_LIMIT(); - /* Received results match expected results */ - (void)jit_movi_i(JIT_R0, pos); - mz_prepare(1); - jit_pusharg_p(JIT_R0); - (void)mz_finish(box_multiple_array_element); - CHECK_LIMIT(); - (void)jit_movi_p(JIT_R0, SCHEME_MULTIPLE_VALUES); - - /* Jump over single-value handling: */ - ref2 = jit_jmpi(jit_forward()); - CHECK_LIMIT(); - - /* Handle single value: */ - mz_patch_branch(ref); - mz_prepare(1); - jit_pusharg_p(JIT_R0); - (void)mz_finish(scheme_make_envunbox); - CHECK_LIMIT(); - jit_retval(JIT_R0); - mz_patch_ucbranch(ref2); - mz_patch_branch(ref3); - CHECK_LIMIT(); - __END_SHORT_JUMPS__(1); - } else { - mz_prepare(1); - jit_pusharg_p(JIT_R0); - (void)mz_finish(scheme_make_envunbox); - jit_retval(JIT_R0); - } - - END_JIT_DATA(9); - } - break; case SPLICE_EXPD: { scheme_signal_error("cannot JIT a top-level splice form"); @@ -4831,23 +4739,20 @@ static int do_generate_common(mz_jit_state *jitter, void *_data) /* Save global array: */ mz_set_local_p(JIT_V1, JIT_LOCAL3); #endif - /* Compute i in JIT_V1: */ - jit_subr_p(JIT_V1, JIT_R1, JIT_R2); - jit_subi_p(JIT_V1, JIT_V1, WORDS_TO_BYTES(1)); - CHECK_LIMIT(); - /* Load car & cdr of elements at p: */ - jit_ldxi_p(JIT_R2, JIT_R0, &SCHEME_CAR((Scheme_Object *)0x0)); - jit_ldxi_p(JIT_R0, JIT_R0, &SCHEME_CDR((Scheme_Object *)0x0)); - jit_ldxr_p(JIT_R0, JIT_R0, JIT_V1); /* Move R1 to V1 to save it: */ jit_movr_p(JIT_V1, JIT_R1); - /* Call scheme_add_rename: */ + /* Compute i in JIT_R1: */ + jit_subr_p(JIT_R1, JIT_R1, JIT_R2); + jit_subi_p(JIT_R1, JIT_R1, WORDS_TO_BYTES(1)); + jit_rshi_ul(JIT_R1, JIT_R1, JIT_LOG_WORD_SIZE); + CHECK_LIMIT(); + /* Call scheme_delayed_rename: */ JIT_UPDATE_THREAD_RSPTR(); CHECK_LIMIT(); mz_prepare(2); - jit_pusharg_p(JIT_R2); + jit_pusharg_l(JIT_R1); jit_pusharg_p(JIT_R0); - (void)mz_finish(scheme_add_rename); + (void)mz_finish(scheme_delayed_rename); CHECK_LIMIT(); jit_retval(JIT_R0); /* Restore global array into JIT_R1, and put computed element at i+p+1: */ diff --git a/src/mzscheme/src/module.c b/src/mzscheme/src/module.c index 65d4e9133b..75bbc0ca4d 100644 --- a/src/mzscheme/src/module.c +++ b/src/mzscheme/src/module.c @@ -6122,6 +6122,11 @@ provide_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *er /* marshal/unmarshal */ /**********************************************************************/ +XFORM_NONGCING static Scheme_Object *wrap_mod_stx(Scheme_Object *stx) +{ + return (stx ? stx : scheme_false); +} + static Scheme_Object *write_module(Scheme_Object *obj) { Scheme_Module *m = (Scheme_Module *)obj; @@ -6192,9 +6197,9 @@ static Scheme_Object *write_module(Scheme_Object *obj) l = cons(scheme_make_integer(m->max_let_depth), l); - l = cons(m->tt_rn_stx ? m->tt_rn_stx : scheme_false, l); - l = cons(m->et_rn_stx ? m->et_rn_stx : scheme_false, l); - l = cons(m->rn_stx ? m->rn_stx : scheme_false, l); + l = cons(wrap_mod_stx(m->tt_rn_stx), l); + l = cons(wrap_mod_stx(m->et_rn_stx), l); + l = cons(wrap_mod_stx(m->rn_stx), l); l = cons(m->me->src_modidx, l); l = cons(m->modname, l); diff --git a/src/mzscheme/src/mzmark.c b/src/mzscheme/src/mzmark.c index 2292375955..11aa4d0928 100644 --- a/src/mzscheme/src/mzmark.c +++ b/src/mzscheme/src/mzmark.c @@ -1624,8 +1624,6 @@ static int thread_val_MARK(void *p) { gcMARK(pr->list_stack); - gcMARK(pr->rn_memory); - gcMARK(pr->kill_data); gcMARK(pr->private_kill_data); gcMARK(pr->private_kill_next); @@ -1713,8 +1711,6 @@ static int thread_val_FIXUP(void *p) { gcFIXUP(pr->list_stack); - gcFIXUP(pr->rn_memory); - gcFIXUP(pr->kill_data); gcFIXUP(pr->private_kill_data); gcFIXUP(pr->private_kill_next); @@ -2081,6 +2077,7 @@ static int resolve_prefix_val_MARK(void *p) { Resolve_Prefix *rp = (Resolve_Prefix *)p; gcMARK(rp->toplevels); gcMARK(rp->stxes); + gcMARK(rp->delay_info); return gcBYTES_TO_WORDS(sizeof(Resolve_Prefix)); @@ -2090,6 +2087,7 @@ static int resolve_prefix_val_FIXUP(void *p) { Resolve_Prefix *rp = (Resolve_Prefix *)p; gcFIXUP(rp->toplevels); gcFIXUP(rp->stxes); + gcFIXUP(rp->delay_info); return gcBYTES_TO_WORDS(sizeof(Resolve_Prefix)); @@ -2864,6 +2862,7 @@ static int mark_load_handler_data_MARK(void *p) { gcMARK(d->p); gcMARK(d->stxsrc); gcMARK(d->expected_module); + gcMARK(d->delay_load_info); return gcBYTES_TO_WORDS(sizeof(LoadHandlerData)); @@ -2877,6 +2876,7 @@ static int mark_load_handler_data_FIXUP(void *p) { gcFIXUP(d->p); gcFIXUP(d->stxsrc); gcFIXUP(d->expected_module); + gcFIXUP(d->delay_load_info); return gcBYTES_TO_WORDS(sizeof(LoadHandlerData)); @@ -3285,6 +3285,53 @@ static int mark_print_params_FIXUP(void *p) { #define mark_print_params_IS_CONST_SIZE 1 +static int mark_marshal_tables_SIZE(void *p) { + return + gcBYTES_TO_WORDS(sizeof(Scheme_Marshal_Tables)); +} + +static int mark_marshal_tables_MARK(void *p) { + Scheme_Marshal_Tables *mt = (Scheme_Marshal_Tables *)p; + gcMARK(mt->symtab); + gcMARK(mt->rns); + gcMARK(mt->rn_refs); + gcMARK(mt->st_refs); + gcMARK(mt->st_ref_stack); + gcMARK(mt->reverse_map); + gcMARK(mt->same_map); + gcMARK(mt->top_map); + gcMARK(mt->key_map); + gcMARK(mt->delay_map); + gcMARK(mt->rn_saved); + gcMARK(mt->shared_offsets); + gcMARK(mt->sorted_keys); + return + gcBYTES_TO_WORDS(sizeof(Scheme_Marshal_Tables)); +} + +static int mark_marshal_tables_FIXUP(void *p) { + Scheme_Marshal_Tables *mt = (Scheme_Marshal_Tables *)p; + gcFIXUP(mt->symtab); + gcFIXUP(mt->rns); + gcFIXUP(mt->rn_refs); + gcFIXUP(mt->st_refs); + gcFIXUP(mt->st_ref_stack); + gcFIXUP(mt->reverse_map); + gcFIXUP(mt->same_map); + gcFIXUP(mt->top_map); + gcFIXUP(mt->key_map); + gcFIXUP(mt->delay_map); + gcFIXUP(mt->rn_saved); + gcFIXUP(mt->shared_offsets); + gcFIXUP(mt->sorted_keys); + return + gcBYTES_TO_WORDS(sizeof(Scheme_Marshal_Tables)); +} + +#define mark_marshal_tables_IS_ATOMIC 0 +#define mark_marshal_tables_IS_CONST_SIZE 1 + + #endif /* PRINT */ /**********************************************************************/ @@ -4248,10 +4295,13 @@ static int mark_cport_MARK(void *p) { gcMARK(cp->start); gcMARK(cp->orig_port); gcMARK(cp->ht); + gcMARK(cp->ut); gcMARK(cp->symtab); gcMARK(cp->insp); gcMARK(cp->magic_sym); gcMARK(cp->magic_val); + gcMARK(cp->shared_offsets); + gcMARK(cp->delay_info); return gcBYTES_TO_WORDS(sizeof(CPort)); } @@ -4261,10 +4311,13 @@ static int mark_cport_FIXUP(void *p) { gcFIXUP(cp->start); gcFIXUP(cp->orig_port); gcFIXUP(cp->ht); + gcFIXUP(cp->ut); gcFIXUP(cp->symtab); gcFIXUP(cp->insp); gcFIXUP(cp->magic_sym); gcFIXUP(cp->magic_val); + gcFIXUP(cp->shared_offsets); + gcFIXUP(cp->delay_info); return gcBYTES_TO_WORDS(sizeof(CPort)); } @@ -4312,6 +4365,7 @@ static int mark_read_params_MARK(void *p) { gcMARK(rp->table); gcMARK(rp->magic_sym); gcMARK(rp->magic_val); + gcMARK(rp->delay_load_info); return gcBYTES_TO_WORDS(sizeof(ReadParams)); } @@ -4321,6 +4375,7 @@ static int mark_read_params_FIXUP(void *p) { gcFIXUP(rp->table); gcFIXUP(rp->magic_sym); gcFIXUP(rp->magic_val); + gcFIXUP(rp->delay_load_info); return gcBYTES_TO_WORDS(sizeof(ReadParams)); } @@ -4329,6 +4384,64 @@ static int mark_read_params_FIXUP(void *p) { #define mark_read_params_IS_CONST_SIZE 1 +static int mark_delay_load_SIZE(void *p) { + return + gcBYTES_TO_WORDS(sizeof(Scheme_Load_Delay)); +} + +static int mark_delay_load_MARK(void *p) { + Scheme_Load_Delay *ld = (Scheme_Load_Delay *)p; + gcMARK(ld->path); + gcMARK(ld->symtab); + gcMARK(ld->shared_offsets); + gcMARK(ld->insp); + gcMARK(ld->rn_memory); + return + gcBYTES_TO_WORDS(sizeof(Scheme_Load_Delay)); +} + +static int mark_delay_load_FIXUP(void *p) { + Scheme_Load_Delay *ld = (Scheme_Load_Delay *)p; + gcFIXUP(ld->path); + gcFIXUP(ld->symtab); + gcFIXUP(ld->shared_offsets); + gcFIXUP(ld->insp); + gcFIXUP(ld->rn_memory); + return + gcBYTES_TO_WORDS(sizeof(Scheme_Load_Delay)); +} + +#define mark_delay_load_IS_ATOMIC 0 +#define mark_delay_load_IS_CONST_SIZE 1 + + +static int mark_unmarshal_tables_SIZE(void *p) { + return + gcBYTES_TO_WORDS(sizeof(Scheme_Unmarshal_Tables)); +} + +static int mark_unmarshal_tables_MARK(void *p) { + Scheme_Unmarshal_Tables *ut = (Scheme_Unmarshal_Tables *)p; + gcMARK(ut->rns); + gcMARK(ut->rp); + gcMARK(ut->decoded); + return + gcBYTES_TO_WORDS(sizeof(Scheme_Unmarshal_Tables)); +} + +static int mark_unmarshal_tables_FIXUP(void *p) { + Scheme_Unmarshal_Tables *ut = (Scheme_Unmarshal_Tables *)p; + gcFIXUP(ut->rns); + gcFIXUP(ut->rp); + gcFIXUP(ut->decoded); + return + gcBYTES_TO_WORDS(sizeof(Scheme_Unmarshal_Tables)); +} + +#define mark_unmarshal_tables_IS_ATOMIC 0 +#define mark_unmarshal_tables_IS_CONST_SIZE 1 + + #endif /* READ */ /**********************************************************************/ diff --git a/src/mzscheme/src/mzmarksrc.c b/src/mzscheme/src/mzmarksrc.c index bfd8c663d1..64ddcde82a 100644 --- a/src/mzscheme/src/mzmarksrc.c +++ b/src/mzscheme/src/mzmarksrc.c @@ -654,8 +654,6 @@ thread_val { gcMARK(pr->list_stack); - gcMARK(pr->rn_memory); - gcMARK(pr->kill_data); gcMARK(pr->private_kill_data); gcMARK(pr->private_kill_next); @@ -814,6 +812,7 @@ resolve_prefix_val { Resolve_Prefix *rp = (Resolve_Prefix *)p; gcMARK(rp->toplevels); gcMARK(rp->stxes); + gcMARK(rp->delay_info); size: gcBYTES_TO_WORDS(sizeof(Resolve_Prefix)); @@ -1146,6 +1145,7 @@ mark_load_handler_data { gcMARK(d->p); gcMARK(d->stxsrc); gcMARK(d->expected_module); + gcMARK(d->delay_load_info); size: gcBYTES_TO_WORDS(sizeof(LoadHandlerData)); @@ -1316,6 +1316,26 @@ mark_print_params { gcBYTES_TO_WORDS(sizeof(PrintParams)); } +mark_marshal_tables { + mark: + Scheme_Marshal_Tables *mt = (Scheme_Marshal_Tables *)p; + gcMARK(mt->symtab); + gcMARK(mt->rns); + gcMARK(mt->rn_refs); + gcMARK(mt->st_refs); + gcMARK(mt->st_ref_stack); + gcMARK(mt->reverse_map); + gcMARK(mt->same_map); + gcMARK(mt->top_map); + gcMARK(mt->key_map); + gcMARK(mt->delay_map); + gcMARK(mt->rn_saved); + gcMARK(mt->shared_offsets); + gcMARK(mt->sorted_keys); + size: + gcBYTES_TO_WORDS(sizeof(Scheme_Marshal_Tables)); +} + END print; /**********************************************************************/ @@ -1715,10 +1735,13 @@ mark_cport { gcMARK(cp->start); gcMARK(cp->orig_port); gcMARK(cp->ht); + gcMARK(cp->ut); gcMARK(cp->symtab); gcMARK(cp->insp); gcMARK(cp->magic_sym); gcMARK(cp->magic_val); + gcMARK(cp->shared_offsets); + gcMARK(cp->delay_info); size: gcBYTES_TO_WORDS(sizeof(CPort)); } @@ -1740,10 +1763,33 @@ mark_read_params { gcMARK(rp->table); gcMARK(rp->magic_sym); gcMARK(rp->magic_val); + gcMARK(rp->delay_load_info); size: gcBYTES_TO_WORDS(sizeof(ReadParams)); } +mark_delay_load { + mark: + Scheme_Load_Delay *ld = (Scheme_Load_Delay *)p; + gcMARK(ld->path); + gcMARK(ld->symtab); + gcMARK(ld->shared_offsets); + gcMARK(ld->insp); + gcMARK(ld->rn_memory); + size: + gcBYTES_TO_WORDS(sizeof(Scheme_Load_Delay)); +} + +mark_unmarshal_tables { + mark: + Scheme_Unmarshal_Tables *ut = (Scheme_Unmarshal_Tables *)p; + gcMARK(ut->rns); + gcMARK(ut->rp); + gcMARK(ut->decoded); + size: + gcBYTES_TO_WORDS(sizeof(Scheme_Unmarshal_Tables)); +} + END read; /**********************************************************************/ diff --git a/src/mzscheme/src/portfun.c b/src/mzscheme/src/portfun.c index 0d9821a3e5..5a7b0b019b 100644 --- a/src/mzscheme/src/portfun.c +++ b/src/mzscheme/src/portfun.c @@ -100,6 +100,9 @@ static Scheme_Object *load (int, Scheme_Object *[]); static Scheme_Object *current_load (int, Scheme_Object *[]); static Scheme_Object *current_load_directory(int argc, Scheme_Object *argv[]); static Scheme_Object *current_write_directory(int argc, Scheme_Object *argv[]); +#ifdef LOAD_ON_DEMAND +static Scheme_Object *load_on_demand_enabled(int argc, Scheme_Object *argv[]); +#endif static Scheme_Object *default_load (int, Scheme_Object *[]); static Scheme_Object *transcript_on(int, Scheme_Object *[]); static Scheme_Object *transcript_off(int, Scheme_Object *[]); @@ -660,6 +663,13 @@ scheme_init_port_fun(Scheme_Env *env) "current-write-relative-directory", MZCONFIG_WRITE_DIRECTORY), env); +#ifdef LOAD_ON_DEMAND + scheme_add_global_constant("load-on-demand-enabled", + scheme_register_parameter(load_on_demand_enabled, + "load-on-demand-enabled", + MZCONFIG_LOAD_DELAY_ENABLED), + env); +#endif scheme_add_global_constant ("transcript-on", scheme_make_prim_w_arity(transcript_on, @@ -2912,7 +2922,7 @@ static Scheme_Object *sch_default_read_handler(void *ignore, int argc, Scheme_Ob else src = NULL; - return scheme_internal_read(argv[0], src, -1, 0, 0, 0, -1, NULL, NULL, NULL); + return scheme_internal_read(argv[0], src, -1, 0, 0, 0, -1, NULL, NULL, NULL, NULL); } static int extract_recur_args(const char *who, int argc, Scheme_Object **argv, int delta, Scheme_Object **_readtable) @@ -2966,7 +2976,8 @@ static Scheme_Object *do_read_f(const char *who, int argc, Scheme_Object *argv[] if (port == scheme_orig_stdin_port) scheme_flush_orig_outputs(); - return scheme_internal_read(port, NULL, -1, 0, honu_mode, recur, pre_char, readtable, NULL, NULL); + return scheme_internal_read(port, NULL, -1, 0, honu_mode, recur, pre_char, readtable, + NULL, NULL, NULL); } } @@ -3032,7 +3043,8 @@ static Scheme_Object *do_read_syntax_f(const char *who, int argc, Scheme_Object if (port == scheme_orig_stdin_port) scheme_flush_orig_outputs(); - return scheme_internal_read(port, src, -1, 0, honu_mode, recur, pre_char, readtable, NULL, NULL); + return scheme_internal_read(port, src, -1, 0, honu_mode, recur, pre_char, readtable, + NULL, NULL, NULL); } } @@ -4201,6 +4213,7 @@ typedef struct { Scheme_Thread *p; Scheme_Object *stxsrc; Scheme_Object *expected_module; + Scheme_Object *delay_load_info; } LoadHandlerData; static void post_load_handler(void *data) @@ -4220,7 +4233,8 @@ static Scheme_Object *do_load_handler(void *data) Scheme_Env *genv; int save_count = 0, got_one = 0; - while ((obj = scheme_internal_read(port, lhd->stxsrc, 1, 0, 0, 0, -1, NULL, NULL, NULL)) + while ((obj = scheme_internal_read(port, lhd->stxsrc, 1, 0, 0, 0, -1, NULL, + NULL, NULL, lhd->delay_load_info)) && !SCHEME_EOFP(obj)) { save_array = NULL; got_one = 1; @@ -4297,7 +4311,7 @@ static Scheme_Object *do_load_handler(void *data) } /* Check no more expressions: */ - d = scheme_internal_read(port, lhd->stxsrc, 1, 0, 0, 0, -1, NULL, NULL, NULL); + d = scheme_internal_read(port, lhd->stxsrc, 1, 0, 0, 0, -1, NULL, NULL, NULL, NULL); if (!SCHEME_EOFP(d)) { Scheme_Input_Port *ip; ip = scheme_input_port_record(port); @@ -4373,7 +4387,7 @@ static Scheme_Object *do_load_handler(void *data) static Scheme_Object *default_load(int argc, Scheme_Object *argv[]) { Scheme_Object *port, *name, *expected_module, *v; - int ch; + int ch, use_delay_load; Scheme_Thread *p = scheme_current_thread; Scheme_Config *config; LoadHandlerData *lhd; @@ -4428,8 +4442,13 @@ static Scheme_Object *default_load(int argc, Scheme_Object *argv[]) } config = scheme_current_config(); + + v = scheme_get_param(config, MZCONFIG_LOAD_DELAY_ENABLED); + use_delay_load = SCHEME_TRUEP(v); + if (SCHEME_TRUEP(expected_module)) { - config = scheme_extend_config(config, MZCONFIG_CASE_SENS, (scheme_case_sensitive ? scheme_true : scheme_false)); /* for legacy code */ + config = scheme_extend_config(config, MZCONFIG_CASE_SENS, + (scheme_case_sensitive ? scheme_true : scheme_false)); /* for legacy code */ config = scheme_extend_config(config, MZCONFIG_SQUARE_BRACKETS_ARE_PARENS, scheme_true); config = scheme_extend_config(config, MZCONFIG_CURLY_BRACES_ARE_PARENS, scheme_true); config = scheme_extend_config(config, MZCONFIG_CAN_READ_GRAPH, scheme_true); @@ -4452,6 +4471,10 @@ static Scheme_Object *default_load(int argc, Scheme_Object *argv[]) name = scheme_input_port_record(port)->name; lhd->stxsrc = name; lhd->expected_module = expected_module; + if (use_delay_load) { + v = scheme_path_to_complete_path(argv[0], NULL); + lhd->delay_load_info = v; + } if (SCHEME_TRUEP(expected_module)) { scheme_push_continuation_frame(&cframe); @@ -4580,6 +4603,16 @@ current_write_directory(int argc, Scheme_Object *argv[]) -1, wr_abs_directory_p, "path, string, or #f", 1); } +#ifdef LOAD_ON_DEMAND +static Scheme_Object * +load_on_demand_enabled(int argc, Scheme_Object *argv[]) +{ + return scheme_param_config("load-on-demand-enabled", + scheme_make_integer(MZCONFIG_LOAD_DELAY_ENABLED), + argc, argv, -1, NULL, NULL, 1); +} +#endif + Scheme_Object *scheme_load(const char *file) { Scheme_Object *p[1]; diff --git a/src/mzscheme/src/print.c b/src/mzscheme/src/print.c index 0e63a9fb7a..9d8332f448 100644 --- a/src/mzscheme/src/print.c +++ b/src/mzscheme/src/print.c @@ -59,6 +59,7 @@ typedef struct Scheme_Print_Params { long print_position; long print_allocated; long print_maxlen; + long print_offset; Scheme_Object *print_port; mz_jmp_buf *print_escape; } PrintParams; @@ -71,25 +72,25 @@ static void print_to_port(char *name, Scheme_Object *obj, Scheme_Object *port, int notdisplay, long maxl, int check_honu); static int print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab, Scheme_Hash_Table *rnht, + Scheme_Marshal_Tables *mt, PrintParams *p); static void print_char_string(const char *s, int l, const mzchar *us, int delta, int ul, int notdisplay, int honu_char, PrintParams *pp); static void print_byte_string(const char *s, int delta, int l, int notdisplay, PrintParams *pp); static void print_pair(Scheme_Object *pair, int notdisplay, int compact, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab, Scheme_Hash_Table *rnht, + Scheme_Marshal_Tables *mt, PrintParams *pp); static void print_vector(Scheme_Object *vec, int notdisplay, int compact, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab, Scheme_Hash_Table *rnht, + Scheme_Marshal_Tables *mt, PrintParams *pp); static void print_char(Scheme_Object *chobj, int notdisplay, PrintParams *pp); static char *print_to_string(Scheme_Object *obj, long * volatile len, int write, Scheme_Object *port, long maxl, int check_honu); static void custom_write_struct(Scheme_Object *s, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab, Scheme_Hash_Table *rnht, + Scheme_Marshal_Tables *mt, PrintParams *pp, int notdisplay); static Scheme_Object *writable_struct_subs(Scheme_Object *s, PrintParams *pp); @@ -729,6 +730,7 @@ print_to_string(Scheme_Object *obj, ca = (char *)scheme_malloc_atomic(params.print_allocated); params.print_buffer = ca; params.print_position = 0; + params.print_offset = 0; params.print_maxlen = maxl; params.print_port = port; @@ -807,7 +809,7 @@ print_to_string(Scheme_Object *obj, if ((maxl <= PRINT_MAXLEN_MIN) || !scheme_setjmp(escape)) - print(obj, write, 0, ht, NULL, NULL, (PrintParams *)¶ms); + print(obj, write, 0, ht, NULL, (PrintParams *)¶ms); params.print_buffer[params.print_position] = '\0'; @@ -854,6 +856,7 @@ static void print_this_string(PrintParams *pp, const char *str, int offset, int if (!pp->print_buffer) { /* Just getting the length */ pp->print_position += len; + pp->print_offset += len; return; } @@ -874,6 +877,7 @@ static void print_this_string(PrintParams *pp, const char *str, int offset, int memcpy(pp->print_buffer + pp->print_position, str + offset, len); pp->print_position += len; + pp->print_offset += len; /* ----------- Do not use str after this point --------------- */ /* It might be quick_buffer, and another thread might try to */ @@ -919,40 +923,65 @@ void scheme_print_utf8(Scheme_Print_Params *pp, const char *str, int offset, int print_utf8_string(pp, str, offset, len); } +static void print_number(PrintParams *pp, long n) +{ + unsigned char s[4]; + + s[0] = (unsigned char)(n & 0xFF); + s[1] = (unsigned char)((n >> 8) & 0xFF); + s[2] = (unsigned char)((n >> 16) & 0xFF); + s[3] = (unsigned char)((n >> 24) & 0xFF); + + print_this_string(pp, (char *)s, 0, 4); +} + +static void print_short_number(PrintParams *pp, long n) +{ + unsigned char s[2]; + + s[0] = (unsigned char)(n & 0xFF); + s[1] = (unsigned char)((n >> 8) & 0xFF); + + print_this_string(pp, (char *)s, 0, 2); +} + +static void print_one_byte(PrintParams *pp, int n) +{ + unsigned char s[1]; + + s[0] = n; + + print_this_string(pp, (char *)s, 0, 1); +} + static void print_compact_number(PrintParams *pp, long n) { - unsigned char s[5]; + unsigned char s[2]; if (n < 0) { - if (n > -256) { - s[0] = 254; - s[1] = (unsigned char)(-n); - print_this_string(pp, (char *)s, 0, 2); + if (n > -32) { + s[0] = (unsigned char)(0xC0 | (-n)); + print_this_string(pp, (char *)s, 0, 1); return; } else { n = -n; - s[0] = 255; + s[0] = 0xE0; } - } else if (n < 252) { + } else if (n < 128) { s[0] = (unsigned char)n; print_this_string(pp, (char *)s, 0, 1); return; - } else if (n < 0x10000) { - s[0] = 252; - s[1] = (unsigned char)(n & 0xFF); - s[2] = (unsigned char)((n >> 8) & 0xFF); - print_this_string(pp, (char *)s, 0, 3); + } else if (n < 0x4000) { + s[0] = (unsigned char)(0x80 | (n & 0x3F)); + s[1] = (unsigned char)((n >> 6) & 0xFF); + print_this_string(pp, (char *)s, 0, 2); return; } else { - s[0] = 253; + s[0] = 0xF0; } - s[1] = (unsigned char)(n & 0xFF); - s[2] = (unsigned char)((n >> 8) & 0xFF); - s[3] = (unsigned char)((n >> 16) & 0xFF); - s[4] = (unsigned char)((n >> 24) & 0xFF); - - print_this_string(pp, (char *)s, 0, 5); + print_this_string(pp, (char *)s, 0, 1); + print_number(pp, n); } static void do_print_string(int compact, int notdisplay, @@ -1006,8 +1035,7 @@ static Scheme_Object *print_k(void) Scheme_Thread *p = scheme_current_thread; Scheme_Object *o = (Scheme_Object *)p->ku.k.p1; Scheme_Hash_Table *ht = (Scheme_Hash_Table *)p->ku.k.p2; - Scheme_Hash_Table *symtab = (Scheme_Hash_Table *)p->ku.k.p3; - Scheme_Hash_Table *rnht = (Scheme_Hash_Table *)p->ku.k.p4; + Scheme_Marshal_Tables *mt = (Scheme_Marshal_Tables *)p->ku.k.p3; PrintParams *pp = (PrintParams *)p->ku.k.p5; mz_jmp_buf * volatile save; mz_jmp_buf newbuf; @@ -1015,7 +1043,6 @@ static Scheme_Object *print_k(void) p->ku.k.p1 = NULL; p->ku.k.p2 = NULL; p->ku.k.p3 = NULL; - p->ku.k.p4 = NULL; p->ku.k.p5 = NULL; save = pp->print_escape; @@ -1031,26 +1058,117 @@ static Scheme_Object *print_k(void) p->ku.k.i1, p->ku.k.i2, ht, - symtab, rnht, + mt, pp) ? scheme_true : scheme_false; } } #endif +#ifdef MZ_XFORM +START_XFORM_SKIP; +#endif +#include "../gc2/my_qsort.c" +#ifdef MZ_XFORM +END_XFORM_SKIP; +#endif + +static int compare_keys(const void *a, const void *b) +{ + Scheme_Object *av, *bv; + + /* Atomic things first, because they could be used by + marshaled syntax. This cuts donw on recursive reads + at load time. */ +# define SCHEME_FIRSTP(v) (SCHEME_SYMBOLP(v) \ + || SCHEME_PATHP(v) \ + || SCHEME_KEYWORDP(v) \ + || SCHEME_CHAR_STRINGP(v) \ + || SCHEME_BYTE_STRINGP(v) \ + || SCHEME_CHARP(v) \ + || SAME_TYPE(SCHEME_TYPE(v), scheme_module_index_type)) + av = ((Scheme_Object **)a)[0]; + bv = ((Scheme_Object **)b)[0]; + if (SCHEME_FIRSTP(av)) { + if (!SCHEME_FIRSTP(bv)) + return -1; + } else if (SCHEME_FIRSTP(bv)) + return 1; + + return ((long *)a)[1] - ((long *)b)[1]; +} + +static void sort_referenced_keys(Scheme_Marshal_Tables *mt) +{ + long j, size, pos = 0; + Scheme_Object **keys; + Scheme_Hash_Table *key_map; + + size = mt->st_refs->count; + keys = MALLOC_N(Scheme_Object *, (2 * size)); + + for (j = 0; j < mt->st_refs->size; j++) { + if (mt->st_refs->vals[j]) { + keys[pos] = mt->st_refs->keys[j]; + keys[pos + 1] = mt->st_refs->vals[j]; + pos += 2; + } + } + + my_qsort(keys, size, 2 * sizeof(Scheme_Object *), compare_keys); + + key_map = scheme_make_hash_table(SCHEME_hash_ptr); + for (j = 0; j < size; j++) { + scheme_hash_set(key_map, keys[(j << 1) + 1], scheme_make_integer(j+1)); + } + mt->key_map = key_map; + + mt->sorted_keys = keys; + mt->sorted_keys_count = size; +} + +static void print_table_keys(int notdisplay, int compact, Scheme_Hash_Table *ht, + Scheme_Marshal_Tables *mt, + PrintParams *pp) +{ + long j, size, offset; + Scheme_Object **keys, *key, *obj; + + size = mt->sorted_keys_count; + keys = mt->sorted_keys; + + for (j = 0; j < size; j++) { + offset = pp->print_offset; + mt->shared_offsets[j] = offset; + key = keys[j << 1]; + if (mt->rn_saved) { + obj = scheme_hash_get(mt->rn_saved, key); + } else { + obj = NULL; + } + if (!obj) + obj = key; + mt->print_now = j + 1; + print(obj ? obj : key, notdisplay, compact, ht, mt, pp); + mt->print_now = 0; + } +} + static int print_substring(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab, Scheme_Hash_Table *rnht, - PrintParams *pp, char **result, long *rlen) + Scheme_Marshal_Tables *mt, + PrintParams *pp, char **result, long *rlen, + int print_keys, long *klen) { int closed; - long save_alloc, save_pos, save_maxl; + long save_alloc, save_pos, save_off, save_maxl; char *save_buf; Scheme_Object *save_port; save_alloc = pp->print_allocated; save_buf = pp->print_buffer; save_pos = pp->print_position; + save_off = pp->print_offset; save_maxl = pp->print_maxlen; save_port = pp->print_port; @@ -1065,9 +1183,20 @@ print_substring(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Tab pp->print_buffer = NULL; } pp->print_position = 0; + pp->print_offset = 0; pp->print_port = NULL; - closed = print(obj, notdisplay, compact, ht, symtab, rnht, pp); + if (print_keys < 0) { + print_table_keys(notdisplay, compact, ht, mt, pp); + *klen = pp->print_offset; + } + + closed = print(obj, notdisplay, compact, ht, mt, pp); + + if (print_keys > 0) { + print_table_keys(notdisplay, compact, ht, mt, pp); + *klen = pp->print_offset; + } if (result) *result = pp->print_buffer; @@ -1076,45 +1205,192 @@ print_substring(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Tab pp->print_allocated = save_alloc; pp->print_buffer = save_buf; pp->print_position = save_pos; + pp->print_offset = save_off; pp->print_maxlen = save_maxl; pp->print_port = save_port; return closed; } +static Scheme_Object *get_symtab_idx(Scheme_Marshal_Tables *mt, Scheme_Object *obj) +{ + Scheme_Object *idx; + + idx = scheme_hash_get(mt->symtab, obj); + + if (idx) { + if (!mt->pass) { + /* Record that we're referencing it */ + scheme_hash_set(mt->st_refs, obj, idx); + } + } else { + if (mt->pass && mt->print_now) { + idx = scheme_hash_get(mt->st_refs, obj); + if (idx) { + idx = scheme_hash_get(mt->key_map, idx); + if (SCHEME_INT_VAL(idx) != mt->print_now) + return idx; /* due to a cycle, we're refering to + something before it is printed. */ + idx = NULL; /* ok to print */ + } + } + } + + return idx; +} + +static void set_symtab_shared(Scheme_Marshal_Tables *mt, Scheme_Object *obj) +{ + (void)get_symtab_idx(mt, obj); +} + +static void print_general_symtab_ref(PrintParams *pp, Scheme_Object *idx, int cpt_id) +{ + int l; + print_compact(pp, cpt_id); + l = SCHEME_INT_VAL(idx); + print_compact_number(pp, l); +} + +static void print_symtab_ref(PrintParams *pp, Scheme_Object *idx) +{ + print_general_symtab_ref(pp, idx, CPT_SYMREF); +} + +static int add_symtab(Scheme_Marshal_Tables *mt, Scheme_Object *obj) +{ + if (!mt->pass) { + int l; + l = mt->symtab->count + 1; + scheme_hash_set(mt->symtab, obj, scheme_make_integer(l)); + return l; + } else { + Scheme_Object *key, *l; + + key = scheme_hash_get(mt->st_refs, obj); + for (l = mt->st_ref_stack; !key && SCHEME_PAIRP(l); l = SCHEME_CDR(l)) { + key = scheme_hash_get((Scheme_Hash_Table *)SCHEME_CAR(l), obj); + } + + if (!key) { + /* There's no other reference to this object, so use dummy slot 0. */ + return 0; + } + + key = scheme_hash_get(mt->key_map, key); + + scheme_hash_set(mt->symtab, obj, key); + + return SCHEME_INT_VAL(key); + } +} + +static void symtab_set(PrintParams *pp, Scheme_Marshal_Tables *mt, Scheme_Object *obj) +{ + (void)add_symtab(mt, obj); +} + +static void print_symtab_set(PrintParams *pp, Scheme_Marshal_Tables *mt, Scheme_Object *obj) +{ + int l; + l = add_symtab(mt, obj); + print_compact_number(pp, l); +} + +Scheme_Object *scheme_marshal_wrap_set(Scheme_Marshal_Tables *mt, Scheme_Object *obj, Scheme_Object *val) +{ + int l; + l = add_symtab(mt, obj); + if (l) { + if (!mt->rn_saved) { + Scheme_Hash_Table *rn_saved; + rn_saved = scheme_make_hash_table(SCHEME_hash_ptr); + mt->rn_saved = rn_saved; + } + if (mt->pass >= 2) { + /* REMOVEME */ + obj = scheme_hash_get(mt->rn_saved, obj); + if (!scheme_equal(obj, val)) + scheme_signal_error("marshaled form changed on third pass: %V versus %V", + obj, val); + } else + scheme_hash_set(mt->rn_saved, obj, val); + + if (mt->pass) + return scheme_make_integer(l); + } + return val; +} + +Scheme_Object *scheme_marshal_lookup(Scheme_Marshal_Tables *mt, Scheme_Object *obj) +{ + return get_symtab_idx(mt, obj); +} + +void scheme_marshal_using_key(Scheme_Marshal_Tables *mt, Scheme_Object *obj) +{ + set_symtab_shared(mt, obj); +} + +void scheme_marshal_push_refs(Scheme_Marshal_Tables *mt) +{ + Scheme_Object *p; + Scheme_Hash_Table *st_refs; + + p = scheme_make_pair((Scheme_Object *)mt->st_refs, + mt->st_ref_stack); + mt->st_ref_stack = p; + + st_refs = scheme_make_hash_table(SCHEME_hash_ptr); + + mt->st_refs = st_refs; +} + +void scheme_marshal_pop_refs(Scheme_Marshal_Tables *mt, int keep) +{ + Scheme_Hash_Table *st_refs = mt->st_refs; + + mt->st_refs = (Scheme_Hash_Table *)SCHEME_CAR(mt->st_ref_stack); + mt->st_ref_stack = SCHEME_CDR(mt->st_ref_stack); + + if (keep) { + if (!mt->st_refs->count) + mt->st_refs = st_refs; + else { + long i; + for (i = 0; i < st_refs->size; i++) { + if (st_refs->vals[i]) { + scheme_hash_set(mt->st_refs, st_refs->keys[i], st_refs->vals[i]); + } + } + } + } +} + static void print_escaped(PrintParams *pp, int notdisplay, Scheme_Object *obj, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab) + Scheme_Marshal_Tables *mt, int shared) { char *r; long len; Scheme_Object *idx; - if (symtab) { - idx = scheme_hash_get(symtab, obj); + if (shared) { + idx = get_symtab_idx(mt, obj); if (idx) { - int l; - print_compact(pp, CPT_SYMREF); - l = SCHEME_INT_VAL(idx); - print_compact_number(pp, l); + print_symtab_ref(pp, idx); return; } } - print_substring(obj, notdisplay, 0, ht, NULL, NULL, pp, &r, &len); + print_substring(obj, notdisplay, 0, ht, NULL, pp, &r, &len, 0, NULL); - if (symtab) - print_compact(pp, CPT_HASHED_ESCAPE); - else - print_compact(pp, CPT_ESCAPE); + print_compact(pp, CPT_ESCAPE); print_compact_number(pp, len); print_this_string(pp, r, 0, len); - if (symtab) { - int l = symtab->count; - idx = scheme_make_integer(l); - scheme_hash_set(symtab, obj, idx); - print_compact_number(pp, l); + if (mt) { + symtab_set(pp, mt, obj); } } @@ -1169,7 +1445,7 @@ static void always_scheme(PrintParams *pp, int reset) static int print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab, Scheme_Hash_Table *rnht, PrintParams *pp) + Scheme_Marshal_Tables *mt, PrintParams *pp) { int closed = 0; int save_honu_mode; @@ -1197,8 +1473,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, p->ku.k.i1 = notdisplay; p->ku.k.i2 = compact; p->ku.k.p2 = (void *)ht; - p->ku.k.p3 = symtab; - p->ku.k.p4 = rnht; + p->ku.k.p3 = mt; p->ku.k.p5 = pp2; obj = scheme_handle_stack_overflow(print_k); @@ -1247,7 +1522,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, if (val) { if (val != 1) { if (compact) { - print_escaped(pp, notdisplay, obj, ht, NULL); + print_escaped(pp, notdisplay, obj, ht, mt, 0); return 1; } else { if (val > 0) { @@ -1276,14 +1551,12 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, is_kw = SCHEME_KEYWORDP(obj); if (compact) - idx = scheme_hash_get(symtab, obj); + idx = get_symtab_idx(mt, obj); else idx = NULL; if (idx) { - print_compact(pp, CPT_SYMREF); - l = SCHEME_INT_VAL(idx); - print_compact_number(pp, l); + print_symtab_ref(pp, idx); } else if (compact) { int weird; @@ -1307,11 +1580,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, } print_this_string(pp, scheme_symbol_val(obj), 0, l); - idx = scheme_make_integer(symtab->count); - scheme_hash_set(symtab, obj, idx); - - l = SCHEME_INT_VAL(idx); - print_compact_number(pp, l); + symtab_set(pp, mt, obj); } else if (notdisplay) { if (pp->honu_mode) { /* Honu symbol... */ @@ -1370,20 +1639,16 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, int l; Scheme_Object *idx; - idx = scheme_hash_get(symtab, obj); + idx = get_symtab_idx(mt, obj); if (idx) { - print_compact(pp, CPT_SYMREF); - l = SCHEME_INT_VAL(idx); - print_compact_number(pp, l); + print_symtab_ref(pp, idx); } else { print_compact(pp, CPT_BYTE_STRING); l = SCHEME_BYTE_STRTAG_VAL(obj); print_compact_number(pp, l); print_this_string(pp, SCHEME_BYTE_STR_VAL(obj), 0, l); - idx = scheme_make_integer(symtab->count); - scheme_hash_set(symtab, obj, idx); - print_compact_number(pp, SCHEME_INT_VAL(idx)); + symtab_set(pp, mt, obj); } } else { if (notdisplay) { @@ -1400,25 +1665,19 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, else if (SCHEME_CHAR_STRINGP(obj)) { Scheme_Object *idx; - int l; if (compact) - idx = scheme_hash_get(symtab, obj); + idx = get_symtab_idx(mt, obj); else idx = NULL; if (idx) { - print_compact(pp, CPT_SYMREF); - l = SCHEME_INT_VAL(idx); - print_compact_number(pp, l); + print_symtab_ref(pp, idx); } else { do_print_string(compact, notdisplay, pp, SCHEME_CHAR_STR_VAL(obj), 0, SCHEME_CHAR_STRTAG_VAL(obj)); - if (compact) { - idx = scheme_make_integer(symtab->count); - scheme_hash_set(symtab, obj, idx); - print_compact_number(pp, SCHEME_INT_VAL(idx)); - } + if (compact) + symtab_set(pp, mt, obj); } closed = 1; } @@ -1460,7 +1719,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, else if (SCHEME_NUMBERP(obj)) { if (compact) { - print_escaped(pp, notdisplay, obj, ht, symtab); + print_escaped(pp, notdisplay, obj, ht, mt, 1); closed = 1; } else { if (SCHEME_COMPLEXP(obj)) @@ -1482,18 +1741,18 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, } else if (SCHEME_PAIRP(obj)) { - print_pair(obj, notdisplay, compact, ht, symtab, rnht, pp); + print_pair(obj, notdisplay, compact, ht, mt, pp); closed = 1; } else if (SCHEME_VECTORP(obj)) { - print_vector(obj, notdisplay, compact, ht, symtab, rnht, pp); + print_vector(obj, notdisplay, compact, ht, mt, pp); closed = 1; } else if ((compact || pp->print_box) && SCHEME_BOXP(obj)) { if (compact && !pp->print_box) { - closed = print(scheme_protect_quote(obj), notdisplay, compact, ht, symtab, rnht, pp); + closed = print(scheme_protect_quote(obj), notdisplay, compact, ht, mt, pp); } else { if (compact) print_compact(pp, CPT_BOX); @@ -1501,7 +1760,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, always_scheme(pp, 1); print_utf8_string(pp, "#&", 0, 2); } - closed = print(SCHEME_BOX_VAL(obj), notdisplay, compact, ht, symtab, rnht, pp); + closed = print(SCHEME_BOX_VAL(obj), notdisplay, compact, ht, mt, pp); } } else if ((compact || pp->print_hash_table) && SCHEME_HASHTP(obj)) @@ -1539,10 +1798,10 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, print_utf8_string(pp, "(", 0, 1); } val = vals[i]; - print(keys[i], notdisplay, compact, ht, symtab, rnht, pp); + print(keys[i], notdisplay, compact, ht, mt, pp); if (!compact) print_utf8_string(pp, " . ", 0, 3); - print(val, notdisplay, compact, ht, symtab, rnht, pp); + print(val, notdisplay, compact, ht, mt, pp); if (!compact) print_utf8_string(pp, ")", 0, 1); did_one++; @@ -1581,7 +1840,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, if (compact || !pp->print_unreadable) cannot_print(pp, notdisplay, obj, ht, compact); else if (scheme_is_writable_struct(obj)) { - custom_write_struct(obj, ht, symtab, rnht, pp, notdisplay); + custom_write_struct(obj, ht, mt, pp, notdisplay); } else { int pb; @@ -1589,7 +1848,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, if (pb) { obj = scheme_struct_to_vector(obj, NULL, pp->inspector); - closed = print(obj, notdisplay, compact, ht, symtab, rnht, pp); + closed = print(obj, notdisplay, compact, ht, mt, pp); } else { Scheme_Object *src; @@ -1617,7 +1876,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, PRINTADDRESS(pp, obj); print_utf8_string(pp, ">", 0, 1); } else { - closed = print(src, notdisplay, compact, ht, symtab, rnht, pp); + closed = print(src, notdisplay, compact, ht, mt, pp); } } } @@ -1631,17 +1890,11 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, Scheme_Object *idx; int l; - idx = scheme_hash_get(symtab, obj); + idx = get_symtab_idx(mt, obj); if (idx) { - print_compact(pp, CPT_SYMREF); - l = SCHEME_INT_VAL(idx); - print_compact_number(pp, l); + print_symtab_ref(pp, idx); } else { - Scheme_Object *dir; - - /* Hash before making relative */ - idx = scheme_make_integer(symtab->count); - scheme_hash_set(symtab, obj, idx); + Scheme_Object *orig_obj = obj, *dir; dir = scheme_get_param(scheme_current_config(), MZCONFIG_WRITE_DIRECTORY); @@ -1655,8 +1908,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, print_compact_number(pp, l); print_this_string(pp, SCHEME_PATH_VAL(obj), 0, l); - l = SCHEME_INT_VAL(idx); - print_compact_number(pp, l); + symtab_set(pp, mt, orig_obj); } } else if (!pp->print_unreadable) { cannot_print(pp, notdisplay, obj, ht, compact); @@ -1679,7 +1931,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, { Scheme_Object *str; str = scheme_path_to_char_string(obj); - print(str, 0, 0, ht, symtab, rnht, pp); + print(str, 0, 0, ht, mt, pp); } if (notdisplay) { PRINTADDRESS(pp, obj); @@ -1730,17 +1982,13 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, /* Print original `lambda' code. Closure conversion can cause an empty closure to be duplicated in the code tree, so hash it. */ Scheme_Object *idx; - idx = scheme_hash_get(symtab, obj); + idx = get_symtab_idx(mt, obj); if (idx) { - print_compact(pp, CPT_SYMREF); - print_compact_number(pp, SCHEME_INT_VAL(idx)); + print_symtab_ref(pp, idx); } else { - idx = scheme_make_integer(symtab->count); - scheme_hash_set(symtab, obj, idx); print_compact(pp, CPT_CLOSURE); - print_compact_number(pp, SCHEME_INT_VAL(idx)); - - print((Scheme_Object *)SCHEME_COMPILED_CLOS_CODE(closure), notdisplay, compact, ht, symtab, rnht, pp); + print_symtab_set(pp, mt, obj); + print((Scheme_Object *)SCHEME_COMPILED_CLOS_CODE(closure), notdisplay, compact, ht, mt, pp); } compact = 1; done = 1; @@ -1749,7 +1997,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, obj = scheme_unclose_case_lambda(obj, 0); if (!SCHEME_PROCP(obj)) { /* Print original `case-lambda' code: */ - compact = print(obj, notdisplay, compact, ht, symtab, rnht, pp); + compact = print(obj, notdisplay, compact, ht, mt, pp); done = 1; } } @@ -1825,7 +2073,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, else if (SAME_TYPE(SCHEME_TYPE(obj), scheme_regexp_type)) { if (compact) { - print_escaped(pp, notdisplay, obj, ht, symtab); + print_escaped(pp, notdisplay, obj, ht, mt, 1); } else { Scheme_Object *src; src = scheme_regexp_source(obj); @@ -1834,7 +2082,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, print_utf8_string(pp, "#px", 0, 3); else print_utf8_string(pp, "#rx", 0, 3); - print(src, 1, 0, ht,symtab, rnht, pp); + print(src, 1, 0, ht, mt, pp); } else if (compact || !pp->print_unreadable) cannot_print(pp, notdisplay, obj, ht, compact); else @@ -1912,8 +2160,8 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, print_compact(pp, CPT_STX); /* "2" in scheme_syntax_to_datum() call preserves wraps. */ - closed = print(scheme_syntax_to_datum(obj, 2, rnht), - notdisplay, 1, ht, symtab, rnht, pp); + closed = print(scheme_syntax_to_datum(obj, 2, mt), + notdisplay, 1, ht, mt, pp); } else if (pp->print_unreadable) { Scheme_Stx *stx = (Scheme_Stx *)obj; if ((stx->srcloc->line >= 0) || (stx->srcloc->pos >= 0)) { @@ -1936,49 +2184,36 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, } else if (compact && SAME_TYPE(SCHEME_TYPE(obj), scheme_module_index_type)) { - int l; Scheme_Object *idx; - idx = scheme_hash_get(symtab, obj); + idx = get_symtab_idx(mt, obj); if (idx) { - print_compact(pp, CPT_SYMREF); - l = SCHEME_INT_VAL(idx); - print_compact_number(pp, l); + print_symtab_ref(pp, idx); } else { - idx = scheme_make_integer(symtab->count); - scheme_hash_set(symtab, obj, idx); - l = SCHEME_INT_VAL(idx); - print_compact(pp, CPT_MODULE_INDEX); - print_compact_number(pp, l); - print(((Scheme_Modidx *)obj)->path, notdisplay, 1, ht, symtab, rnht, pp); - print(((Scheme_Modidx *)obj)->base, notdisplay, 1, ht, symtab, rnht, pp); + print(((Scheme_Modidx *)obj)->path, notdisplay, 1, ht, mt, pp); + print(((Scheme_Modidx *)obj)->base, notdisplay, 1, ht, mt, pp); + symtab_set(pp, mt, obj); } } else if (compact && SAME_TYPE(SCHEME_TYPE(obj), scheme_module_variable_type) && !((Module_Variable *)obj)->mod_phase) { - int l; Scheme_Object *idx; - idx = scheme_hash_get(symtab, obj); + idx = get_symtab_idx(mt, obj); if (idx) { - print_compact(pp, CPT_SYMREF); - l = SCHEME_INT_VAL(idx); - print_compact_number(pp, l); + print_symtab_ref(pp, idx); } else { Module_Variable *mv; - idx = scheme_make_integer(symtab->count); - scheme_hash_set(symtab, obj, idx); - l = SCHEME_INT_VAL(idx); - print_compact(pp, CPT_MODULE_VAR); - print_compact_number(pp, l); mv = (Module_Variable *)obj; - print(mv->modidx, notdisplay, 1, ht, symtab, rnht, pp); - print(mv->sym, notdisplay, 1, ht, symtab, rnht, pp); + print(mv->modidx, notdisplay, 1, ht, mt, pp); + print(mv->sym, notdisplay, 1, ht, mt, pp); print_compact_number(pp, mv->pos); + + symtab_set(pp, mt, obj); } } else if (compact && SAME_TYPE(SCHEME_TYPE(obj), scheme_variable_type) @@ -2023,7 +2258,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, } for (i = 0; i < app->num_args + 1; i++) { - closed = print(scheme_protect_quote(app->args[i]), notdisplay, 1, NULL, symtab, rnht, pp); + closed = print(scheme_protect_quote(app->args[i]), notdisplay, 1, NULL, mt, pp); } } else if (compact && SAME_TYPE(SCHEME_TYPE(obj), scheme_application2_type)) @@ -2036,8 +2271,8 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, s[0] = CPT_SMALL_APPLICATION_START + 1; print_this_string(pp, (char *)s, 0, 1); - print(scheme_protect_quote(app->rator), notdisplay, 1, NULL, symtab, rnht, pp); - closed = print(scheme_protect_quote(app->rand), notdisplay, 1, NULL, symtab, rnht, pp); + print(scheme_protect_quote(app->rator), notdisplay, 1, NULL, mt, pp); + closed = print(scheme_protect_quote(app->rand), notdisplay, 1, NULL, mt, pp); } else if (compact && SAME_TYPE(SCHEME_TYPE(obj), scheme_application3_type)) { @@ -2049,9 +2284,9 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, s[0] = CPT_SMALL_APPLICATION_START + 2; print_this_string(pp, (char *)s, 0, 1); - print(scheme_protect_quote(app->rator), notdisplay, 1, NULL, symtab, rnht, pp); - print(scheme_protect_quote(app->rand1), notdisplay, 1, NULL, symtab, rnht, pp); - closed = print(scheme_protect_quote(app->rand2), notdisplay, 1, NULL, symtab, rnht, pp); + print(scheme_protect_quote(app->rator), notdisplay, 1, NULL, mt, pp); + print(scheme_protect_quote(app->rand1), notdisplay, 1, NULL, mt, pp); + closed = print(scheme_protect_quote(app->rand2), notdisplay, 1, NULL, mt, pp); } else if (compact && SAME_TYPE(SCHEME_TYPE(obj), scheme_let_one_type)) { @@ -2060,8 +2295,8 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, lo = (Scheme_Let_One *)obj; print_compact(pp, CPT_LET_ONE); - print(scheme_protect_quote(lo->value), notdisplay, 1, NULL, symtab, rnht, pp); - closed = print(scheme_protect_quote(lo->body), notdisplay, 1, NULL, symtab, rnht, pp); + print(scheme_protect_quote(lo->value), notdisplay, 1, NULL, mt, pp); + closed = print(scheme_protect_quote(lo->body), notdisplay, 1, NULL, mt, pp); } else if (compact && SAME_TYPE(SCHEME_TYPE(obj), scheme_branch_type)) { @@ -2070,9 +2305,9 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, b = (Scheme_Branch_Rec *)obj; print_compact(pp, CPT_BRANCH); - print(scheme_protect_quote(b->test), notdisplay, 1, NULL, symtab, rnht, pp); - print(scheme_protect_quote(b->tbranch), notdisplay, 1, NULL, symtab, rnht, pp); - closed = print(scheme_protect_quote(b->fbranch), notdisplay, 1, NULL, symtab, rnht, pp); + print(scheme_protect_quote(b->test), notdisplay, 1, NULL, mt, pp); + print(scheme_protect_quote(b->tbranch), notdisplay, 1, NULL, mt, pp); + closed = print(scheme_protect_quote(b->fbranch), notdisplay, 1, NULL, mt, pp); } else if (SAME_TYPE(SCHEME_TYPE(obj), scheme_quote_compilation_type)) { @@ -2105,7 +2340,7 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, #endif } - compact = print(v, notdisplay, 1, q_ht, symtab, rnht, pp); + compact = print(v, notdisplay, 1, q_ht, mt, pp); pp->print_hash_table = qpht; pp->print_box = qpb; @@ -2149,6 +2384,32 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, } #endif } + else if (compact && SAME_TYPE(SCHEME_TYPE(obj), scheme_delay_syntax_type)) + { + /* wraps a syntax object that we might load on demand, + instead of when the using code is loaded */ + Scheme_Object *idx; + + if (!mt->pass) { + if (!mt->delay_map) { + Scheme_Hash_Table *delay_map; + delay_map = scheme_make_hash_table(SCHEME_hash_ptr); + mt->delay_map = delay_map; + } + scheme_hash_set(mt->delay_map, SCHEME_PTR_VAL(obj), obj); + } else + obj = scheme_hash_get(mt->delay_map, SCHEME_PTR_VAL(obj)); + + idx = get_symtab_idx(mt, obj); + + if (idx) { + print_general_symtab_ref(pp, idx, CPT_DELAY_REF); + } else { + print(SCHEME_PTR_VAL(obj), notdisplay, 1, ht, mt, pp); + symtab_set(pp, mt, obj); + set_symtab_shared(mt, obj); + } + } else if (scheme_type_writers[SCHEME_TYPE(obj)] #if !NO_COMPACT && (compact || SAME_TYPE(SCHEME_TYPE(obj), scheme_compilation_top_type)) @@ -2197,27 +2458,117 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, } if (compact) - closed = print(v, notdisplay, 1, NULL, symtab, rnht, pp); + closed = print(v, notdisplay, 1, NULL, mt, pp); else { - /* Symtab services both symbols and module paths (modidxs) */ - symtab = scheme_make_hash_table(SCHEME_hash_ptr); - rnht = scheme_make_hash_table(SCHEME_hash_ptr); + Scheme_Hash_Table *st_refs, *symtab, *rns; + long *shared_offsets; + long st_len, j, shared_offset, start_offset; - /* "print" the string once to get a measurement and symtab size */ - print_substring(v, notdisplay, 1, NULL, symtab, rnht, pp, NULL, &slen); + mt = MALLOC_ONE_RT(Scheme_Marshal_Tables); + SET_REQUIRED_TAG(mt->type = scheme_rt_marshal_info); + + /* Track which shared values are referenced: */ + st_refs = scheme_make_hash_table(SCHEME_hash_ptr); + mt->st_refs = st_refs; + mt->st_ref_stack = scheme_null; + + /* "Print" the string once to determine graph references. On this pass, + we first assume that everything is shared and make up sequential + keys, but we also keep track of which things are actually shared; + we'll map the original keys to a compacted set of keys for the + later passes. */ + symtab = scheme_make_hash_table(SCHEME_hash_ptr); + mt->symtab = symtab; + rns = scheme_make_hash_table(SCHEME_hash_ptr); + mt->rns = rns; + mt->reverse_map = NULL; + mt->pass = 0; + scheme_hash_set(symtab, scheme_void, scheme_true); /* indicates registration phase */ + print_substring(v, notdisplay, 1, NULL, mt, pp, NULL, &slen, 0, NULL); + + sort_referenced_keys(mt); + mt->rn_saved = NULL; + + /* "Print" again, now that we know which values are actually + shared. On this pass, shared values that reference other shared values + are re-computed with the compacted keys. */ + shared_offsets = MALLOC_N_ATOMIC(long, mt->st_refs->count); + mt->shared_offsets = shared_offsets; + symtab = scheme_make_hash_table(SCHEME_hash_ptr); + mt->symtab = symtab; + rns = scheme_make_hash_table(SCHEME_hash_ptr); + mt->rns = rns; + mt->reverse_map = NULL; + mt->top_map = NULL; + mt->pass = 1; + print_substring(v, notdisplay, 1, NULL, mt, pp, NULL, &slen, + 1, &st_len); + + /* "Print" the string again to get a measurement and symtab size. */ + symtab = scheme_make_hash_table(SCHEME_hash_ptr); + mt->symtab = symtab; + rns = scheme_make_hash_table(SCHEME_hash_ptr); + mt->rns = rns; + mt->reverse_map = NULL; + mt->top_map = NULL; + mt->pass = 2; + print_substring(v, notdisplay, 1, NULL, mt, pp, NULL, &slen, + -1, &st_len); /* Remember version: */ - print_compact_number(pp, strlen(MZSCHEME_VERSION)); + print_one_byte(pp, strlen(MZSCHEME_VERSION)); print_this_string(pp, MZSCHEME_VERSION, 0, -1); - print_compact_number(pp, symtab->count); - print_compact_number(pp, slen); + if (mt->st_refs->count != mt->sorted_keys_count) + scheme_signal_error("shared key count somehow changed"); - /* Make symtab and rnht again to ensure the same results */ + print_number(pp, mt->st_refs->count + 1); + + /* Print shared-value offsets: */ + { + int all_short = shared_offsets[mt->st_refs->count-1] < 0xFFFF; + print_one_byte(pp, all_short); + for (j = 0; j < mt->st_refs->count; j++) { + if (all_short) + print_short_number(pp, shared_offsets[j]); + else + print_number(pp, shared_offsets[j]); + } + } + + print_number(pp, st_len); + print_number(pp, slen); + + /* Make symtab and rns again to ensure the same results + for the final print: */ symtab = scheme_make_hash_table(SCHEME_hash_ptr); - rnht = scheme_make_hash_table(SCHEME_hash_ptr); + mt->symtab = symtab; + rns = scheme_make_hash_table(SCHEME_hash_ptr); + mt->rns = rns; + mt->reverse_map = NULL; + mt->top_map = NULL; + mt->pass = 3; - closed = print(v, notdisplay, 1, NULL, symtab, rnht, pp); + start_offset = pp->print_offset; + + /* Print shared values first, so read can easily skip them + and load them lazily. */ + print_table_keys(notdisplay, 1, NULL, mt, pp); + shared_offset = pp->print_offset; + closed = print(v, notdisplay, 1, NULL, mt, pp); + + if (shared_offset - start_offset != st_len) { + scheme_signal_error("compiled code shared printed size changed on third pass:" + " %ld versus %ld (total %ld)", + st_len, shared_offset - start_offset, slen); + } + if (pp->print_offset - start_offset != slen) { + scheme_signal_error("compiled code printed size changed on third pass:" + " %ld versus %ld", + slen, pp->print_offset - start_offset); + } + + mt = NULL; } } else @@ -2408,7 +2759,7 @@ print_byte_string(const char *str, int delta, int len, int notdisplay, PrintPara static void print_pair(Scheme_Object *pair, int notdisplay, int compact, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab, Scheme_Hash_Table *rnht, + Scheme_Marshal_Tables *mt, PrintParams *pp) { Scheme_Object *cdr; @@ -2458,11 +2809,11 @@ print_pair(Scheme_Object *pair, int notdisplay, int compact, if (SCHEME_NULLP(cdr)) { /* Proper list without sharing. */ print_utf8_string(pp, "list(", 0, 5); - (void)print(SCHEME_CAR(pair), notdisplay, compact, ht, symtab, rnht, pp); + (void)print(SCHEME_CAR(pair), notdisplay, compact, ht, mt, pp); cdr = SCHEME_CDR(pair); while (SCHEME_PAIRP(cdr)) { print_utf8_string(pp, ", ", 0, 2); - (void)print(SCHEME_CAR(cdr), notdisplay, compact, ht, symtab, rnht, pp); + (void)print(SCHEME_CAR(cdr), notdisplay, compact, ht, mt, pp); cdr = SCHEME_CDR(cdr); } print_utf8_string(pp, ")", 0, 1); @@ -2470,25 +2821,25 @@ print_pair(Scheme_Object *pair, int notdisplay, int compact, /* Use cons cells. */ int cnt = 1; print_utf8_string(pp, "cons(", 0, 5); - (void)print(SCHEME_CAR(pair), notdisplay, compact, ht, symtab, rnht, pp); + (void)print(SCHEME_CAR(pair), notdisplay, compact, ht, mt, pp); cdr = SCHEME_CDR(pair); while (SCHEME_PAIRP(cdr)) { print_utf8_string(pp, ", ", 0, 2); if (ht) { if ((long)scheme_hash_get(ht, cdr) != 1) { /* This needs a tag */ - (void)print(cdr, notdisplay, compact, ht, symtab, rnht, pp); + (void)print(cdr, notdisplay, compact, ht, mt, pp); break; } } print_utf8_string(pp, "cons(", 0, 5); - (void)print(SCHEME_CAR(cdr), notdisplay, compact, ht, symtab, rnht, pp); + (void)print(SCHEME_CAR(cdr), notdisplay, compact, ht, mt, pp); cnt++; cdr = SCHEME_CDR(cdr); } print_utf8_string(pp, ", ", 0, 2); - (void)print(cdr, notdisplay, compact, ht, symtab, rnht, pp); + (void)print(cdr, notdisplay, compact, ht, mt, pp); while (cnt--) { print_utf8_string(pp, ")", 0, 1); } @@ -2502,7 +2853,7 @@ print_pair(Scheme_Object *pair, int notdisplay, int compact, } else print_utf8_string(pp, "(", 0, 1); - print(SCHEME_CAR(pair), notdisplay, compact, ht, symtab, rnht, pp); + print(SCHEME_CAR(pair), notdisplay, compact, ht, mt, pp); cdr = SCHEME_CDR (pair); while (SCHEME_PAIRP(cdr)) { @@ -2511,7 +2862,7 @@ print_pair(Scheme_Object *pair, int notdisplay, int compact, /* This needs a tag */ if (!compact) print_utf8_string(pp, " . ", 0, 3); - (void)print(cdr, notdisplay, compact, ht, symtab, rnht, pp); + (void)print(cdr, notdisplay, compact, ht, mt, pp); if (!compact) print_utf8_string(pp, ")", 0, 1); return; @@ -2521,14 +2872,14 @@ print_pair(Scheme_Object *pair, int notdisplay, int compact, print_compact(pp, CPT_PAIR); if (!compact) print_utf8_string(pp, " ", 0, 1); - print(SCHEME_CAR(cdr), notdisplay, compact, ht, symtab, rnht, pp); + print(SCHEME_CAR(cdr), notdisplay, compact, ht, mt, pp); cdr = SCHEME_CDR(cdr); } if (!SCHEME_NULLP(cdr)) { if (!compact) print_utf8_string(pp, " . ", 0, 3); - print(cdr, notdisplay, compact, ht, symtab, rnht, pp); + print(cdr, notdisplay, compact, ht, mt, pp); } else if (compact && (super_compact < 1)) print_compact(pp, CPT_NULL); @@ -2539,7 +2890,7 @@ print_pair(Scheme_Object *pair, int notdisplay, int compact, static void print_vector(Scheme_Object *vec, int notdisplay, int compact, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab, Scheme_Hash_Table *rnht, + Scheme_Marshal_Tables *mt, PrintParams *pp) { int i, size, common = 0; @@ -2577,7 +2928,7 @@ print_vector(Scheme_Object *vec, int notdisplay, int compact, } for (i = 0; i < size; i++) { - print(SCHEME_VEC_ELS(vec)[i], notdisplay, compact, ht, symtab, rnht, pp); + print(SCHEME_VEC_ELS(vec)[i], notdisplay, compact, ht, mt, pp); if (i < (size - 1)) { if (!compact) { if (pp->honu_mode) @@ -2756,9 +3107,8 @@ static void flush_from_byte_port(Scheme_Object *orig_port, PrintParams *pp) static Scheme_Object *custom_recur(int notdisplay, void *_vec, int argc, Scheme_Object **argv) { Scheme_Hash_Table *ht = (Scheme_Hash_Table *)SCHEME_VEC_ELS(_vec)[0]; - Scheme_Hash_Table *symtab = (Scheme_Hash_Table *)SCHEME_VEC_ELS(_vec)[1]; - Scheme_Hash_Table *rnht = (Scheme_Hash_Table *)SCHEME_VEC_ELS(_vec)[2]; - PrintParams * volatile pp = (PrintParams *)SCHEME_VEC_ELS(_vec)[3]; + Scheme_Marshal_Tables *mt = (Scheme_Marshal_Tables *)SCHEME_VEC_ELS(_vec)[1]; + PrintParams * volatile pp = (PrintParams *)SCHEME_VEC_ELS(_vec)[2]; Scheme_Object * volatile save_port; mz_jmp_buf escape, * volatile save; volatile long save_max; @@ -2769,7 +3119,7 @@ static Scheme_Object *custom_recur(int notdisplay, void *_vec, int argc, Scheme_ return NULL; } - if (SCHEME_VEC_ELS(_vec)[4]) { + if (SCHEME_VEC_ELS(_vec)[3]) { /* Recur: */ { if (pp->print_escape) { @@ -2785,12 +3135,12 @@ static Scheme_Object *custom_recur(int notdisplay, void *_vec, int argc, Scheme_ || !scheme_setjmp(escape)) { /* If printing to string, flush it and reset first: */ Scheme_Object *sp; - sp = SCHEME_VEC_ELS(_vec)[5]; + sp = SCHEME_VEC_ELS(_vec)[4]; if (sp) { flush_from_byte_port(sp, pp); sp = scheme_make_byte_string_output_port(); - ((Scheme_Output_Port *)SCHEME_VEC_ELS(_vec)[6])->port_data = sp; - SCHEME_VEC_ELS(_vec)[5] = sp; + ((Scheme_Output_Port *)SCHEME_VEC_ELS(_vec)[5])->port_data = sp; + SCHEME_VEC_ELS(_vec)[4] = sp; } /* If printing to a different output port, flush print cache, @@ -2806,7 +3156,7 @@ static Scheme_Object *custom_recur(int notdisplay, void *_vec, int argc, Scheme_ pp->print_port = argv[1]; /* Recur */ - print(argv[0], notdisplay, 0, ht, symtab, rnht, pp); + print(argv[0], notdisplay, 0, ht, mt, pp); /* Flush print cache, to ensure that future writes to the port go after printed data. */ @@ -2833,7 +3183,7 @@ static Scheme_Object *custom_display_recur(void *_vec, int argc, Scheme_Object * } static void custom_write_struct(Scheme_Object *s, Scheme_Hash_Table *ht, - Scheme_Hash_Table *symtab, Scheme_Hash_Table *rnht, + Scheme_Marshal_Tables *mt, PrintParams *orig_pp, int notdisplay) { Scheme_Object *v, *a[3], *o, *vec, *orig_port; @@ -2855,14 +3205,13 @@ static void custom_write_struct(Scheme_Object *s, Scheme_Hash_Table *ht, op = (Scheme_Output_Port *)o; - vec = scheme_make_vector(7, NULL); + vec = scheme_make_vector(6, NULL); SCHEME_VEC_ELS(vec)[0] = (Scheme_Object *)ht; - SCHEME_VEC_ELS(vec)[1] = (Scheme_Object *)symtab; - SCHEME_VEC_ELS(vec)[2] = (Scheme_Object *)rnht; - SCHEME_VEC_ELS(vec)[3] = (Scheme_Object *)pp; - SCHEME_VEC_ELS(vec)[4] = scheme_true; - SCHEME_VEC_ELS(vec)[5] = (pp->print_port ? NULL : orig_port); - SCHEME_VEC_ELS(vec)[6] = o; + SCHEME_VEC_ELS(vec)[1] = (Scheme_Object *)mt; + SCHEME_VEC_ELS(vec)[2] = (Scheme_Object *)pp; + SCHEME_VEC_ELS(vec)[3] = scheme_true; + SCHEME_VEC_ELS(vec)[4] = (pp->print_port ? NULL : orig_port); + SCHEME_VEC_ELS(vec)[5] = o; recur_write = scheme_make_closed_prim_w_arity(custom_write_recur, vec, @@ -2892,11 +3241,11 @@ static void custom_write_struct(Scheme_Object *s, Scheme_Hash_Table *ht, memcpy(orig_pp, pp, sizeof(PrintParams)); - SCHEME_VEC_ELS(vec)[4] = NULL; + SCHEME_VEC_ELS(vec)[3] = NULL; /* This must go last, because it might escape: */ if (!orig_pp->print_port) - flush_from_byte_port(SCHEME_VEC_ELS(vec)[5], orig_pp); + flush_from_byte_port(SCHEME_VEC_ELS(vec)[4], orig_pp); } /*========================================================================*/ @@ -2913,6 +3262,7 @@ START_XFORM_SKIP; static void register_traversers(void) { GC_REG_TRAV(scheme_rt_print_params, mark_print_params); + GC_REG_TRAV(scheme_rt_marshal_info, mark_marshal_tables); } END_XFORM_SKIP; diff --git a/src/mzscheme/src/read.c b/src/mzscheme/src/read.c index a64b51c72e..d42e158a6b 100644 --- a/src/mzscheme/src/read.c +++ b/src/mzscheme/src/read.c @@ -66,6 +66,9 @@ static Scheme_Object *read_decimal_as_inexact(int, Scheme_Object *[]); static Scheme_Object *read_accept_dot(int, Scheme_Object *[]); static Scheme_Object *read_accept_quasi(int, Scheme_Object *[]); static Scheme_Object *read_accept_reader(int, Scheme_Object *[]); +#ifdef LOAD_ON_DEMAND +static Scheme_Object *read_delay_load(int, Scheme_Object *[]); +#endif static Scheme_Object *print_graph(int, Scheme_Object *[]); static Scheme_Object *print_struct(int, Scheme_Object *[]); static Scheme_Object *print_box(int, Scheme_Object *[]); @@ -124,6 +127,7 @@ typedef struct ReadParams { int honu_mode; Readtable *table; Scheme_Object *magic_sym, *magic_val; + Scheme_Object *delay_load_info; } ReadParams; #define THREAD_FOR_LOCALS scheme_current_thread @@ -475,6 +479,13 @@ void scheme_init_read(Scheme_Env *env) "read-accept-reader", MZCONFIG_CAN_READ_READER), env); +#ifdef LOAD_ON_DEMAND + scheme_add_global_constant("read-on-demand-source", + scheme_register_parameter(read_delay_load, + "read-on-demand-source", + MZCONFIG_DELAY_LOAD_INFO), + env); +#endif scheme_add_global_constant("print-graph", scheme_register_parameter(print_graph, "print-graph", @@ -712,6 +723,24 @@ print_honu(int argc, Scheme_Object *argv[]) DO_CHAR_PARAM("print-honu", MZCONFIG_HONU_MODE); } +#ifdef LOAD_ON_DEMAND +static Scheme_Object *rdl_check(int argc, Scheme_Object **argv) +{ + return argv[0]; +} + +static Scheme_Object * +read_delay_load(int argc, Scheme_Object *argv[]) +{ + return scheme_param_config("read-on-demand-source", + scheme_make_integer(MZCONFIG_DELAY_LOAD_INFO), + argc, argv, + -1, rdl_check, + "complete path or string, optionally paired with an exact integer", 1); + +} +#endif + /*========================================================================*/ /* main read loop */ /*========================================================================*/ @@ -1840,7 +1869,8 @@ static Scheme_Object *resolve_references(Scheme_Object *obj, Scheme_Object * _scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int honu_mode, int recur, int extra_char, Scheme_Object *init_readtable, - Scheme_Object *magic_sym, Scheme_Object *magic_val) + Scheme_Object *magic_sym, Scheme_Object *magic_val, + Scheme_Object *delay_load_info) { Scheme_Object *v, *v2; Scheme_Config *config; @@ -1875,6 +1905,12 @@ _scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int h params.can_read_quasi = SCHEME_TRUEP(v); v = scheme_get_param(config, MZCONFIG_CAN_READ_DOT); params.can_read_dot = SCHEME_TRUEP(v); + if (!delay_load_info) + delay_load_info = scheme_get_param(config, MZCONFIG_DELAY_LOAD_INFO); + if (SCHEME_TRUEP(delay_load_info)) + params.delay_load_info = delay_load_info; + else + params.delay_load_info = NULL; params.honu_mode = honu_mode; if (honu_mode) params.table = NULL; @@ -1966,7 +2002,8 @@ static void *scheme_internal_read_k(void) Scheme_Object *stxsrc = (Scheme_Object *)p->ku.k.p2; Scheme_Object *init_readtable = (Scheme_Object *)p->ku.k.p3; Scheme_Object *magic_sym = (Scheme_Object *)p->ku.k.p4; - Scheme_Object *magic_val = (Scheme_Object *)p->ku.k.p5; + Scheme_Object *magic_val = NULL; + Scheme_Object *delay_load_info = (Scheme_Object *)p->ku.k.p5; p->ku.k.p1 = NULL; p->ku.k.p2 = NULL; @@ -1974,15 +2011,21 @@ static void *scheme_internal_read_k(void) p->ku.k.p4 = NULL; p->ku.k.p5 = NULL; + if (magic_sym) { + magic_val = SCHEME_CDR(magic_sym); + magic_sym = SCHEME_CAR(magic_sym); + } + return (void *)_scheme_internal_read(port, stxsrc, p->ku.k.i1, p->ku.k.i2, p->ku.k.i3, p->ku.k.i4, init_readtable, - magic_sym, magic_val); + magic_sym, magic_val, delay_load_info); } Scheme_Object * scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int cantfail, int honu_mode, int recur, int pre_char, Scheme_Object *init_readtable, - Scheme_Object *magic_sym, Scheme_Object *magic_val) + Scheme_Object *magic_sym, Scheme_Object *magic_val, + Scheme_Object *delay_load_info) { Scheme_Thread *p = scheme_current_thread; @@ -1994,8 +2037,12 @@ scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int ca scheme_alloc_list_stack(p); if (cantfail) { - return _scheme_internal_read(port, stxsrc, crc, honu_mode, recur, -1, NULL, magic_sym, magic_val); + return _scheme_internal_read(port, stxsrc, crc, honu_mode, recur, -1, NULL, + magic_sym, magic_val, delay_load_info); } else { + if (magic_sym) + magic_sym = scheme_make_pair(magic_sym, magic_val); + p->ku.k.p1 = (void *)port; p->ku.k.p2 = (void *)stxsrc; p->ku.k.i1 = crc; @@ -2004,7 +2051,7 @@ scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int ca p->ku.k.i4 = pre_char; p->ku.k.p3 = (void *)init_readtable; p->ku.k.p4 = (void *)magic_sym; - p->ku.k.p5 = (void *)magic_val; + p->ku.k.p5 = (void *)delay_load_info; return (Scheme_Object *)scheme_top_level_do(scheme_internal_read_k, 0); } @@ -2012,12 +2059,12 @@ scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int ca Scheme_Object *scheme_read(Scheme_Object *port) { - return scheme_internal_read(port, NULL, -1, 0, 0, 0, -1, NULL, NULL, NULL); + return scheme_internal_read(port, NULL, -1, 0, 0, 0, -1, NULL, NULL, NULL, NULL); } Scheme_Object *scheme_read_syntax(Scheme_Object *port, Scheme_Object *stxsrc) { - return scheme_internal_read(port, stxsrc, -1, 0, 0, 0, -1, NULL, NULL, NULL); + return scheme_internal_read(port, stxsrc, -1, 0, 0, 0, -1, NULL, NULL, NULL, NULL); } Scheme_Object *scheme_resolve_placeholders(Scheme_Object *obj, int mkstx) @@ -3832,6 +3879,17 @@ static void pop_indentation(Scheme_Object *indentation) /* .zo reader */ /*========================================================================*/ +typedef struct Scheme_Load_Delay { + MZTAG_IF_REQUIRED + Scheme_Object *path; + long file_offset, size; + unsigned long symtab_size; + Scheme_Object **symtab; + long *shared_offsets; + Scheme_Object *insp; + Scheme_Hash_Table *rn_memory; +} Scheme_Load_Delay; + #define ZO_CHECK(x) if (!(x)) scheme_ill_formed_code(port); #define RANGE_CHECK(x, y) ZO_CHECK (x y) #define RANGE_CHECK_GETS(x) RANGE_CHECK(x, <= port->size - port->pos) @@ -3842,12 +3900,14 @@ typedef struct CPort { unsigned char *start; unsigned long symtab_size; long base; - int flags; Scheme_Object *orig_port; Scheme_Hash_Table **ht; + Scheme_Unmarshal_Tables *ut; Scheme_Object **symtab; Scheme_Object *insp; /* inspector for module-variable access */ Scheme_Object *magic_sym, *magic_val; + long *shared_offsets; + Scheme_Load_Delay *delay_info; } CPort; #define CP_GETC(cp) ((int)(cp->start[cp->pos++])) #define CP_TELL(port) (port->pos + port->base) @@ -3877,29 +3937,24 @@ void scheme_ill_formed(struct CPort *port XFORM_NONGCING static long read_compact_number(CPort *port) { - /* >>> See also read_compact_number_from_port(), below. <<< */ - long flag, v, a, b, c, d; NUM_ZO_CHECK(port->pos < port->size); flag = CP_GETC(port); - if (flag < 252) + if (flag < 128) return flag; - else if (flag == 252) { - NUM_ZO_CHECK(port->pos + 1 < port->size); - - a = CP_GETC(port); - b = CP_GETC(port); - - v = a - + (b << 8); - return v; - } else if (flag == 254) { + else if (!(flag & 0x40)) { NUM_ZO_CHECK(port->pos < port->size); - return -CP_GETC(port); + a = CP_GETC(port); + + v = (flag & 0x3F) + + (a << 6); + return v; + } else if (!(flag & 0x20)) { + return -(flag & 0x1F); } NUM_ZO_CHECK(port->pos + 3 < port->size); @@ -3914,7 +3969,7 @@ XFORM_NONGCING static long read_compact_number(CPort *port) + (c << 16) + (d << 24); - if (flag == 253) + if (flag & 0x10) return v; else return -v; @@ -4005,7 +4060,6 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) switch(cpt_branch[ch]) { case CPT_ESCAPE: - case CPT_HASHED_ESCAPE: { int len; Scheme_Object *ep; @@ -4043,12 +4097,6 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) params.table = NULL; v = read_inner(ep, NULL, port->ht, scheme_null, ¶ms, 0); - - if (ch == CPT_HASHED_ESCAPE) { - l = read_compact_number(port); - RANGE_CHECK(l, < port->symtab_size); - port->symtab[l] = v; - } } break; case CPT_SYMBOL: @@ -4059,15 +4107,18 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) if (SAME_OBJ(v, port->magic_sym)) v = port->magic_val; - - l = read_compact_number(port); - RANGE_CHECK(l, < port->symtab_size); - port->symtab[l] = v; break; case CPT_SYMREF: l = read_compact_number(port); RANGE_CHECK(l, < port->symtab_size); v = port->symtab[l]; + if (!v) { + long save_pos = port->pos; + port->pos = port->shared_offsets[l - 1]; + v = read_compact(port, 0); + port->pos = save_pos; + port->symtab[l] = v; + } break; case CPT_WEIRD_SYMBOL: { @@ -4083,11 +4134,8 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) v = scheme_make_exact_symbol(s, l); else v = scheme_intern_exact_parallel_symbol(s, l); - - l = read_compact_number(port); - RANGE_CHECK(l, < port->symtab_size); - port->symtab[l] = v; - /* The fact that other uses of the symbol go through the table + + /* The fact that all uses of the symbol go through the table means that uninterned symbols are consistently re-created for a particular compiled expression. */ } @@ -4097,20 +4145,12 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) RANGE_CHECK_GETS(l); s = read_compact_chars(port, buffer, BLK_BUF_SIZE, l); v = scheme_intern_exact_keyword(s, l); - - l = read_compact_number(port); - RANGE_CHECK(l, < port->symtab_size); - port->symtab[l] = v; break; case CPT_BYTE_STRING: l = read_compact_number(port); RANGE_CHECK_GETS(l); s = read_compact_chars(port, buffer, BLK_BUF_SIZE, l); v = scheme_make_immutable_sized_byte_string(s, l, l < BLK_BUF_SIZE); - - l = read_compact_number(port); - RANGE_CHECK(l, < port->symtab_size); - port->symtab[l] = v; break; case CPT_CHAR_STRING: { @@ -4124,10 +4164,6 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) scheme_utf8_decode_all((const unsigned char *)s, el, us, 0); us[l] = 0; v = scheme_make_immutable_sized_char_string(us, l, 0); - - l = read_compact_number(port); - RANGE_CHECK(l, < port->symtab_size); - port->symtab[l] = v; } break; case CPT_CHAR: @@ -4218,7 +4254,7 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) l = scheme_make_pair(scheme_make_pair(k, v), l); } - /* Map an unintenred sym to l so that resolve_references + /* Map an uninterned sym to l so that resolve_references completes the table construction. */ scheme_hash_set(t, an_uninterned_symbol, l); if (!(*port->ht)) { @@ -4234,15 +4270,26 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) case CPT_STX: case CPT_GSTX: { - if (!local_rename_memory) { + if (!port->ut) { + Scheme_Unmarshal_Tables *ut; Scheme_Hash_Table *rht; + char *decoded; + + ut = MALLOC_ONE_RT(Scheme_Unmarshal_Tables); + SET_REQUIRED_TAG(ut->type = scheme_rt_unmarshal_info); + port->ut = ut; + ut->rp = port; + + decoded = (char *)scheme_malloc_atomic(port->symtab_size); + memset(decoded, 0, port->symtab_size); + ut->decoded = decoded; + rht = scheme_make_hash_table(SCHEME_hash_ptr); - local_rename_memory = rht; + port->ut->rns = rht; } v = read_compact(port, 1); - v = scheme_datum_to_syntax(v, scheme_false, (Scheme_Object *)local_rename_memory, - ch == CPT_GSTX, 0); + v = scheme_unmarshal_datum_to_syntax(v, port->ut, ch == CPT_GSTX); scheme_num_read_syntax_objects++; if (!v) scheme_ill_formed_code(port); @@ -4332,14 +4379,10 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) { Scheme_Object *path, *base; - l = read_compact_number(port); /* symtab index */ path = read_compact(port, 0); base = read_compact(port, 0); v = scheme_make_modidx(path, base, scheme_false); - - RANGE_CHECK(l, < port->symtab_size); - port->symtab[l] = v; } break; case CPT_MODULE_VAR: @@ -4348,7 +4391,6 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) Scheme_Object *mod, *var; int pos; - l = read_compact_number(port); /* symtab index */ mod = read_compact(port, 0); var = read_compact(port, 0); pos = read_compact_number(port); @@ -4361,9 +4403,6 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) mv->pos = pos; v = (Scheme_Object *)mv; - - RANGE_CHECK(l, < port->symtab_size); - port->symtab[l] = v; } break; case CPT_PATH: @@ -4372,7 +4411,6 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) RANGE_CHECK_GETS(l); s = read_compact_chars(port, buffer, BLK_BUF_SIZE, l); v = scheme_make_sized_path(s, l, l < BLK_BUF_SIZE); - l = read_compact_number(port); /* symtab index */ if (scheme_is_relative_path(SCHEME_PATH_VAL(v), SCHEME_PATH_LEN(v), SCHEME_PLATFORM_PATH_KIND)) { /* Resolve relative path using the current load-relative directory: */ @@ -4385,14 +4423,13 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) v = scheme_build_path(2, a); } } - - port->symtab[l] = v; } break; case CPT_CLOSURE: { Scheme_Closure *cl; l = read_compact_number(port); + RANGE_CHECK(l, < port->symtab_size); cl = scheme_malloc_empty_closure(); port->symtab[l] = (Scheme_Object *)cl; v = read_compact(port, 0); @@ -4405,6 +4442,27 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) v = (Scheme_Object *)cl; break; } + case CPT_DELAY_REF: + { + l = read_compact_number(port); + RANGE_CHECK(l, < port->symtab_size); + v = port->symtab[l]; + if (!v) { + if (port->delay_info) { + /* This is where we construct information for + loading the syntax object on demand. */ + v = scheme_make_raw_pair(scheme_make_integer(l), + (Scheme_Object *)port->delay_info); + } else { + long save_pos = port->pos; + port->pos = port->shared_offsets[l - 1]; + v = read_compact(port, 0); + port->pos = save_pos; + port->symtab[l] = v; + } + } + break; + } case CPT_SMALL_LOCAL_START: case CPT_SMALL_LOCAL_UNBOX_START: { @@ -4441,10 +4499,6 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) if (SAME_OBJ(v, port->magic_sym)) v = port->magic_val; - - l = read_compact_number(port); - RANGE_CHECK(l, < port->symtab_size); - port->symtab[l] = v; } break; case CPT_SMALL_NUMBER_START: @@ -4698,40 +4752,19 @@ static Scheme_Object *read_marshalled(int type, CPort *port) return l; } -static long read_compact_number_from_port(Scheme_Object *port) +static long read_simple_number_from_port(Scheme_Object *port) { - /* >>> See also read_compact_number(), above. <<< */ + long a, b, c, d; - long flag, v, a, b, c, d; + a = (unsigned char)scheme_get_byte(port); + b = (unsigned char)scheme_get_byte(port); + c = (unsigned char)scheme_get_byte(port); + d = (unsigned char)scheme_get_byte(port); - flag = scheme_get_byte(port); - - if (flag < 252) - return flag; - if (flag == 254) - return -scheme_get_byte(port); - - a = scheme_get_byte(port); - b = scheme_get_byte(port); - - if (flag == 252) { - v = a - + (b << 8); - return v; - } - - c = scheme_get_byte(port); - d = scheme_get_byte(port); - - v = a - + (b << 8) - + (c << 16) - + (d << 24); - - if (flag == 253) - return v; - else - return -v; + return (a + + (b << 8) + + (c << 16) + + (d << 24)); } /* "#~" has been read */ @@ -4743,10 +4776,13 @@ static Scheme_Object *read_compiled(Scheme_Object *port, { Scheme_Thread *p = scheme_current_thread; Scheme_Object *result, *insp; - long size, got; + long size, shared_size, got, offset = 0; CPort *rp; long symtabsize; Scheme_Object **symtab; + long *so; + Scheme_Load_Delay *delay_info; + int all_short; if (USE_LISTSTACK(!p->list_stack)) scheme_alloc_list_stack(p); @@ -4780,8 +4816,16 @@ static Scheme_Object *read_compiled(Scheme_Object *port, if (!variable_references) variable_references = scheme_make_builtin_references_table(); + /* Allow delays? */ + if (params->delay_load_info) { + delay_info = MALLOC_ONE_RT(Scheme_Load_Delay); + SET_REQUIRED_TAG(delay_info->type = scheme_rt_delay_load_info); + delay_info->path = params->delay_load_info; + } else + delay_info = NULL; + /* Check version: */ - size = read_compact_number_from_port(port); + size = scheme_get_byte(port); { char buf[64]; @@ -4796,17 +4840,59 @@ static Scheme_Object *read_compiled(Scheme_Object *port, "read (compiled): code compiled for version %s, not %s", (buf[0] ? buf : "???"), MZSCHEME_VERSION); } + offset += size + 1; - symtabsize = read_compact_number_from_port(port); + symtabsize = read_simple_number_from_port(port); + offset += 4; + + /* Load table mapping symtab indices to stream positions: */ + + all_short = scheme_get_byte(port); + so = (long *)scheme_malloc_atomic(sizeof(long) * symtabsize); + if ((got = scheme_get_bytes(port, (all_short ? 2 : 4) * (symtabsize - 1), (char *)so, 0)) + != ((all_short ? 2 : 4) * (symtabsize - 1))) + scheme_read_err(port, NULL, -1, -1, -1, -1, 0, NULL, + "read (compiled): ill-formed code (bad table count: %ld != %ld)", + got, (all_short ? 2 : 4) * (symtabsize - 1)); + offset += got; + + { + /* This loop runs top to bottom, since sizeof(long) may be larger + than the decoded integers (but it's never shorter) */ + long j, v; + unsigned char *so_c = (unsigned char *)so; + for (j = symtabsize - 1; j--; ) { + if (all_short) { + v = so_c[j * 2] + + (so_c[j * 2 + 1] << 8); + } else { + v = so_c[j * 4] + + (so_c[j * 4 + 1] << 8) + + (so_c[j * 4 + 2] << 16) + + (so_c[j * 4 + 3] << 24); + } + so[j] = v; + } + } + + /* Continue reading content */ + + shared_size = read_simple_number_from_port(port); + size = read_simple_number_from_port(port); + + if (shared_size >= size) { + scheme_read_err(port, NULL, -1, -1, -1, -1, 0, NULL, + "read (compiled): ill-formed code (shared size %ld >= total size %ld)", + shared_size, size); + } + + offset += 8; - size = read_compact_number_from_port(port); rp = MALLOC_ONE_RT(CPort); -#ifdef MZ_PRECISE_GC - rp->type = scheme_rt_compact_port; -#endif + SET_REQUIRED_TAG(rp->type = scheme_rt_compact_port); { unsigned char *st; - st = (unsigned char *)scheme_malloc_atomic(size); + st = (unsigned char *)scheme_malloc_atomic(size + 1); rp->start = st; } rp->pos = 0; @@ -4822,8 +4908,6 @@ static Scheme_Object *read_compiled(Scheme_Object *port, "read (compiled): ill-formed code (bad count: %ld != %ld, started at %ld)", got, size, rp->base); - local_rename_memory = NULL; - symtab = MALLOC_N(Scheme_Object *, symtabsize); rp->symtab_size = symtabsize; rp->ht = ht; @@ -4835,9 +4919,37 @@ static Scheme_Object *read_compiled(Scheme_Object *port, rp->magic_sym = params->magic_sym; rp->magic_val = params->magic_val; - result = read_marshalled(scheme_compilation_top_type, rp); + rp->shared_offsets = so; + rp->delay_info = delay_info; - local_rename_memory = NULL; + if (!delay_info) { + /* Read shared parts: */ + long j, len; + Scheme_Object *v; + len = symtabsize; + for (j = 1; j < len; j++) { + if (!symtab[j]) { + v = read_compact(rp, 0); + symtab[j] = v; + } else { + if (j+1 < len) + rp->pos = so[j]; + else + rp->pos = shared_size; + } + } + } else { + rp->pos = shared_size; /* skip shared part */ + delay_info->file_offset = offset + 2; /* +2 is for #~ */ + delay_info->size = shared_size; + delay_info->symtab_size = rp->symtab_size; + delay_info->symtab = rp->symtab; + delay_info->shared_offsets = rp->shared_offsets; + delay_info->insp = rp->insp; + } + + /* Read main body: */ + result = read_marshalled(scheme_compilation_top_type, rp); if (SAME_TYPE(SCHEME_TYPE(result), scheme_compilation_top_type)) { Scheme_Compilation_Top *top = (Scheme_Compilation_Top *)result; @@ -4855,6 +4967,100 @@ static Scheme_Object *read_compiled(Scheme_Object *port, return result; } +Scheme_Object *scheme_load_delayed_code(int which, Scheme_Load_Delay *delay_info) +{ + CPort *rp; + char *filename; + long size, got; + unsigned char *st; + Scheme_Object *port, *v; + Scheme_Hash_Table **ht; + + filename = scheme_expand_filename(SCHEME_PATH_VAL(delay_info->path), + SCHEME_PATH_LEN(delay_info->path), + NULL, NULL, 0); + port = scheme_open_input_file(filename, "on-demand-loader"); + + size = delay_info->size; + + rp = MALLOC_ONE_RT(CPort); + SET_REQUIRED_TAG(rp->type = scheme_rt_compact_port); + st = (unsigned char *)scheme_malloc_atomic(size + 1); + rp->start = st; + rp->pos = 0; + rp->base = 0; + rp->orig_port = port; + rp->size = size; + + ht = MALLOC_N(Scheme_Hash_Table *, 1); + + scheme_set_file_position(port, delay_info->file_offset); + + if ((got = scheme_get_bytes(port, size, (char *)rp->start, 0)) != size) + scheme_read_err(port, NULL, -1, -1, -1, -1, 0, NULL, + "on-demand load: ill-formed code (bad count: %ld != %ld, started at %ld)", + got, size, rp->base); + + scheme_close_input_port(port); + + rp->symtab_size = delay_info->symtab_size; + rp->ht = ht; + rp->symtab = delay_info->symtab; + rp->insp = delay_info->insp; + rp->shared_offsets = delay_info->shared_offsets; + rp->delay_info = delay_info; + + rp->pos = delay_info->shared_offsets[which - 1]; + v = read_compact(rp, 0); + + delay_info->symtab[which] = v; + + if (*ht) { + resolve_references(v, NULL, 0); + } + + return v; +} + +Scheme_Object *scheme_unmarshal_wrap_get(Scheme_Unmarshal_Tables *ut, + Scheme_Object *wraps_key, + int *_decoded) +{ + long l; + l = SCHEME_INT_VAL(wraps_key); + + if ((l < 0) || (l >= ut->rp->symtab_size)) + scheme_ill_formed_code(ut->rp); + + if (!ut->rp->symtab[l]) { + Scheme_Object *v; + long save_pos; + + if (!ut->rp->delay_info) + scheme_ill_formed_code(ut->rp); + + save_pos = ut->rp->pos; + ut->rp->pos = ut->rp->shared_offsets[l - 1]; + v = read_compact(ut->rp, 0); + ut->rp->pos = save_pos; + ut->rp->symtab[l] = v; + } + + *_decoded = ut->decoded[l]; + return ut->rp->symtab[l]; +} + +void scheme_unmarshal_wrap_set(Scheme_Unmarshal_Tables *ut, + Scheme_Object *wraps_key, + Scheme_Object *v) +{ + long l; + l = SCHEME_INT_VAL(wraps_key); + + ut->rp->symtab[l] = v; + ut->decoded[l] = 1; +} + /*========================================================================*/ /* readtable support */ /*========================================================================*/ @@ -5499,6 +5705,8 @@ static void register_traversers(void) GC_REG_TRAV(scheme_rt_compact_port, mark_cport); GC_REG_TRAV(scheme_readtable_type, mark_readtable); GC_REG_TRAV(scheme_rt_read_params, mark_read_params); + GC_REG_TRAV(scheme_rt_delay_load_info, mark_delay_load); + GC_REG_TRAV(scheme_rt_unmarshal_info, mark_unmarshal_tables); } END_XFORM_SKIP; diff --git a/src/mzscheme/src/regexp.c b/src/mzscheme/src/regexp.c index 49ce3acf0c..14b97ee917 100644 --- a/src/mzscheme/src/regexp.c +++ b/src/mzscheme/src/regexp.c @@ -3891,7 +3891,6 @@ char *regsub(regexp *prog, char *src, int sourcelen, long *lenout, char *insrc, /* code points. */ /************************************************************/ -/* To avoid the broken qsort in Solaris: */ #ifdef MZ_XFORM START_XFORM_SKIP; #endif diff --git a/src/mzscheme/src/schcpt.h b/src/mzscheme/src/schcpt.h index 5023b54e05..b0d396f714 100644 --- a/src/mzscheme/src/schcpt.h +++ b/src/mzscheme/src/schcpt.h @@ -33,7 +33,7 @@ enum { CPT_MODULE_VAR, /* 30 */ CPT_PATH, CPT_CLOSURE, - CPT_HASHED_ESCAPE, + CPT_DELAY_REF, _CPT_COUNT_ }; diff --git a/src/mzscheme/src/schemef.h b/src/mzscheme/src/schemef.h index 1e482e4171..ac557ab88c 100644 --- a/src/mzscheme/src/schemef.h +++ b/src/mzscheme/src/schemef.h @@ -798,6 +798,7 @@ MZ_EXTERN char *scheme_getdrive(void); MZ_EXTERN Scheme_Object *scheme_split_path(const char *path, int len, Scheme_Object **base, int *isdir, int kind); MZ_EXTERN Scheme_Object *scheme_build_path(int argc, Scheme_Object **argv); MZ_EXTERN Scheme_Object *scheme_path_to_directory_path(Scheme_Object *p); +MZ_EXTERN Scheme_Object *scheme_path_to_complete_path(Scheme_Object *path, Scheme_Object *relto_path); MZ_EXTERN Scheme_Object *scheme_make_path(const char *chars); MZ_EXTERN Scheme_Object *scheme_make_sized_path(char *chars, long len, int copy); diff --git a/src/mzscheme/src/schemex.h b/src/mzscheme/src/schemex.h index f2205fa34b..ab14d1c631 100644 --- a/src/mzscheme/src/schemex.h +++ b/src/mzscheme/src/schemex.h @@ -668,6 +668,7 @@ char *(*scheme_getdrive)(void); Scheme_Object *(*scheme_split_path)(const char *path, int len, Scheme_Object **base, int *isdir, int kind); Scheme_Object *(*scheme_build_path)(int argc, Scheme_Object **argv); Scheme_Object *(*scheme_path_to_directory_path)(Scheme_Object *p); +Scheme_Object *(*scheme_path_to_complete_path)(Scheme_Object *path, Scheme_Object *relto_path); Scheme_Object *(*scheme_make_path)(const char *chars); Scheme_Object *(*scheme_make_sized_path)(char *chars, long len, int copy); Scheme_Object *(*scheme_make_sized_offset_path)(char *chars, long d, long len, int copy); diff --git a/src/mzscheme/src/schemex.inc b/src/mzscheme/src/schemex.inc index 39555498f6..908ebc6192 100644 --- a/src/mzscheme/src/schemex.inc +++ b/src/mzscheme/src/schemex.inc @@ -448,6 +448,7 @@ scheme_extension_table->scheme_split_path = scheme_split_path; scheme_extension_table->scheme_build_path = scheme_build_path; scheme_extension_table->scheme_path_to_directory_path = scheme_path_to_directory_path; + scheme_extension_table->scheme_path_to_complete_path = scheme_path_to_complete_path; scheme_extension_table->scheme_make_path = scheme_make_path; scheme_extension_table->scheme_make_sized_path = scheme_make_sized_path; scheme_extension_table->scheme_make_sized_offset_path = scheme_make_sized_offset_path; diff --git a/src/mzscheme/src/schemexm.h b/src/mzscheme/src/schemexm.h index 4af1d699e5..9e888b5a60 100644 --- a/src/mzscheme/src/schemexm.h +++ b/src/mzscheme/src/schemexm.h @@ -448,6 +448,7 @@ #define scheme_split_path (scheme_extension_table->scheme_split_path) #define scheme_build_path (scheme_extension_table->scheme_build_path) #define scheme_path_to_directory_path (scheme_extension_table->scheme_path_to_directory_path) +#define scheme_path_to_complete_path (scheme_extension_table->scheme_path_to_complete_path) #define scheme_make_path (scheme_extension_table->scheme_make_path) #define scheme_make_sized_path (scheme_extension_table->scheme_make_sized_path) #define scheme_make_sized_offset_path (scheme_extension_table->scheme_make_sized_offset_path) diff --git a/src/mzscheme/src/schpriv.h b/src/mzscheme/src/schpriv.h index ea450a9b9c..cb4b2dc2cd 100644 --- a/src/mzscheme/src/schpriv.h +++ b/src/mzscheme/src/schpriv.h @@ -98,8 +98,10 @@ int scheme_num_types(void); #ifdef MZTAG_REQUIRED # define MZTAG_IF_REQUIRED Scheme_Type type; +# define SET_REQUIRED_TAG(e) e #else # define MZTAG_IF_REQUIRED /* empty */ +# define SET_REQUIRED_TAG(e) /* empty */ #endif void scheme_reset_finalizations(void); @@ -559,6 +561,9 @@ typedef struct Scheme_Stx_Offset { Scheme_Object *src; } Scheme_Stx_Offset; +struct Scheme_Marshal_Tables; +struct Scheme_Unmarshal_Tables; + Scheme_Object *scheme_make_stx(Scheme_Object *val, Scheme_Stx_Srcloc *srcloc, Scheme_Object *props); @@ -578,7 +583,10 @@ Scheme_Object *scheme_datum_to_syntax(Scheme_Object *o, Scheme_Object *stx_src, Scheme_Object *stx_wraps, int cangraph, int copyprops); Scheme_Object *scheme_syntax_to_datum(Scheme_Object *stx, int with_marks, - Scheme_Hash_Table *renames); + struct Scheme_Marshal_Tables *mt); +Scheme_Object *scheme_unmarshal_datum_to_syntax(Scheme_Object *o, + struct Scheme_Unmarshal_Tables *ut, + int can_graph); int scheme_syntax_is_graph(Scheme_Object *stx); @@ -691,6 +699,8 @@ Scheme_Object *scheme_stx_add_inactive_certs(Scheme_Object *o, Scheme_Object *ce int scheme_stx_has_more_certs(Scheme_Object *id, Scheme_Object *certs, Scheme_Object *than_id, Scheme_Object *than_certs); +Scheme_Object *scheme_delayed_rename(Scheme_Object **o, long i); + /*========================================================================*/ /* syntax run-time structures */ /*========================================================================*/ @@ -747,7 +757,9 @@ typedef struct Scheme_Let_Header { Scheme_Object *body; } Scheme_Let_Header; -#define SCHEME_LET_RECURSIVE(lh) MZ_OPT_HASH_KEY(&lh->iso) +#define SCHEME_LET_FLAGS(lh) MZ_OPT_HASH_KEY(&lh->iso) +#define SCHEME_LET_RECURSIVE 0x1 +#define SCHEME_LET_STAR 0x2 typedef struct { Scheme_Object so; @@ -1521,7 +1533,8 @@ Scheme_Object *_scheme_tail_apply_to_list (Scheme_Object *rator, Scheme_Object * Scheme_Object *scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int cantfail, int honu_mode, int recur, int pre_char, Scheme_Object *readtable, - Scheme_Object *magic_sym, Scheme_Object *magic_val); + Scheme_Object *magic_sym, Scheme_Object *magic_val, + Scheme_Object *delay_load_info); void scheme_internal_display(Scheme_Object *obj, Scheme_Object *port); void scheme_internal_write(Scheme_Object *obj, Scheme_Object *port); void scheme_internal_print(Scheme_Object *obj, Scheme_Object *port); @@ -1567,6 +1580,9 @@ Scheme_Object *scheme_force_one_value_same_mark(Scheme_Object *); void scheme_flush_stack_cache(void); +struct Scheme_Load_Delay; +Scheme_Object *scheme_load_delayed_code(int pos, struct Scheme_Load_Delay *ld); + /*========================================================================*/ /* compile and link */ /*========================================================================*/ @@ -1639,6 +1655,8 @@ typedef struct Resolve_Prefix int num_toplevels, num_stxes, num_lifts; Scheme_Object **toplevels; Scheme_Object **stxes; /* simplified */ + int delay_refcount; + struct Scheme_Load_Delay *delay_info; } Resolve_Prefix; typedef struct Resolve_Info @@ -1865,14 +1883,13 @@ int scheme_is_sub_env(Scheme_Comp_Env *stx_env, Scheme_Comp_Env *env); #define CASE_LAMBDA_EXPD 3 #define BEGIN0_EXPD 4 #define BOXENV_EXPD 5 -#define BOXVAL_EXPD 6 -#define MODULE_EXPD 7 -#define REQUIRE_EXPD 8 -#define DEFINE_FOR_SYNTAX_EXPD 9 -#define REF_EXPD 10 -#define APPVALS_EXPD 11 -#define SPLICE_EXPD 12 -#define _COUNT_EXPD_ 13 +#define MODULE_EXPD 6 +#define REQUIRE_EXPD 7 +#define DEFINE_FOR_SYNTAX_EXPD 8 +#define REF_EXPD 9 +#define APPVALS_EXPD 10 +#define SPLICE_EXPD 11 +#define _COUNT_EXPD_ 12 #define scheme_register_syntax(i, fo, fr, fv, fe, fj, cl, sh, pa) \ (scheme_syntax_optimizers[i] = fo, \ @@ -2161,6 +2178,45 @@ Scheme_Object *scheme_check_name_property(Scheme_Object *stx, Scheme_Object *cur Scheme_Object *scheme_make_lifted_defn(Scheme_Object *sys_wraps, Scheme_Object **_id, Scheme_Object *expr, Scheme_Comp_Env *env); +typedef struct Scheme_Marshal_Tables { + MZTAG_IF_REQUIRED + int pass, print_now; + Scheme_Hash_Table *symtab; + Scheme_Hash_Table *rns; + Scheme_Hash_Table *rn_refs; + Scheme_Hash_Table *st_refs; + Scheme_Object *st_ref_stack; + Scheme_Hash_Table *reverse_map; /* used on first pass */ + Scheme_Hash_Table *same_map; /* set on first pass, used on later passes */ + Scheme_Hash_Table *top_map; /* used on every pass */ + Scheme_Hash_Table *key_map; /* set after first pass, used on later passes */ + Scheme_Hash_Table *delay_map; /* set during first pass, used on later passes */ + Scheme_Hash_Table *rn_saved; /* maps each original object to generated marshaling */ + long *shared_offsets; /* set in second pass */ + long sorted_keys_count; + Scheme_Object **sorted_keys; +} Scheme_Marshal_Tables; + +void scheme_marshal_using_key(Scheme_Marshal_Tables *mt, Scheme_Object *key); +Scheme_Object *scheme_marshal_lookup(Scheme_Marshal_Tables *mt, Scheme_Object *a); +Scheme_Object *scheme_marshal_wrap_set(Scheme_Marshal_Tables *mt, Scheme_Object *a, Scheme_Object *v); +void scheme_marshal_push_refs(Scheme_Marshal_Tables *mt); +void scheme_marshal_pop_refs(Scheme_Marshal_Tables *mt, int keep); + +typedef struct Scheme_Unmarshal_Tables { + MZTAG_IF_REQUIRED + Scheme_Hash_Table *rns; + struct CPort *rp; + char *decoded; +} Scheme_Unmarshal_Tables; + +Scheme_Object *scheme_unmarshal_wrap_get(Scheme_Unmarshal_Tables *ut, + Scheme_Object *wraps_key, + int *_decoded); +void scheme_unmarshal_wrap_set(Scheme_Unmarshal_Tables *ut, + Scheme_Object *wraps_key, + Scheme_Object *v); + /*========================================================================*/ /* namespaces and modules */ /*========================================================================*/ diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index 6a4fdf23f5..7a878d6d7c 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -9,6 +9,6 @@ #define MZSCHEME_VERSION_MAJOR 369 -#define MZSCHEME_VERSION_MINOR 2 +#define MZSCHEME_VERSION_MINOR 3 -#define MZSCHEME_VERSION "369.2" _MZ_SPECIAL_TAG +#define MZSCHEME_VERSION "369.3" _MZ_SPECIAL_TAG diff --git a/src/mzscheme/src/startup.inc b/src/mzscheme/src/startup.inc index d99591003e..e006682278 100644 --- a/src/mzscheme/src/startup.inc +++ b/src/mzscheme/src/startup.inc @@ -2938,8 +2938,7 @@ "((current-eval)(if(syntax? v)" "(namespace-syntax-introduce " "(datum->syntax-object #f w v))" -" w))))" -"(default-continuation-prompt-tag)))" +" w))))))" "(lambda results(for-each(current-print) results)))" "(abort-current-continuation(default-continuation-prompt-tag)))))" "(default-continuation-prompt-tag)" diff --git a/src/mzscheme/src/startup.ss b/src/mzscheme/src/startup.ss index 8f49a17bf2..42604196c9 100644 --- a/src/mzscheme/src/startup.ss +++ b/src/mzscheme/src/startup.ss @@ -3383,8 +3383,7 @@ ((current-eval) (if (syntax? v) (namespace-syntax-introduce (datum->syntax-object #f w v)) - w)))) - (default-continuation-prompt-tag))) + w)))))) (lambda results (for-each (current-print) results))) ;; Abort to loop. (Calling `repl-loop' directory would not be a tail call.) (abort-current-continuation (default-continuation-prompt-tag))))) diff --git a/src/mzscheme/src/stxobj.c b/src/mzscheme/src/stxobj.c index 551c6bfbb6..634e35805e 100644 --- a/src/mzscheme/src/stxobj.c +++ b/src/mzscheme/src/stxobj.c @@ -1378,6 +1378,27 @@ Scheme_Object *scheme_add_rename(Scheme_Object *o, Scheme_Object *rename) return (Scheme_Object *)stx; } +Scheme_Object *scheme_delayed_rename(Scheme_Object **o, long i) +{ + Scheme_Object *rename; + Resolve_Prefix *rp; + + rename = o[0]; + rp = (Resolve_Prefix *)o[1]; + + if (SCHEME_INTP(rp->stxes[i])) { + Scheme_Object *stx; + stx = scheme_load_delayed_code(SCHEME_INT_VAL(rp->stxes[i]), + rp->delay_info); + rp->stxes[i] = stx; + --rp->delay_refcount; + if (!rp->delay_refcount) + rp->delay_info = NULL; + } + + return scheme_add_rename(rp->stxes[i], rename); +} + Scheme_Object *scheme_add_rename_rib(Scheme_Object *o, Scheme_Object *rib) { #if 0 @@ -2451,13 +2472,12 @@ static Scheme_Object *lift_inactive_certs(Scheme_Object *o, int as_active) Scheme_Hash_Table *ht = NULL; o = stx_activate_certs(o, &certs, &ht); - if (!certs) - return o; - o = add_certs(o, certs, NULL, as_active); + if (certs) + o = add_certs(o, certs, NULL, as_active); if (ht) - o = scheme_resolve_placeholders(o, 0); + o = scheme_resolve_placeholders(o, 1); return o; } @@ -3841,7 +3861,8 @@ static void simplify_lex_renames(Scheme_Object *wraps, Scheme_Hash_Table *lex_ca } static Scheme_Object *wraps_to_datum(Scheme_Object *w_in, - Scheme_Hash_Table *rns, + Scheme_Marshal_Tables *mt, + Scheme_Hash_Table *rns, int just_simplify) { Scheme_Object *stack, *a, *old_key, *simplifies = scheme_null; @@ -3849,12 +3870,26 @@ static Scheme_Object *wraps_to_datum(Scheme_Object *w_in, Scheme_Hash_Table *lex_cache, *reverse_map; int stack_size = 0; - a = scheme_hash_get(rns, w_in); + if (!rns) + rns = mt->rns; + + if (just_simplify) { + a = scheme_hash_get(rns, w_in); + } else { + if (mt->pass && mt->same_map) { + a = scheme_hash_get(mt->same_map, w_in); + if (a) + w_in = a; + } + a = scheme_marshal_lookup(mt, w_in); + } if (a) { if (just_simplify) - return SCHEME_CDR(a); - else - return SCHEME_CAR(a); + return a; + else { + scheme_marshal_using_key(mt, w_in); + return a; + } } WRAP_POS_INIT(w, w_in); @@ -3870,6 +3905,9 @@ static Scheme_Object *wraps_to_datum(Scheme_Object *w_in, /* Ensures that all lexical tables in w have been simplified */ simplify_lex_renames(w_in, lex_cache); + if (mt) + scheme_marshal_push_refs(mt); + while (!WRAP_POS_END_P(w)) { a = WRAP_POS_FIRST(w); old_key = WRAP_POS_KEY(w); @@ -3909,20 +3947,14 @@ static Scheme_Object *wraps_to_datum(Scheme_Object *w_in, } else { Scheme_Object *local_key; - local_key = scheme_hash_get(rns, a); + local_key = scheme_marshal_lookup(mt, a); if (local_key) { - stack = CONS(local_key, stack); - } else { - local_key = scheme_make_integer(rns->count); - scheme_hash_set(rns, a, local_key); - - /* Since this is a simplified table, we can steal the first - slot for local_key: */ - - SCHEME_VEC_ELS(a)[0] = local_key; - - stack = CONS(a, stack); - } + scheme_marshal_using_key(mt, a); + a = local_key; + } else { + a = scheme_marshal_wrap_set(mt, a, a); + } + stack = CONS(a, stack); } stack_size++; } @@ -3986,10 +4018,8 @@ static Scheme_Object *wraps_to_datum(Scheme_Object *w_in, } else { Scheme_Object *local_key; - local_key = scheme_hash_get(rns, (Scheme_Object *)mrn); - if (local_key) { - stack = CONS(local_key, stack); - } else { + local_key = scheme_marshal_lookup(mt, (Scheme_Object *)mrn); + if (!local_key) { /* Convert hash table to vector: */ int i, j, count = 0; Scheme_Object *l, *idi; @@ -4019,9 +4049,6 @@ static Scheme_Object *wraps_to_datum(Scheme_Object *w_in, } } - local_key = scheme_make_integer(rns->count); - scheme_hash_set(rns, a, local_key); - if (mrn->marked_names && mrn->marked_names->count) { Scheme_Object *d = scheme_null, *p; @@ -4046,10 +4073,17 @@ static Scheme_Object *wraps_to_datum(Scheme_Object *w_in, l = CONS(scheme_true,l); /* note: information on nominals intentially omitted */ } - l = CONS(local_key, l); - stack = CONS(l, stack); - } + local_key = scheme_marshal_lookup(mt, a); + if (local_key) + scheme_marshal_using_key(mt, a); + else { + local_key = scheme_marshal_wrap_set(mt, a, l); + } + } else { + scheme_marshal_using_key(mt, (Scheme_Object *)mrn); + } + stack = CONS(local_key, stack); } } stack_size++; @@ -4106,30 +4140,57 @@ static Scheme_Object *wraps_to_datum(Scheme_Object *w_in, stack= scheme_null; } - /* Double-check for equivalent list in table (after simplificiation): */ - reverse_map = (Scheme_Hash_Table *)scheme_hash_get(rns, scheme_undefined); - if (!reverse_map) { - reverse_map = scheme_make_hash_table_equal(); - scheme_hash_set(rns, scheme_undefined, (Scheme_Object *)reverse_map); - } - old_key = scheme_hash_get(reverse_map, stack); - if (old_key) { - a = scheme_hash_get(rns, old_key); - if (just_simplify) - return SCHEME_CDR(a); - else - return SCHEME_CAR(a); + /* Double-check for equivalent list in table (after simplification): */ + if (mt && mt->pass) { + /* No need to check for later passed, since mt->same_map + covers the equivalence. */ + } else { + if (mt) { + reverse_map = mt->reverse_map; + } else { + reverse_map = (Scheme_Hash_Table *)scheme_hash_get(rns, scheme_undefined); + } + if (!reverse_map) { + reverse_map = scheme_make_hash_table_equal(); + if (mt) + mt->reverse_map = reverse_map; + else + scheme_hash_set(rns, scheme_undefined, (Scheme_Object *)reverse_map); + } + old_key = scheme_hash_get(reverse_map, stack); + if (old_key) { + if (just_simplify) { + return scheme_hash_get(rns, old_key); + } else { + a = scheme_marshal_lookup(mt, old_key); + scheme_marshal_using_key(mt, old_key); + if (!mt->same_map) { + Scheme_Hash_Table *same_map; + same_map = scheme_make_hash_table(SCHEME_hash_ptr); + mt->same_map = same_map; + } + scheme_hash_set(mt->same_map, w_in, old_key); + /* nevermind references that we saw when creating `stack': */ + scheme_marshal_pop_refs(mt, 0); + return a; + } + } + + scheme_hash_set(reverse_map, stack, w_in); } - /* Create a key for this wrap set: */ - a = scheme_make_integer(rns->count); - scheme_hash_set(rns, w_in, CONS(a, stack)); - scheme_hash_set(reverse_map, stack, w_in); + if (mt) { + /* preserve references that we saw when creating `stack': */ + scheme_marshal_pop_refs(mt, 1); + } - if (just_simplify) + /* Remember this wrap set: */ + if (just_simplify) { + scheme_hash_set(rns, w_in, stack); return stack; - else - return CONS(a, stack); + } else { + return scheme_marshal_wrap_set(mt, w_in, stack); + } } /*========================================================================*/ @@ -4206,27 +4267,27 @@ static void lift_common_wraps(Scheme_Object *l, Scheme_Object *common_wraps, int static Scheme_Object *syntax_to_datum_inner(Scheme_Object *o, Scheme_Hash_Table **ht, int with_marks, - Scheme_Hash_Table *rns); + Scheme_Marshal_Tables *mt); static Scheme_Object *syntax_to_datum_k(void) { Scheme_Thread *p = scheme_current_thread; Scheme_Object *o = (Scheme_Object *)p->ku.k.p1; Scheme_Hash_Table **ht = (Scheme_Hash_Table **)p->ku.k.p2; - Scheme_Hash_Table *rns = (Scheme_Hash_Table *)p->ku.k.p3; + Scheme_Marshal_Tables *mt = (Scheme_Marshal_Tables *)p->ku.k.p3; p->ku.k.p1 = NULL; p->ku.k.p2 = NULL; p->ku.k.p3 = NULL; - return syntax_to_datum_inner(o, ht, p->ku.k.i1, rns); + return syntax_to_datum_inner(o, ht, p->ku.k.i1, mt); } #endif static Scheme_Object *syntax_to_datum_inner(Scheme_Object *o, Scheme_Hash_Table **ht, int with_marks, - Scheme_Hash_Table *rns) + Scheme_Marshal_Tables *mt) { Scheme_Stx *stx = (Scheme_Stx *)o; Scheme_Object *ph, *v, *result, *converted_wraps = NULL; @@ -4239,7 +4300,7 @@ static Scheme_Object *syntax_to_datum_inner(Scheme_Object *o, p->ku.k.p1 = (void *)o; p->ku.k.p2 = (void *)ht; p->ku.k.i1 = with_marks; - p->ku.k.p3 = (void *)rns; + p->ku.k.p3 = (void *)mt; return scheme_handle_stack_overflow(syntax_to_datum_k); } } @@ -4289,7 +4350,7 @@ static Scheme_Object *syntax_to_datum_inner(Scheme_Object *o, cnt++; - a = syntax_to_datum_inner(SCHEME_CAR(v), ht, with_marks, rns); + a = syntax_to_datum_inner(SCHEME_CAR(v), ht, with_marks, mt); p = CONS(a, scheme_null); @@ -4312,13 +4373,13 @@ static Scheme_Object *syntax_to_datum_inner(Scheme_Object *o, } } if (!SCHEME_NULLP(v)) { - v = syntax_to_datum_inner(v, ht, with_marks, rns); + v = syntax_to_datum_inner(v, ht, with_marks, mt); SCHEME_CDR(last) = v; if (with_marks) { v = extract_for_common_wrap(v, 1, 0); if (v && SAME_OBJ(common_wraps, v)) { - converted_wraps = wraps_to_datum(stx->wraps, rns, 0); + converted_wraps = wraps_to_datum(stx->wraps, mt, NULL, 0); if (SAME_OBJ(common_wraps, converted_wraps)) lift_common_wraps(first, common_wraps, cnt, 1); else @@ -4336,7 +4397,7 @@ static Scheme_Object *syntax_to_datum_inner(Scheme_Object *o, first = scheme_make_pair(scheme_make_integer(cnt), first); } } else if (with_marks && SCHEME_TRUEP(common_wraps)) { - converted_wraps = wraps_to_datum(stx->wraps, rns, 0); + converted_wraps = wraps_to_datum(stx->wraps, mt, NULL, 0); if (SAME_OBJ(common_wraps, converted_wraps)) lift_common_wraps(first, common_wraps, cnt, 0); else @@ -4349,7 +4410,7 @@ static Scheme_Object *syntax_to_datum_inner(Scheme_Object *o, result = first; } else if (SCHEME_BOXP(v)) { - v = syntax_to_datum_inner(SCHEME_BOX_VAL(v), ht, with_marks, rns); + v = syntax_to_datum_inner(SCHEME_BOX_VAL(v), ht, with_marks, mt); result = scheme_box(v); } else if (SCHEME_VECTORP(v)) { int size = SCHEME_VEC_SIZE(v), i; @@ -4358,21 +4419,21 @@ static Scheme_Object *syntax_to_datum_inner(Scheme_Object *o, r = scheme_make_vector(size, NULL); for (i = 0; i < size; i++) { - a = syntax_to_datum_inner(SCHEME_VEC_ELS(v)[i], ht, with_marks, rns); + a = syntax_to_datum_inner(SCHEME_VEC_ELS(v)[i], ht, with_marks, mt); SCHEME_VEC_ELS(r)[i] = a; } result = r; #ifdef STX_DEBUG } else if ((with_marks == 1) && SCHEME_SYMBOLP(v)) { - result = CONS(v, stx->wraps); /* wraps_to_datum(stx->wraps, rns, 0)); */ + result = CONS(v, stx->wraps); /* wraps_to_datum(stx->wraps, mt, 0)); */ #endif } else result = v; if (with_marks > 1) { if (!converted_wraps) - converted_wraps = wraps_to_datum(stx->wraps, rns, 0); + converted_wraps = wraps_to_datum(stx->wraps, mt, NULL, 0); result = CONS(result, converted_wraps); if (stx->certs) { Scheme_Object *cert_marks = scheme_null, *icert_marks = scheme_null; @@ -4410,37 +4471,40 @@ static Scheme_Object *syntax_to_datum_inner(Scheme_Object *o, } Scheme_Object *scheme_syntax_to_datum(Scheme_Object *stx, int with_marks, - Scheme_Hash_Table *rns) + Scheme_Marshal_Tables *mt) { Scheme_Hash_Table *ht = NULL; Scheme_Object *v; - v = syntax_to_datum_inner(stx, &ht, with_marks, rns); + if (mt) + scheme_marshal_push_refs(mt); - if (with_marks > 1) { - if (SCHEME_PAIRP(v) - && SCHEME_SYMBOLP(SCHEME_CAR(v)) - && SCHEME_INTP(SCHEME_CDR(v))) { - /* A symbol+wrap combination is likely to be used multiple - times. This is a relatively minor optimization in .zo size, - since v is already fairly compact, but it also avoids - allocating extra syntax objects at load time. */ - Scheme_Hash_Table *reverse_map; - Scheme_Object *code; - - reverse_map = (Scheme_Hash_Table *)scheme_hash_get(rns, scheme_undefined); - if (reverse_map) { - code = scheme_hash_get(reverse_map, v); - if (code) { - return code; - } else { - code = scheme_make_integer(rns->count); - scheme_hash_set(rns, code, v); - scheme_hash_set(reverse_map, v, code); - v = scheme_make_vector(2, v); - SCHEME_VEC_ELS(v)[1] = code; - } - } + v = syntax_to_datum_inner(stx, &ht, with_marks, mt); + + if (mt) { + /* A symbol+wrap combination is likely to be used multiple + times. This is a relatively minor optimization in .zo size, + since v is already fairly compact, but it also avoids + allocating extra syntax objects at load time. For consistency, + we try to reuse all combinations. */ + Scheme_Hash_Table *top_map; + Scheme_Object *key; + + top_map = mt->top_map; + if (!top_map) { + top_map = scheme_make_hash_table_equal(); + mt->top_map = top_map; + } + + key = scheme_hash_get(top_map, v); + if (key) { + scheme_marshal_pop_refs(mt, 0); + v = scheme_marshal_lookup(mt, key); + scheme_marshal_using_key(mt, key); + } else { + scheme_hash_set(top_map, stx, v); + v = scheme_marshal_wrap_set(mt, stx, v); + scheme_marshal_pop_refs(mt, 1); } } @@ -4526,7 +4590,7 @@ int scheme_syntax_is_graph(Scheme_Object *stx) /* datum->wraps */ /*========================================================================*/ -static Scheme_Object *unmarshal_mark(Scheme_Object *_a, Scheme_Hash_Table *rns) +static Scheme_Object *unmarshal_mark(Scheme_Object *_a, Scheme_Unmarshal_Tables *ut) { Scheme_Object *n, *a = _a; @@ -4536,7 +4600,7 @@ static Scheme_Object *unmarshal_mark(Scheme_Object *_a, Scheme_Hash_Table *rns) a = scheme_intern_symbol(scheme_number_to_string(10, a)); /* Picked a mapping yet? */ - n = scheme_hash_get(rns, a); + n = scheme_hash_get(ut->rns, a); if (!n) { /* Map marshaled mark to a new mark. */ n = scheme_new_mark(); @@ -4544,7 +4608,7 @@ static Scheme_Object *unmarshal_mark(Scheme_Object *_a, Scheme_Hash_Table *rns) /* Map negative mark to negative mark: */ n = negate_mark(n); } - scheme_hash_set(rns, a, n); + scheme_hash_set(ut->rns, a, n); } /* Really a mark? */ @@ -4557,33 +4621,33 @@ static Scheme_Object *unmarshal_mark(Scheme_Object *_a, Scheme_Hash_Table *rns) #define return_NULL return NULL static Scheme_Object *datum_to_wraps(Scheme_Object *w, - Scheme_Hash_Table *rns) + Scheme_Unmarshal_Tables *ut) { - Scheme_Object *a, *wraps_key; - int stack_size; + Scheme_Object *a, *wraps_key, *local_key; + int stack_size, decoded; Wrap_Chunk *wc; - /* rns maps numbers (table indices) to renaming tables, and negative + /* ut->rns maps numbers (table indices) to renaming tables, and negative numbers (negated fixnum marks) and symbols (interned marks) to marks.*/ /* This function has to be defensive, since `w' can originate in untrusted .zo bytecodes. Return NULL for bad wraps. */ if (SCHEME_INTP(w)) { - w = scheme_hash_get(rns, w); - if (!w || !SCHEME_LISTP(w)) /* list => a wrap, as opposed to a mark, etc. */ + wraps_key = w; + w = scheme_unmarshal_wrap_get(ut, wraps_key, &decoded); + if (decoded && (!w || !SCHEME_LISTP(w))) /* list => a wrap, as opposed to a mark, etc. */ return_NULL; - return w; + if (decoded) + return w; + } else { + /* not shared */ + wraps_key = NULL; } - if (!SCHEME_PAIRP(w)) return_NULL; - - wraps_key = SCHEME_CAR(w); - w = SCHEME_CDR(w); - stack_size = scheme_proper_list_length(w); if (stack_size < 1) { - scheme_hash_set(rns, wraps_key, scheme_null); + scheme_unmarshal_wrap_set(ut, wraps_key, scheme_null); return scheme_null; } else if (stack_size < 2) { wc = NULL; @@ -4599,18 +4663,26 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, a = SCHEME_CAR(w); if (SCHEME_NUMBERP(a)) { /* Re-use rename table or env rename */ - a = scheme_hash_get(rns, a); - if (!a || SCHEME_LISTP(a)) /* list => a whole wrap, no good as an element */ + local_key = a; + a = scheme_unmarshal_wrap_get(ut, local_key, &decoded); + if (decoded && (!a || SCHEME_LISTP(a))) /* list => a whole wrap, no good as an element */ return_NULL; + } else { + /* Not shared */ + local_key = NULL; + decoded = 0; + } + + if (decoded) { + /* done */ } else if (SCHEME_PAIRP(a) && SCHEME_NULLP(SCHEME_CDR(a)) && SCHEME_NUMBERP(SCHEME_CAR(a))) { /* Mark */ - a = unmarshal_mark(SCHEME_CAR(a), rns); + a = unmarshal_mark(SCHEME_CAR(a), ut); if (!a) return_NULL; } else if (SCHEME_VECTORP(a)) { - /* A (simplified) rename table. First element is the key. */ - Scheme_Object *local_key; + /* A (simplified) rename table. */ int i = SCHEME_VEC_SIZE(a); /* Make sure that it's a well-formed rename table. */ @@ -4623,8 +4695,7 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, } /* It's ok: */ - local_key = SCHEME_VEC_ELS(a)[0]; - scheme_hash_set(rns, local_key, a); + scheme_unmarshal_wrap_set(ut, local_key, a); } else if (SCHEME_PAIRP(a)) { /* A rename table: - ([#t] [unmarshal] #( ...) @@ -4633,15 +4704,12 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, - - ( . ) */ - Scheme_Object *local_key, *mns; + Scheme_Object *mns; Module_Renames *mrn; Scheme_Object *p, *key; int plus_kernel, i, count, kind; long phase; - local_key = SCHEME_CAR(a); - a = SCHEME_CDR(a); - if (!SCHEME_PAIRP(a)) return_NULL; /* Convert list to rename table: */ @@ -4676,37 +4744,37 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, Scheme_Object *ml = a, *mli; while (SCHEME_PAIRP(ml)) { mli = SCHEME_CAR(ml); - if (!SCHEME_PAIRP(mli)) return NULL; + if (!SCHEME_PAIRP(mli)) return_NULL; /* A module path index: */ p = SCHEME_CAR(mli); if (!(SCHEME_SYMBOLP(p) || SAME_TYPE(SCHEME_TYPE(p), scheme_module_index_type))) - return NULL; + return_NULL; mli = SCHEME_CDR(mli); - if (!SCHEME_PAIRP(mli)) return NULL; + if (!SCHEME_PAIRP(mli)) return_NULL; /* A list of symbols: */ p = SCHEME_CAR(mli); while (SCHEME_PAIRP(p)) { - if (!SCHEME_SYMBOLP(SCHEME_CAR(p))) return NULL; + if (!SCHEME_SYMBOLP(SCHEME_CAR(p))) return_NULL; p = SCHEME_CDR(p); } - if (!SCHEME_NULLP(p)) return NULL; + if (!SCHEME_NULLP(p)) return_NULL; /* #f or a symbol: */ p = SCHEME_CDR(mli); - if (!SCHEME_SYMBOLP(p) && !SCHEME_FALSEP(p)) return NULL; + if (!SCHEME_SYMBOLP(p) && !SCHEME_FALSEP(p)) return_NULL; ml = SCHEME_CDR(ml); } - if (!SCHEME_NULLP(ml)) return NULL; + if (!SCHEME_NULLP(ml)) return_NULL; mrn->unmarshal_info = a; if (SCHEME_PAIRP(a)) mrn->needs_unmarshal = 1; - if (!SCHEME_PAIRP(mns)) return NULL; + if (!SCHEME_PAIRP(mns)) return_NULL; a = SCHEME_CAR(mns); mns = SCHEME_CDR(mns); } @@ -4777,7 +4845,7 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, klast = NULL; a = SCHEME_CAR(a); if (SCHEME_MARKP(a)) { - kfirst = unmarshal_mark(a, rns); + kfirst = unmarshal_mark(a, ut); } else { Scheme_Object *bdg = NULL; @@ -4789,7 +4857,7 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, } for (; SCHEME_PAIRP(a); a = SCHEME_CDR(a)) { - kp = CONS(unmarshal_mark(SCHEME_CAR(a), rns), scheme_null); + kp = CONS(unmarshal_mark(SCHEME_CAR(a), ut), scheme_null); if (!klast) kfirst = kp; else @@ -4798,7 +4866,7 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, } if (!SCHEME_NULLP(a)) { if (bdg && SCHEME_MARKP(a) && SCHEME_NULLP(kfirst)) - kfirst = unmarshal_mark(a, rns); + kfirst = unmarshal_mark(a, ut); else return_NULL; } @@ -4823,7 +4891,7 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, mrn->marked_names = ht; } - scheme_hash_set(rns, local_key, (Scheme_Object *)mrn); + scheme_unmarshal_wrap_set(ut, local_key, (Scheme_Object *)mrn); a = (Scheme_Object *)mrn; } else if (SAME_OBJ(a, scheme_true)) { @@ -4865,7 +4933,7 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, a = (Scheme_Object *)wc; a = CONS(a, scheme_null); - scheme_hash_set(rns, wraps_key, a); + scheme_unmarshal_wrap_set(ut, wraps_key, a); return a; } @@ -4877,11 +4945,14 @@ static Scheme_Object *datum_to_wraps(Scheme_Object *w, #ifdef DO_STACK_CHECK static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, + Scheme_Unmarshal_Tables *ut, Scheme_Stx *stx_src, Scheme_Stx *stx_wraps, - Scheme_Hash_Table *ht); + Scheme_Hash_Table *ht); -Scheme_Object *cert_marks_to_certs(Scheme_Object *cert_marks, Scheme_Stx *stx_wraps, int *bad) +Scheme_Object *cert_marks_to_certs(Scheme_Object *cert_marks, + Scheme_Unmarshal_Tables *ut, + Scheme_Stx *stx_wraps, int *bad) { /* Need to convert a list of marks to certs */ Scheme_Cert *certs = NULL; @@ -4895,7 +4966,7 @@ Scheme_Object *cert_marks_to_certs(Scheme_Object *cert_marks, Scheme_Stx *stx_wr *bad = 1; return_NULL; } - a = unmarshal_mark(a, (Scheme_Hash_Table *)stx_wraps); + a = unmarshal_mark(a, ut); if (!a) { *bad = 1; return_NULL; } cert_marks = SCHEME_CDR(cert_marks); @@ -4930,17 +5001,20 @@ static Scheme_Object *datum_to_syntax_k(void) Scheme_Stx *stx_src = (Scheme_Stx *)p->ku.k.p2; Scheme_Stx *stx_wraps = (Scheme_Stx *)p->ku.k.p3; Scheme_Hash_Table *ht = (Scheme_Hash_Table *)p->ku.k.p4; - + Scheme_Unmarshal_Tables *ut = (Scheme_Unmarshal_Tables *)p->ku.k.p5; + p->ku.k.p1 = NULL; p->ku.k.p2 = NULL; p->ku.k.p3 = NULL; p->ku.k.p4 = NULL; + p->ku.k.p5 = NULL; - return datum_to_syntax_inner(o, stx_src, stx_wraps, ht); + return datum_to_syntax_inner(o, ut, stx_src, stx_wraps, ht); } #endif static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, + Scheme_Unmarshal_Tables *ut, Scheme_Stx *stx_src, Scheme_Stx *stx_wraps, /* or rename table, or boxed precomputed wrap */ Scheme_Hash_Table *ht) @@ -4960,6 +5034,7 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, p->ku.k.p2 = (void *)stx_src; p->ku.k.p3 = (void *)stx_wraps; p->ku.k.p4 = (void *)ht; + p->ku.k.p5 = (void *)ut; return scheme_handle_stack_overflow(datum_to_syntax_k); } } @@ -4985,7 +5060,7 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, } } - if (SCHEME_HASHTP(stx_wraps)) { + if (ut && !SCHEME_BOXP(stx_wraps)) { if (SCHEME_VECTORP(o)) { /* This one has certs */ if (SCHEME_VEC_SIZE(o) == 2) { @@ -5026,7 +5101,7 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, /* Resolve wraps now, and then share it with all nested objects (as indicated by a box for stx_wraps). */ - wraps = datum_to_wraps(wraps, (Scheme_Hash_Table *)stx_wraps); + wraps = datum_to_wraps(wraps, ut); do_not_unpack_wraps = 1; sub_stx_wraps = (Scheme_Stx *)scheme_box(wraps); o = SCHEME_CDR(o); @@ -5048,7 +5123,7 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, } } - a = datum_to_syntax_inner(SCHEME_CAR(o), stx_src, sub_stx_wraps, ht); + a = datum_to_syntax_inner(SCHEME_CAR(o), ut, stx_src, sub_stx_wraps, ht); if (!a) return_NULL; p = scheme_make_immutable_pair(a, scheme_null); @@ -5063,7 +5138,7 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, --cnt; } if (!SCHEME_NULLP(o)) { - o = datum_to_syntax_inner(o, stx_src, sub_stx_wraps, ht); + o = datum_to_syntax_inner(o, ut, stx_src, sub_stx_wraps, ht); if (!o) return_NULL; SCHEME_CDR(last) = o; } @@ -5071,7 +5146,7 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, result = first; } } else if (SCHEME_BOXP(o)) { - o = datum_to_syntax_inner(SCHEME_PTR_VAL(o), stx_src, stx_wraps, ht); + o = datum_to_syntax_inner(SCHEME_PTR_VAL(o), ut, stx_src, stx_wraps, ht); if (!o) return_NULL; result = scheme_box(o); SCHEME_SET_BOX_IMMUTABLE(result); @@ -5082,7 +5157,7 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, result = scheme_make_vector(size, NULL); for (i = 0; i < size; i++) { - a = datum_to_syntax_inner(SCHEME_VEC_ELS(o)[i], stx_src, stx_wraps, ht); + a = datum_to_syntax_inner(SCHEME_VEC_ELS(o)[i], ut, stx_src, stx_wraps, ht); if (!a) return_NULL; SCHEME_VEC_ELS(result)[i] = a; } @@ -5100,7 +5175,7 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, if (wraps) { if (!do_not_unpack_wraps) { - wraps = datum_to_wraps(wraps, (Scheme_Hash_Table *)stx_wraps); + wraps = datum_to_wraps(wraps, ut); if (!wraps) return_NULL; } @@ -5121,12 +5196,12 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, || SCHEME_NULLP(SCHEME_CAR(cert_marks)))) { /* Have both active and inactive certs */ Scheme_Object *icerts; - certs = cert_marks_to_certs(SCHEME_CAR(cert_marks), stx_wraps, &bad); - icerts = cert_marks_to_certs(SCHEME_CDR(cert_marks), stx_wraps, &bad); + certs = cert_marks_to_certs(SCHEME_CAR(cert_marks), ut, stx_wraps, &bad); + icerts = cert_marks_to_certs(SCHEME_CDR(cert_marks), ut, stx_wraps, &bad); certs = scheme_make_raw_pair(certs, icerts); } else { /* Just active certs */ - certs = cert_marks_to_certs(cert_marks, stx_wraps, &bad); + certs = cert_marks_to_certs(cert_marks, ut, stx_wraps, &bad); } if (bad) return_NULL; @@ -5141,15 +5216,15 @@ static Scheme_Object *datum_to_syntax_inner(Scheme_Object *o, return result; } -Scheme_Object *scheme_datum_to_syntax(Scheme_Object *o, - Scheme_Object *stx_src, - Scheme_Object *stx_wraps, - int can_graph, int copy_props) +static Scheme_Object *general_datum_to_syntax(Scheme_Object *o, + Scheme_Unmarshal_Tables *ut, + Scheme_Object *stx_src, + Scheme_Object *stx_wraps, + int can_graph, int copy_props) /* If stx_wraps is a hash table, then `o' includes marks and certs. If copy_props > 0, properties are copied from src. If copy_props != 1 or 0, then certs are copied from src, too. */ { - Scheme_Hash_Table *ht; Scheme_Object *v, *code = NULL; @@ -5164,28 +5239,29 @@ Scheme_Object *scheme_datum_to_syntax(Scheme_Object *o, else ht = NULL; - if (SCHEME_HASHTP(stx_wraps)) { + if (ut) { /* If o is just a number, look it up in the table. */ - if (SCHEME_INTP(o)) - return scheme_hash_get((Scheme_Hash_Table *)stx_wraps, o); - /* If it's a vector where the second element is a number, we'll need to hash. */ - if (SCHEME_VECTORP(o) - && (SCHEME_VEC_SIZE(o) == 2) - && SCHEME_INTP(SCHEME_VEC_ELS(o)[1])) { - code = SCHEME_VEC_ELS(o)[1]; - o = SCHEME_VEC_ELS(o)[0]; + if (SCHEME_INTP(o)) { + int decoded; + v = scheme_unmarshal_wrap_get(ut, o, &decoded); + if (!decoded) { + code = o; + o = v; + } else + return v; } } v = datum_to_syntax_inner(o, - (Scheme_Stx *)stx_src, + ut, + (Scheme_Stx *)stx_src, (Scheme_Stx *)stx_wraps, ht); if (!v) return_NULL; /* only happens with bad wraps from a bad .zo */ if (code) { - scheme_hash_set((Scheme_Hash_Table *)stx_wraps, code, v); + scheme_unmarshal_wrap_set(ut, code, v); } if (ht) @@ -5206,6 +5282,21 @@ Scheme_Object *scheme_datum_to_syntax(Scheme_Object *o, return v; } +Scheme_Object *scheme_datum_to_syntax(Scheme_Object *o, + Scheme_Object *stx_src, + Scheme_Object *stx_wraps, + int can_graph, int copy_props) +{ + return general_datum_to_syntax(o, NULL, stx_src, stx_wraps, can_graph, copy_props); +} + +Scheme_Object *scheme_unmarshal_datum_to_syntax(Scheme_Object *o, + struct Scheme_Unmarshal_Tables *ut, + int can_graph) +{ + return general_datum_to_syntax(o, ut, scheme_false, scheme_false, can_graph, 0); +} + /*========================================================================*/ /* simplify */ /*========================================================================*/ @@ -5264,7 +5355,7 @@ static void simplify_syntax_inner(Scheme_Object *o, scheme_stx_content((Scheme_Object *)stx); if (rns) { - v = wraps_to_datum(stx->wraps, rns, 1); + v = wraps_to_datum(stx->wraps, NULL, rns, 1); stx->wraps = v; } diff --git a/src/mzscheme/src/stypes.h b/src/mzscheme/src/stypes.h index 74ebaf4608..aa2f3db7f9 100644 --- a/src/mzscheme/src/stypes.h +++ b/src/mzscheme/src/stypes.h @@ -155,74 +155,78 @@ enum { scheme_raw_pair_type, /* 137 */ scheme_prompt_type, /* 138 */ scheme_prompt_tag_type, /* 139 */ + scheme_delay_syntax_type, /* 140 */ #ifdef MZTAG_REQUIRED - _scheme_last_normal_type_, /* 140 */ + _scheme_last_normal_type_, /* 141 */ - scheme_rt_weak_array, /* 141 */ + scheme_rt_weak_array, /* 142 */ - scheme_rt_comp_env, /* 142 */ - scheme_rt_constant_binding, /* 143 */ - scheme_rt_resolve_info, /* 144 */ - scheme_rt_optimize_info, /* 145 */ - scheme_rt_compile_info, /* 146 */ - scheme_rt_cont_mark, /* 147 */ - scheme_rt_saved_stack, /* 148 */ - scheme_rt_reply_item, /* 149 */ - scheme_rt_closure_info, /* 150 */ - scheme_rt_overflow, /* 151 */ - scheme_rt_overflow_jmp, /* 152 */ - scheme_rt_meta_cont, /* 153 */ - scheme_rt_dyn_wind_cell, /* 154 */ - scheme_rt_dyn_wind_info, /* 155 */ - scheme_rt_dyn_wind, /* 156 */ - scheme_rt_dup_check, /* 157 */ - scheme_rt_thread_memory, /* 158 */ - scheme_rt_input_file, /* 159 */ - scheme_rt_input_fd, /* 160 */ - scheme_rt_oskit_console_input, /* 161 */ - scheme_rt_tested_input_file, /* 162 */ - scheme_rt_tested_output_file, /* 163 */ - scheme_rt_indexed_string, /* 164 */ - scheme_rt_output_file, /* 165 */ - scheme_rt_load_handler_data, /* 166 */ - scheme_rt_pipe, /* 167 */ - scheme_rt_beos_process, /* 168 */ - scheme_rt_system_child, /* 169 */ - scheme_rt_tcp, /* 170 */ - scheme_rt_write_data, /* 171 */ - scheme_rt_tcp_select_info, /* 172 */ - scheme_rt_namespace_option, /* 173 */ - scheme_rt_param_data, /* 174 */ - scheme_rt_will, /* 175 */ - scheme_rt_will_registration, /* 176 */ - scheme_rt_struct_proc_info, /* 177 */ - scheme_rt_linker_name, /* 178 */ - scheme_rt_param_map, /* 179 */ - scheme_rt_finalization, /* 180 */ - scheme_rt_finalizations, /* 181 */ - scheme_rt_cpp_object, /* 182 */ - scheme_rt_cpp_array_object, /* 183 */ - scheme_rt_stack_object, /* 184 */ - scheme_rt_preallocated_object, /* 185 */ - scheme_thread_hop_type, /* 186 */ - scheme_rt_srcloc, /* 187 */ - scheme_rt_evt, /* 188 */ - scheme_rt_syncing, /* 189 */ - scheme_rt_comp_prefix, /* 190 */ - scheme_rt_user_input, /* 191 */ - scheme_rt_user_output, /* 192 */ - scheme_rt_compact_port, /* 193 */ - scheme_rt_read_special_dw, /* 194 */ - scheme_rt_regwork, /* 195 */ - scheme_rt_buf_holder, /* 196 */ - scheme_rt_parameterization, /* 197 */ - scheme_rt_print_params, /* 198 */ - scheme_rt_read_params, /* 199 */ - scheme_rt_native_code, /* 200 */ - scheme_rt_native_code_plus_case, /* 201 */ - scheme_rt_jitter_data, /* 202 */ - scheme_rt_module_exports, /* 203 */ + scheme_rt_comp_env, /* 143 */ + scheme_rt_constant_binding, /* 144 */ + scheme_rt_resolve_info, /* 145 */ + scheme_rt_optimize_info, /* 146 */ + scheme_rt_compile_info, /* 147 */ + scheme_rt_cont_mark, /* 148 */ + scheme_rt_saved_stack, /* 149 */ + scheme_rt_reply_item, /* 150 */ + scheme_rt_closure_info, /* 151 */ + scheme_rt_overflow, /* 152 */ + scheme_rt_overflow_jmp, /* 153 */ + scheme_rt_meta_cont, /* 154 */ + scheme_rt_dyn_wind_cell, /* 155 */ + scheme_rt_dyn_wind_info, /* 156 */ + scheme_rt_dyn_wind, /* 157 */ + scheme_rt_dup_check, /* 158 */ + scheme_rt_thread_memory, /* 159 */ + scheme_rt_input_file, /* 160 */ + scheme_rt_input_fd, /* 161 */ + scheme_rt_oskit_console_input, /* 162 */ + scheme_rt_tested_input_file, /* 163 */ + scheme_rt_tested_output_file, /* 164 */ + scheme_rt_indexed_string, /* 165 */ + scheme_rt_output_file, /* 166 */ + scheme_rt_load_handler_data, /* 167 */ + scheme_rt_pipe, /* 168 */ + scheme_rt_beos_process, /* 169 */ + scheme_rt_system_child, /* 170 */ + scheme_rt_tcp, /* 171 */ + scheme_rt_write_data, /* 172 */ + scheme_rt_tcp_select_info, /* 173 */ + scheme_rt_namespace_option, /* 174 */ + scheme_rt_param_data, /* 175 */ + scheme_rt_will, /* 176 */ + scheme_rt_will_registration, /* 177 */ + scheme_rt_struct_proc_info, /* 178 */ + scheme_rt_linker_name, /* 179 */ + scheme_rt_param_map, /* 180 */ + scheme_rt_finalization, /* 181 */ + scheme_rt_finalizations, /* 182 */ + scheme_rt_cpp_object, /* 183 */ + scheme_rt_cpp_array_object, /* 184 */ + scheme_rt_stack_object, /* 185 */ + scheme_rt_preallocated_object, /* 186 */ + scheme_thread_hop_type, /* 187 */ + scheme_rt_srcloc, /* 188 */ + scheme_rt_evt, /* 189 */ + scheme_rt_syncing, /* 190 */ + scheme_rt_comp_prefix, /* 191 */ + scheme_rt_user_input, /* 192 */ + scheme_rt_user_output, /* 193 */ + scheme_rt_compact_port, /* 194 */ + scheme_rt_read_special_dw, /* 195 */ + scheme_rt_regwork, /* 196 */ + scheme_rt_buf_holder, /* 197 */ + scheme_rt_parameterization, /* 198 */ + scheme_rt_print_params, /* 199 */ + scheme_rt_read_params, /* 200 */ + scheme_rt_native_code, /* 201 */ + scheme_rt_native_code_plus_case, /* 202 */ + scheme_rt_jitter_data, /* 203 */ + scheme_rt_module_exports, /* 204 */ + scheme_rt_delay_load_info, /* 205 */ + scheme_rt_marshal_info, /* 206 */ + scheme_rt_unmarshal_info, /* 207 */ #endif _scheme_last_type_ diff --git a/src/mzscheme/src/syntax.c b/src/mzscheme/src/syntax.c index 18b85cf528..af249fea08 100644 --- a/src/mzscheme/src/syntax.c +++ b/src/mzscheme/src/syntax.c @@ -103,7 +103,6 @@ static Scheme_Object *apply_values_execute(Scheme_Object *data); static Scheme_Object *splice_execute(Scheme_Object *data); static Scheme_Object *bangboxenv_execute(Scheme_Object *data); -static Scheme_Object *bangboxvalue_execute(Scheme_Object *data); static Scheme_Object *define_values_optimize(Scheme_Object *data, Optimize_Info *info); static Scheme_Object *ref_optimize(Scheme_Object *data, Optimize_Info *info); @@ -177,10 +176,6 @@ static void bangboxenv_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, int depth, int letlimit, int delta, int num_toplevels, int num_stxes, int num_lifts); -static void bangboxvalue_validate(Scheme_Object *data, Mz_CPort *port, - char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, - int depth, int letlimit, int delta, - int num_toplevels, int num_stxes, int num_lifts); static Scheme_Object *define_values_jit(Scheme_Object *data); static Scheme_Object *ref_jit(Scheme_Object *data); @@ -191,7 +186,7 @@ static Scheme_Object *case_lambda_jit(Scheme_Object *expr); static Scheme_Object *begin0_jit(Scheme_Object *data); static Scheme_Object *apply_values_jit(Scheme_Object *data); static Scheme_Object *splice_jit(Scheme_Object *data); -static Scheme_Object *bangboxvalue_jit(Scheme_Object *data); +static Scheme_Object *bangboxenv_jit(Scheme_Object *data); static Scheme_Object *expand_lam(int argc, Scheme_Object **argv); @@ -313,12 +308,8 @@ scheme_init_syntax (Scheme_Env *env) scheme_register_syntax(BOXENV_EXPD, NULL, NULL, bangboxenv_validate, - bangboxenv_execute, NULL, + bangboxenv_execute, bangboxenv_jit, NULL, NULL, 1); - scheme_register_syntax(BOXVAL_EXPD, - NULL, NULL, bangboxvalue_validate, - bangboxvalue_execute, bangboxvalue_jit, - NULL, NULL, 2); scheme_install_type_writer(scheme_let_value_type, write_let_value); scheme_install_type_reader(scheme_let_value_type, read_let_value); @@ -662,14 +653,16 @@ void scheme_install_macro(Scheme_Bucket *b, Scheme_Object *v) } static Scheme_Object * -define_execute(Scheme_Object *vars, Scheme_Object *vals, int defmacro, +define_execute(Scheme_Object *vec, int delta, int defmacro, Resolve_Prefix *rp, Scheme_Env *dm_env) { - Scheme_Object *l, *name, *macro; + Scheme_Object *name, *macro, *vals, *var; int i, g, show_any; Scheme_Bucket *b; Scheme_Object **save_runstack = NULL; + vals = SCHEME_VEC_ELS(vec)[0]; + if (dm_env) { scheme_prepare_exp_env(dm_env); @@ -685,9 +678,9 @@ define_execute(Scheme_Object *vars, Scheme_Object *vals, int defmacro, } if (SAME_OBJ(vals, SCHEME_MULTIPLE_VALUES)) { - Scheme_Object *v, **values; + Scheme_Object **values; - for (v = vars, i = 0; SCHEME_PAIRP(v); i++, v = SCHEME_CDR(v)) {} + i = SCHEME_VEC_SIZE(vec) - delta; g = scheme_current_thread->ku.multiple.count; if (i == g) { @@ -695,9 +688,10 @@ define_execute(Scheme_Object *vars, Scheme_Object *vals, int defmacro, scheme_current_thread->ku.multiple.array = NULL; if (SAME_OBJ(values, scheme_current_thread->values_buffer)) scheme_current_thread->values_buffer = NULL; - for (i = 0; i < g; i++, vars = SCHEME_CDR(vars)) { + for (i = 0; i < g; i++) { + var = SCHEME_VEC_ELS(vec)[i+delta]; if (dm_env) { - b = scheme_global_keyword_bucket(SCHEME_CAR(vars), dm_env); + b = scheme_global_keyword_bucket(var, dm_env); macro = scheme_alloc_small_object(); macro->type = scheme_macro_type; @@ -707,13 +701,13 @@ define_execute(Scheme_Object *vars, Scheme_Object *vals, int defmacro, scheme_shadow(dm_env, (Scheme_Object *)b->key, 0); } else { Scheme_Object **toplevels; - toplevels = (Scheme_Object **)MZ_RUNSTACK[SCHEME_TOPLEVEL_DEPTH(SCHEME_CAR(vars))]; - b = (Scheme_Bucket *)toplevels[SCHEME_TOPLEVEL_POS(SCHEME_CAR(vars))]; + toplevels = (Scheme_Object **)MZ_RUNSTACK[SCHEME_TOPLEVEL_DEPTH(var)]; + b = (Scheme_Bucket *)toplevels[SCHEME_TOPLEVEL_POS(var)]; scheme_set_global_bucket("define-values", b, values[i], 1); scheme_shadow(((Scheme_Bucket_With_Home *)b)->home, (Scheme_Object *)b->key, 1); - if (SCHEME_TOPLEVEL_FLAGS(SCHEME_CAR(vars)) & SCHEME_TOPLEVEL_CONST) { + if (SCHEME_TOPLEVEL_FLAGS(var) & SCHEME_TOPLEVEL_CONST) { ((Scheme_Bucket_With_Flags *)b)->flags |= GLOB_IS_IMMUTATED; } } @@ -726,9 +720,10 @@ define_execute(Scheme_Object *vars, Scheme_Object *vals, int defmacro, if (SAME_OBJ(scheme_current_thread->ku.multiple.array, scheme_current_thread->values_buffer)) scheme_current_thread->values_buffer = NULL; - } else if (SCHEME_PAIRP(vars) && SCHEME_NULLP(SCHEME_CDR(vars))) { + } else if (SCHEME_VEC_SIZE(vec) == delta + 1) { /* => single var */ + var = SCHEME_VEC_ELS(vec)[delta]; if (dm_env) { - b = scheme_global_keyword_bucket(SCHEME_CAR(vars), dm_env); + b = scheme_global_keyword_bucket(var, dm_env); macro = scheme_alloc_small_object(); macro->type = scheme_macro_type; @@ -738,13 +733,13 @@ define_execute(Scheme_Object *vars, Scheme_Object *vals, int defmacro, scheme_shadow(dm_env, (Scheme_Object *)b->key, 0); } else { Scheme_Object **toplevels; - toplevels = (Scheme_Object **)MZ_RUNSTACK[SCHEME_TOPLEVEL_DEPTH(SCHEME_CAR(vars))]; - b = (Scheme_Bucket *)toplevels[SCHEME_TOPLEVEL_POS(SCHEME_CAR(vars))]; + toplevels = (Scheme_Object **)MZ_RUNSTACK[SCHEME_TOPLEVEL_DEPTH(var)]; + b = (Scheme_Bucket *)toplevels[SCHEME_TOPLEVEL_POS(var)]; scheme_set_global_bucket("define-values", b, vals, 1); scheme_shadow(((Scheme_Bucket_With_Home *)b)->home, (Scheme_Object *)b->key, 1); - if (SCHEME_TOPLEVEL_FLAGS(SCHEME_CAR(vars)) & SCHEME_TOPLEVEL_CONST) { + if (SCHEME_TOPLEVEL_FLAGS(var) & SCHEME_TOPLEVEL_CONST) { ((Scheme_Bucket_With_Flags *)b)->flags |= GLOB_IS_IMMUTATED; } @@ -763,19 +758,19 @@ define_execute(Scheme_Object *vars, Scheme_Object *vals, int defmacro, if (dm_env && !g) return scheme_void; - l = vars; - for (i = 0; SCHEME_PAIRP(l); i++, l = SCHEME_CDR(l)) {} + i = SCHEME_VEC_SIZE(vec) - delta; show_any = i; if (show_any) { + var = SCHEME_VEC_ELS(vec)[delta]; if (dm_env) { - b = scheme_global_keyword_bucket(SCHEME_CAR(vars), dm_env); + b = scheme_global_keyword_bucket(var, dm_env); name = (Scheme_Object *)b->key; } else { Scheme_Object **toplevels; - toplevels = (Scheme_Object **)MZ_RUNSTACK[SCHEME_TOPLEVEL_DEPTH(SCHEME_CAR(vars))]; - b = (Scheme_Bucket *)toplevels[SCHEME_TOPLEVEL_POS(SCHEME_CAR(vars))]; + toplevels = (Scheme_Object **)MZ_RUNSTACK[SCHEME_TOPLEVEL_DEPTH(var)]; + b = (Scheme_Bucket *)toplevels[SCHEME_TOPLEVEL_POS(var)]; name = (Scheme_Object *)b->key; } } else @@ -806,26 +801,41 @@ define_execute(Scheme_Object *vars, Scheme_Object *vals, int defmacro, static Scheme_Object * define_values_execute(Scheme_Object *data) { - return define_execute(SCHEME_CAR(data), SCHEME_CDR(data), 0, NULL, NULL); + return define_execute(data, 1, 0, NULL, NULL); +} + +static Scheme_Object *clone_vector(Scheme_Object *data, int skip) +{ + Scheme_Object *naya; + int i, size; + + size = SCHEME_VEC_SIZE(data); + naya = scheme_make_vector(size - skip, NULL); + for (i = skip; i < size; i++) { + SCHEME_VEC_ELS(naya)[i - skip] = SCHEME_VEC_ELS(data)[i]; + } + + return naya; } static Scheme_Object *define_values_jit(Scheme_Object *data) { - Scheme_Object *orig = SCHEME_CDR(data), *naya, *vars; - - vars = SCHEME_CAR(data); + Scheme_Object *orig = SCHEME_VEC_ELS(data)[0], *naya; if (SAME_TYPE(SCHEME_TYPE(orig), scheme_unclosed_procedure_type) - && SCHEME_PAIRP(vars) - && SCHEME_NULLP(SCHEME_CDR(vars))) - naya = scheme_jit_closure(orig, SCHEME_CAR(vars)); + && (SCHEME_VEC_SIZE(data) == 2)) + naya = scheme_jit_closure(orig, SCHEME_VEC_ELS(data)[1]); else naya = scheme_jit_expr(orig); if (SAME_OBJ(naya, orig)) return data; - else - return scheme_make_pair(vars, naya); + else { + orig = naya; + naya = clone_vector(data, 0); + SCHEME_VEC_ELS(naya)[0] = orig; + return naya; + } } static void define_values_validate(Scheme_Object *data, Mz_CPort *port, @@ -833,27 +843,25 @@ static void define_values_validate(Scheme_Object *data, Mz_CPort *port, int depth, int letlimit, int delta, int num_toplevels, int num_stxes, int num_lifts) { - Scheme_Object *vars, *val, *only_var; + int i, size; + Scheme_Object *val, *only_var; - if (!SCHEME_PAIRP(data)) + if (!SCHEME_VECTORP(data)) scheme_ill_formed_code(port); - vars = SCHEME_CAR(data); - val = SCHEME_CDR(data); + val = SCHEME_VEC_ELS(data)[0]; + size = SCHEME_VEC_SIZE(data); - if (SCHEME_PAIRP(vars) && SCHEME_NULLP(SCHEME_CDR(vars))) - only_var = SCHEME_CAR(vars); + if (size == 2) + only_var = SCHEME_VEC_ELS(data)[1]; else only_var = NULL; - for (; SCHEME_PAIRP(vars); vars = SCHEME_CDR(vars)) { - scheme_validate_toplevel(SCHEME_CAR(vars), port, stack, ht, tls, depth, delta, + for (i = 1; i < size; i++) { + scheme_validate_toplevel(SCHEME_VEC_ELS(data)[i], port, stack, ht, tls, depth, delta, num_toplevels, num_stxes, num_lifts, 1); } - - if (!SCHEME_NULLP(vars)) - scheme_ill_formed_code(port); if (only_var) { int pos; @@ -908,8 +916,9 @@ define_values_optimize(Scheme_Object *data, Optimize_Info *info) static Scheme_Object * define_values_resolve(Scheme_Object *data, Resolve_Info *rslv) { + long cnt = 0; Scheme_Object *vars = SCHEME_CAR(data), *l, *a; - Scheme_Object *val = SCHEME_CDR(data); + Scheme_Object *val = SCHEME_CDR(data), *vec; /* If this is a module-level definition: for each variable, if the defined variable doesn't have SCHEME_TOPLEVEL_MUTATED, then @@ -924,18 +933,31 @@ define_values_resolve(Scheme_Object *data, Resolve_Info *rslv) } a = scheme_resolve_toplevel(rslv, a); SCHEME_CAR(l) = a; + cnt++; + } + + vec = scheme_make_vector(cnt + 1, NULL); + cnt = 1; + for (l = vars; !SCHEME_NULLP(l); l = SCHEME_CDR(l)) { + SCHEME_VEC_ELS(vec)[cnt++] = SCHEME_CAR(l); } val = scheme_resolve_expr(val, rslv); + SCHEME_VEC_ELS(vec)[0] = val; - return scheme_make_syntax_resolved(DEFINE_VALUES_EXPD, cons(vars, val)); + return scheme_make_syntax_resolved(DEFINE_VALUES_EXPD, vec); } void scheme_resolve_lift_definition(Resolve_Info *info, Scheme_Object *var, Scheme_Object *rhs) { Scheme_Object *decl, *vec, *pr; - decl = scheme_make_syntax_resolved(DEFINE_VALUES_EXPD, cons(cons(var, scheme_null), rhs)); + vec = scheme_make_vector(2, NULL); + SCHEME_VEC_ELS(vec)[0] = rhs; + SCHEME_VEC_ELS(vec)[1] = var; + + decl = scheme_make_syntax_resolved(DEFINE_VALUES_EXPD, vec); + vec = info->lifts; pr = cons(decl, SCHEME_VEC_ELS(vec)[0]); SCHEME_VEC_ELS(vec)[0] = pr; @@ -2411,8 +2433,8 @@ case_lambda_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info /* implicit set!s */ /**********************************************************************/ -/* A bangboxenv step is inserted by the compilation of `lambda' forms - where an argument is set!ed in the function body. */ +/* A bangboxenv step is inserted by the compilation of `lambda' and + `let' forms where an argument or bindings is set!ed in the body. */ Scheme_Object *bangboxenv_execute(Scheme_Object *data) { @@ -2427,6 +2449,18 @@ Scheme_Object *bangboxenv_execute(Scheme_Object *data) return _scheme_tail_eval(data); } +static Scheme_Object *bangboxenv_jit(Scheme_Object *data) +{ + Scheme_Object *orig, *naya; + + orig = SCHEME_CDR(data); + naya = scheme_jit_expr(orig); + if (SAME_OBJ(naya, orig)) + return data; + else + return cons(SCHEME_CAR(data), naya); +} + static void bangboxenv_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, int depth, int letlimit, int delta, @@ -2442,85 +2476,6 @@ static void bangboxenv_validate(Scheme_Object *data, Mz_CPort *port, NULL, 0); } - - -/* A bangboxval step is inserted by the compilation of `let' forms - where the RHS is bound to a variable that will be set!ed. */ - -static Scheme_Object * -bangboxvalue_execute(Scheme_Object *data) -{ - int pos, cnt; - Scheme_Object *val; - - pos = SCHEME_INT_VAL(SCHEME_CAR(data)); - data = SCHEME_CDR(data); - cnt = SCHEME_INT_VAL(SCHEME_CAR(data)); - data = SCHEME_CDR(data); - - val = _scheme_eval_linked_expr_multi(data); - - if (SAME_OBJ(val, SCHEME_MULTIPLE_VALUES)) { - Scheme_Thread *p = scheme_current_thread; - if (cnt == p->ku.multiple.count) { - Scheme_Object **naya, **a; - int i; - - a = p->ku.multiple.array; - - if (SAME_OBJ(a, p->values_buffer)) - p->values_buffer = NULL; - - naya = MALLOC_N(Scheme_Object *, p->ku.multiple.count); - - for (i = p->ku.multiple.count; i--; ) { - naya[i] = a[i]; - } - { - Scheme_Object *eb; - eb = scheme_make_envunbox(naya[pos]); - naya[pos] = eb; - } - - p->ku.multiple.array = naya; - } - } else if (cnt == 1) - val = scheme_make_envunbox(val); - - return val; -} - -static Scheme_Object *bangboxvalue_jit(Scheme_Object *data) -{ - Scheme_Object *orig, *naya; - - orig = SCHEME_CDR(data); - orig = SCHEME_CDR(orig); - naya = scheme_jit_expr(orig); - if (SAME_OBJ(naya, orig)) - return data; - else - return cons(SCHEME_CAR(data), - cons(SCHEME_CADR(data), - naya)); -} - -static void bangboxvalue_validate(Scheme_Object *data, Mz_CPort *port, - char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, - int depth, int letlimit, int delta, - int num_toplevels, int num_stxes, int num_lifts) -{ - if (!SCHEME_PAIRP(data) - || !SCHEME_PAIRP(SCHEME_CDR(data)) - || (SCHEME_INT_VAL(SCHEME_CADR(data)) < 0) - || (SCHEME_INT_VAL(SCHEME_CADR(data)) <= SCHEME_INT_VAL(SCHEME_CAR(data)))) - scheme_ill_formed_code(port); - - scheme_validate_expr(port, SCHEME_CDR(SCHEME_CDR(data)), stack, ht, tls, depth, letlimit, delta, - num_toplevels, num_stxes, num_lifts, - NULL, 0); -} - /**********************************************************************/ /* let, let-values, letrec, etc. */ /**********************************************************************/ @@ -2681,7 +2636,7 @@ scheme_optimize_lets(Scheme_Object *form, Optimize_Info *info, int for_inline) /* Special case: (let ([x E]) x) where E is lambda, case-lambda, or a constant. (If we allowed arbitrary E here, it would affect the tailness of E.) */ - if (!SCHEME_LET_RECURSIVE(head) && (head->count == 1) && (head->num_clauses == 1)) { + if (!(SCHEME_LET_FLAGS(head) & SCHEME_LET_RECURSIVE) && (head->count == 1) && (head->num_clauses == 1)) { clv = (Scheme_Compiled_Let_Value *)head->body; if (SAME_TYPE(SCHEME_TYPE(clv->body), scheme_local_type) && (((Scheme_Local *)clv->body)->position == 0)) { @@ -2714,7 +2669,7 @@ scheme_optimize_lets(Scheme_Object *form, Optimize_Info *info, int for_inline) } else rhs_info = body_info; - is_rec = SCHEME_LET_RECURSIVE(head); + is_rec = (SCHEME_LET_FLAGS(head) & SCHEME_LET_RECURSIVE); if (is_rec) all_simple = 0; @@ -2890,7 +2845,7 @@ scheme_optimize_lets_for_test(Scheme_Object *form, Optimize_Info *info) /* Special case: (let ([x M]) (if x x N)), where x is not in N, to (if M #t #f), since we're in a test position. */ - if (!SCHEME_LET_RECURSIVE(head) && (head->count == 1) && (head->num_clauses == 1)) { + if (!(SCHEME_LET_FLAGS(head) & SCHEME_LET_RECURSIVE) && (head->count == 1) && (head->num_clauses == 1)) { Scheme_Compiled_Let_Value *clv; clv = (Scheme_Compiled_Let_Value *)head->body; if (SAME_TYPE(SCHEME_TYPE(clv->body), scheme_branch_type) @@ -3003,10 +2958,10 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) Scheme_Let_Header *head = (Scheme_Let_Header *)form; Scheme_Compiled_Let_Value *clv, *pre_body; Scheme_Let_Value *lv, *last = NULL; - Scheme_Object *first = NULL, *body; + Scheme_Object *first = NULL, *body, *last_body = NULL; Scheme_Letrec *letrec; mzshort *skips, skips_fast[5]; - Scheme_Object **lifted, *lifted_fast[5]; + Scheme_Object **lifted, *lifted_fast[5], *boxes; int i, pos, opos, rpos, recbox, num_rec_procs = 0, extra_alloc; int rec_proc_nonapply = 0; int max_let_depth = 0; @@ -3022,7 +2977,7 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) } recbox = 0; - if (SCHEME_LET_RECURSIVE(head)) { + if (SCHEME_LET_FLAGS(head) & SCHEME_LET_RECURSIVE) { /* Do we need to box vars in a letrec? */ clv = (Scheme_Compiled_Let_Value *)head->body; for (i = head->num_clauses; i--; clv = (Scheme_Compiled_Let_Value *)clv->body) { @@ -3063,7 +3018,7 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) if (recbox) num_rec_procs = 0; } else { - /* Sequence of single-value lets? */ + /* Sequence of single-value, non-assigned lets? */ clv = (Scheme_Compiled_Let_Value *)head->body; for (i = head->num_clauses; i--; clv = (Scheme_Compiled_Let_Value *)clv->body) { if (clv->count != 1) @@ -3367,6 +3322,7 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) letrec = NULL; /* Resolve values: */ + boxes = scheme_null; clv = (Scheme_Compiled_Let_Value *)head->body; rpos = 0; opos = 0; for (i = head->num_clauses; i--; clv = (Scheme_Compiled_Let_Value *)clv->body) { @@ -3396,9 +3352,12 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) lv = MALLOC_ONE_TAGGED(Scheme_Let_Value); if (last) last->body = (Scheme_Object *)lv; + else if (last_body) + SCHEME_CDR(last_body) = (Scheme_Object *)lv; else first = (Scheme_Object *)lv; last = lv; + last_body = NULL; lv->iso.so.type = scheme_let_value_type; lv->value = expr; @@ -3414,13 +3373,24 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) for (j = lv->count; j--; ) { if (!recbox && (scheme_resolve_info_flags(linfo, opos + j, &one_lifted) & SCHEME_INFO_BOXED)) { - Scheme_Object *sl; - /* See bangboxval... */ - sl = scheme_make_syntax_resolved(BOXVAL_EXPD, - cons(scheme_make_integer(j), - cons(scheme_make_integer(lv->count), - lv->value))); - lv->value = sl; + GC_CAN_IGNORE Scheme_Object *pos; + pos = scheme_make_integer(lv->position + j); + if (SCHEME_LET_FLAGS(head) & (SCHEME_LET_STAR | SCHEME_LET_RECURSIVE)) { + /* For let* or a let*-like letrec, we need to insert the boxes after each evaluation. */ + Scheme_Object *boxenv, *pr; + pr = scheme_make_pair(pos, scheme_false); + boxenv = scheme_make_syntax_resolved(BOXENV_EXPD, pr); + if (last) + last->body = boxenv; + else + SCHEME_CDR(last_body) = boxenv; + last = NULL; + last_body = pr; + } else { + /* For regular let, delay the boxing until all RHSs are + evaluated. */ + boxes = scheme_make_pair(pos, boxes); + } } } } @@ -3430,14 +3400,26 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) /* Resolve body: */ body = scheme_resolve_expr(body, linfo); + while (SCHEME_PAIRP(boxes)) { + /* See bangboxenv... */ + body = scheme_make_syntax_resolved(BOXENV_EXPD, + scheme_make_pair(SCHEME_CAR(boxes), + body)); + boxes = SCHEME_CDR(boxes); + } + if (letrec) { letrec->body = body; if (last) last->body = (Scheme_Object *)letrec; + else if (last_body) + SCHEME_CDR(last_body) = (Scheme_Object *)letrec; else first = (Scheme_Object *)letrec; } else if (last) last->body = body; + else if (last_body) + SCHEME_CDR(last_body) = body; else first = body; @@ -3678,7 +3660,8 @@ gen_let_syntax (Scheme_Object *form, Scheme_Comp_Env *origenv, char *formname, head->body = first; head->count = num_bindings; head->num_clauses = num_clauses; - SCHEME_LET_RECURSIVE(head) = recursive; + SCHEME_LET_FLAGS(head) = ((recursive ? SCHEME_LET_RECURSIVE : 0) + | (star ? SCHEME_LET_STAR : 0)); first = (Scheme_Object *)head; } @@ -4544,8 +4527,8 @@ do_define_syntaxes_execute(Scheme_Object *form, Scheme_Env *dm_env, int for_stx) int depth; Scheme_Comp_Env *rhs_env; - rp = (Resolve_Prefix *)SCHEME_CAR(form); - base_stack_depth = SCHEME_CADR(form); + rp = (Resolve_Prefix *)SCHEME_VEC_ELS(form)[1]; + base_stack_depth = SCHEME_VEC_ELS(form)[2]; depth = SCHEME_INT_VAL(base_stack_depth) + rp->num_stxes + 1; if (!scheme_check_runstack(depth)) { @@ -4553,8 +4536,7 @@ do_define_syntaxes_execute(Scheme_Object *form, Scheme_Env *dm_env, int for_stx) if (!dm_env) { /* Need to get env before we enlarge the runstack: */ - form = SCHEME_CDDR(form); - dummy = SCHEME_CAR(form); + dummy = SCHEME_VEC_ELS(form)[3]; dm_env = scheme_environment_from_dummy(dummy); } p->ku.k.p2 = (Scheme_Object *)dm_env; @@ -4563,9 +4545,7 @@ do_define_syntaxes_execute(Scheme_Object *form, Scheme_Env *dm_env, int for_stx) return (Scheme_Object *)scheme_enlarge_runstack(depth, define_syntaxes_execute_k); } - form = SCHEME_CDDR(form); - dummy = SCHEME_CAR(form); - form = SCHEME_CDR(form); + dummy = SCHEME_VEC_ELS(form)[3]; rhs_env = scheme_new_comp_env(scheme_get_env(NULL), NULL, SCHEME_TOPLEVEL_FRAME); @@ -4573,7 +4553,7 @@ do_define_syntaxes_execute(Scheme_Object *form, Scheme_Env *dm_env, int for_stx) dm_env = scheme_environment_from_dummy(dummy); scheme_on_next_top(rhs_env, NULL, scheme_false, NULL, dm_env, dm_env->link_midx); - return define_execute(SCHEME_CAR(form), SCHEME_CDR(form), for_stx ? 2 : 1, rp, dm_env); + return define_execute(form, 4, for_stx ? 2 : 1, rp, dm_env); } static Scheme_Object * @@ -4590,28 +4570,16 @@ define_for_syntaxes_execute(Scheme_Object *form) static Scheme_Object *do_define_syntaxes_jit(Scheme_Object *expr) { - Scheme_Object *orig, *naya, *data = expr; - Scheme_Object *a, *ad, *add; + Scheme_Object *naya; - a = SCHEME_CAR(data); - data = SCHEME_CDR(data); - ad = SCHEME_CAR(data); - data = SCHEME_CDR(data); - add = SCHEME_CAR(data); - data = SCHEME_CDR(data); - - orig = SCHEME_CDR(data); + naya = scheme_jit_expr(SCHEME_VEC_ELS(expr)[0]); - naya = scheme_jit_expr(orig); - - if (SAME_OBJ(naya, orig)) + if (SAME_OBJ(naya, expr)) return expr; else { - return cons(a, - cons(ad, - cons(add, - cons(SCHEME_CAR(data), - naya)))); + expr = clone_vector(expr, 0); + SCHEME_VEC_ELS(expr)[0] = naya; + return expr; } } @@ -4632,36 +4600,32 @@ static void do_define_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, int for_stx) { Resolve_Prefix *rp; - Scheme_Object *names, *val, *base_stack_depth, *dummy; + Scheme_Object *name, *val, *base_stack_depth, *dummy; int sdepth; - if (!SCHEME_PAIRP(data) - || !SCHEME_PAIRP(SCHEME_CDR(data))) + if (!SCHEME_VECTORP(data) + || (SCHEME_VEC_SIZE(data) < 4)) scheme_ill_formed_code(port); - rp = (Resolve_Prefix *)SCHEME_CAR(data); - base_stack_depth = SCHEME_CADR(data); + rp = (Resolve_Prefix *)SCHEME_VEC_ELS(data)[1]; + base_stack_depth = SCHEME_VEC_ELS(data)[2]; sdepth = SCHEME_INT_VAL(base_stack_depth); data = SCHEME_CDDR(data); - if (!SCHEME_PAIRP(data) - || !SCHEME_PAIRP(SCHEME_CDR(data)) - || !SAME_TYPE(rp->so.type, scheme_resolve_prefix_type) + if (!SAME_TYPE(rp->so.type, scheme_resolve_prefix_type) || (sdepth < 0)) scheme_ill_formed_code(port); - dummy = SCHEME_CAR(data); - data = SCHEME_CDR(data); - names = SCHEME_CAR(data); - val = SCHEME_CDR(data); + dummy = SCHEME_VEC_ELS(data)[3]; if (!for_stx) { - for (; SCHEME_PAIRP(names); names = SCHEME_CDR(names)) { - if (!SCHEME_SYMBOLP(SCHEME_CAR(names))) + int i, size; + size = SCHEME_VEC_SIZE(data); + for (i = 4; i < size; i++) { + name = SCHEME_VEC_ELS(data)[i]; + if (!SCHEME_SYMBOLP(name)) scheme_ill_formed_code(port); } - if (!SCHEME_NULLP(names)) - scheme_ill_formed_code(port); } scheme_validate_toplevel(dummy, port, stack, ht, tls, depth, delta, @@ -4669,10 +4633,12 @@ static void do_define_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, 0); if (!for_stx) { - scheme_validate_code(port, val, ht, sdepth, rp->num_toplevels, rp->num_stxes, rp->num_lifts); + scheme_validate_code(port, SCHEME_VEC_ELS(data)[0], ht, sdepth, rp->num_toplevels, rp->num_stxes, rp->num_lifts); } else { /* Make a fake `define-values' to check with respect to the exp-time stack */ - val = scheme_make_syntax_resolved(DEFINE_VALUES_EXPD, cons(names, val)); + val = clone_vector(data, 3); + SCHEME_VEC_ELS(val)[0] = SCHEME_VEC_ELS(data)[0]; + val = scheme_make_syntax_resolved(DEFINE_VALUES_EXPD, val); scheme_validate_code(port, val, ht, sdepth, rp->num_toplevels, rp->num_stxes, rp->num_lifts); } } @@ -4732,8 +4698,9 @@ static Scheme_Object *do_define_syntaxes_resolve(Scheme_Object *data, Resolve_In { Comp_Prefix *cp; Resolve_Prefix *rp; - Scheme_Object *names, *val, *base_stack_depth, *dummy; + Scheme_Object *names, *val, *base_stack_depth, *dummy, *vec; Resolve_Info *einfo; + int len; cp = (Comp_Prefix *)SCHEME_CAR(data); data = SCHEME_CDR(data); @@ -4755,11 +4722,22 @@ static Scheme_Object *do_define_syntaxes_resolve(Scheme_Object *data, Resolve_In base_stack_depth = scheme_make_integer(einfo->max_let_depth); + len = scheme_list_length(names); + + vec = scheme_make_vector(len + 4, NULL); + SCHEME_VEC_ELS(vec)[0] = val; + SCHEME_VEC_ELS(vec)[1] = (Scheme_Object *)rp; + SCHEME_VEC_ELS(vec)[2] = base_stack_depth; + SCHEME_VEC_ELS(vec)[3] = dummy; + + len = 4; + while (SCHEME_PAIRP(names)) { + SCHEME_VEC_ELS(vec)[len++] = SCHEME_CAR(names); + names = SCHEME_CDR(names); + } + return scheme_make_syntax_resolved((for_stx ? DEFINE_FOR_SYNTAX_EXPD : DEFINE_SYNTAX_EXPD), - cons((Scheme_Object *)rp, - cons(base_stack_depth, - cons(dummy, - cons(names, val))))); + vec); } static Scheme_Object *define_syntaxes_resolve(Scheme_Object *data, Resolve_Info *info) diff --git a/src/mzscheme/src/thread.c b/src/mzscheme/src/thread.c index aa9dfff5b8..86471a0f36 100644 --- a/src/mzscheme/src/thread.c +++ b/src/mzscheme/src/thread.c @@ -5920,6 +5920,8 @@ static void make_initial_config(Scheme_Thread *p) init_param(cells, paramz, MZCONFIG_CAN_READ_QUASI, scheme_true); init_param(cells, paramz, MZCONFIG_READ_DECIMAL_INEXACT, scheme_true); init_param(cells, paramz, MZCONFIG_CAN_READ_READER, scheme_false); + init_param(cells, paramz, MZCONFIG_LOAD_DELAY_ENABLED, scheme_false); + init_param(cells, paramz, MZCONFIG_DELAY_LOAD_INFO, scheme_false); init_param(cells, paramz, MZCONFIG_PRINT_GRAPH, scheme_false); init_param(cells, paramz, MZCONFIG_PRINT_STRUCT, scheme_false); diff --git a/src/mzscheme/src/type.c b/src/mzscheme/src/type.c index 66cfbf834c..7c55bc9ce6 100644 --- a/src/mzscheme/src/type.c +++ b/src/mzscheme/src/type.c @@ -538,6 +538,8 @@ void scheme_register_traversers(void) GC_REG_TRAV(scheme_thread_cell_values_type, small_object); GC_REG_TRAV(scheme_global_ref_type, small_object); + + GC_REG_TRAV(scheme_delay_syntax_type, small_object); } END_XFORM_SKIP;