From 97ce26b1820d3fb114908b054e5de7e563a47245 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 16 Apr 2011 08:02:14 -0600 Subject: [PATCH] cache loaded compiled modules using a SHA1 hash stored in the marshaled bytecode; this cache lowers the cost of sandboxes or other uses of multiple namespaces when the code inspector doesn't change; the caching is almost transparent, but an eval handler might be called with compiled code that cannot be written --- collects/compiler/cm.rkt | 12 +- collects/compiler/zo-marshal.rkt | 2 + collects/compiler/zo-parse.rkt | 3 + src/racket/include/schthread.h | 2 + src/racket/src/Makefile.in | 2 +- src/racket/src/cstartup.inc | 1821 +++++++++++++++--------------- src/racket/src/eval.c | 72 +- src/racket/src/module.c | 72 +- src/racket/src/mzmark.c | 6 + src/racket/src/mzmarksrc.c | 3 + src/racket/src/portfun.c | 56 + src/racket/src/print.c | 3 + src/racket/src/read.c | 34 + src/racket/src/schpriv.h | 12 +- src/racket/src/schvers.h | 4 +- src/racket/src/stxobj.c | 23 +- src/racket/src/syntax.c | 5 + 17 files changed, 1165 insertions(+), 967 deletions(-) diff --git a/collects/compiler/cm.rkt b/collects/compiler/cm.rkt index be1db3c218..d1f6f615a0 100644 --- a/collects/compiler/cm.rkt +++ b/collects/compiler/cm.rkt @@ -360,7 +360,17 @@ (if (eq? base 'relative) (current-directory) (path->complete-path base (current-directory))))]) - (write code out))) + (let ([b (open-output-bytes)]) + ;; Write bytecode into string + (write code b) + ;; Compute SHA1 over bytecode so far + (let* ([s (get-output-bytes b)] + [h (sha1-bytes (open-input-bytes s))] + [delta (+ 3 (bytes-ref s 2))]) + ;; Use sha1 for module hash in string form of bytecode + (bytes-copy! s delta h) + ;; Write out the bytecode with module hash + (write-bytes s out))))) ;; redundant, but close as early as possible: (close-output-port out) ;; Note that we check time and write .deps before returning from diff --git a/collects/compiler/zo-marshal.rkt b/collects/compiler/zo-marshal.rkt index 5629f4a917..659d5da608 100644 --- a/collects/compiler/zo-marshal.rkt +++ b/collects/compiler/zo-marshal.rkt @@ -127,6 +127,8 @@ (write-bytes (bytes (bytes-length version-bs)) outp) (write-bytes version-bs outp) + ; Write empty hash code + (write-bytes (make-bytes 20 0) outp) ; Write the symbol table information (size, offsets) (define symtabsize (add1 (vector-length symbol-table))) diff --git a/collects/compiler/zo-parse.rkt b/collects/compiler/zo-parse.rkt index a4e11f586b..d14a296e28 100644 --- a/collects/compiler/zo-parse.rkt +++ b/collects/compiler/zo-parse.rkt @@ -1011,6 +1011,9 @@ (error 'zo-parse "not a bytecode stream")) (define version (read-bytes (min 63 (read-byte port)) port)) + + ;; Skip module hash code + (read-bytes 20 port) (define symtabsize (read-simple-number port)) diff --git a/src/racket/include/schthread.h b/src/racket/include/schthread.h index c285aeacc5..e9aab7a002 100644 --- a/src/racket/include/schthread.h +++ b/src/racket/include/schthread.h @@ -311,6 +311,7 @@ typedef struct Thread_Local_Variables { struct Evt **place_evts_; void *place_object_; struct Scheme_Object *empty_self_shift_cache_; + struct Scheme_Bucket_Table *scheme_module_code_cache_; } Thread_Local_Variables; #if defined(IMPLEMENT_THREAD_LOCAL_VIA_PTHREADS) @@ -627,6 +628,7 @@ XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL; #define place_evts XOA (scheme_get_thread_local_variables()->place_evts_) #define place_object XOA (scheme_get_thread_local_variables()->place_object_) #define empty_self_shift_cache XOA (scheme_get_thread_local_variables()->empty_self_shift_cache_) +#define scheme_module_code_cache XOA (scheme_get_thread_local_variables()->scheme_module_code_cache_) /* **************************************** */ diff --git a/src/racket/src/Makefile.in b/src/racket/src/Makefile.in index 2618b04804..445d5d5b4a 100644 --- a/src/racket/src/Makefile.in +++ b/src/racket/src/Makefile.in @@ -342,7 +342,7 @@ places.@LTO@: $(COMMON_HEADERS) \ $(srcdir)/../src/stypes.h $(srcdir)/schfd.h $(srcdir)/mzmark.c port.@LTO@: $(COMMON_HEADERS) \ $(srcdir)/../src/stypes.h $(srcdir)/schfd.h $(srcdir)/mzmark.c -portfun.@LTO@: $(COMMON_HEADERS) \ +portfun.@LTO@: $(COMMON_HEADERS) $(srcdir)/schvers.h \ $(srcdir)/../src/stypes.h $(srcdir)/schfd.h $(srcdir)/mzmark.c print.@LTO@: $(COMMON_HEADERS) $(srcdir)/../src/stypes.h $(srcdir)/../src/schcpt.h \ $(srcdir)/schvers.h $(SCONFIG) $(srcdir)/mzmark.c diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index d8f7dcdbd5..22ea5cb8fa 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,675 +1,682 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,54,51,0,0,0,1,0,0,10,0,13,0, -22,0,27,0,31,0,36,0,49,0,54,0,58,0,65,0,68,0,75,0,82, -0,88,0,102,0,116,0,119,0,125,0,129,0,131,0,142,0,144,0,158,0, -165,0,187,0,189,0,203,0,14,1,43,1,54,1,65,1,75,1,111,1,144, -1,177,1,236,1,46,2,124,2,190,2,195,2,215,2,106,3,126,3,177,3, -243,3,128,4,14,5,66,5,89,5,168,5,0,0,109,7,0,0,69,35,37, -109,105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,64,108, -101,116,42,63,108,101,116,64,119,104,101,110,72,112,97,114,97,109,101,116,101, -114,105,122,101,64,99,111,110,100,63,97,110,100,66,108,101,116,114,101,99,62, -111,114,66,100,101,102,105,110,101,66,117,110,108,101,115,115,65,113,117,111,116, -101,29,94,2,14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35, -37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,105,110,63,115,116,120, -61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,73,108,101,116,114,101, -99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,20,112,97,114,97, -109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,61,118,73,100,101, -102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,24,83,0,0,95, -159,2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,11,2,2, -2,4,2,2,2,5,2,2,2,6,2,2,2,8,2,2,2,9,2,2,2, -7,2,2,2,10,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240,24, -83,0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2,2, -2,3,96,38,11,8,240,24,83,0,0,16,0,96,11,11,8,240,24,83,0, -0,16,0,13,16,4,36,29,11,11,2,2,11,18,16,2,99,64,104,101,114, -101,8,32,8,31,8,30,8,29,8,28,93,8,224,31,83,0,0,95,9,8, -224,31,83,0,0,2,2,27,248,22,155,4,195,249,22,148,4,80,158,39,36, -251,22,83,2,17,248,22,98,199,12,249,22,73,2,18,248,22,100,201,27,248, -22,155,4,195,249,22,148,4,80,158,39,36,251,22,83,2,17,248,22,98,199, -249,22,73,2,18,248,22,100,201,12,27,248,22,75,248,22,155,4,196,28,248, -22,81,193,20,15,159,37,36,37,28,248,22,81,248,22,75,194,248,22,74,193, -249,22,148,4,80,158,39,36,251,22,83,2,17,248,22,74,199,249,22,73,2, -9,248,22,75,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8,28, -16,4,11,11,2,19,3,1,8,101,110,118,49,51,54,49,49,16,4,11,11, -2,20,3,1,8,101,110,118,49,51,54,49,50,93,8,224,32,83,0,0,95, -9,8,224,32,83,0,0,2,2,27,248,22,75,248,22,155,4,196,28,248,22, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,55,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,13,0,22, +0,35,0,40,0,44,0,49,0,54,0,58,0,65,0,68,0,75,0,82,0, +88,0,102,0,116,0,119,0,125,0,129,0,131,0,142,0,144,0,158,0,165, +0,187,0,189,0,203,0,14,1,43,1,54,1,65,1,75,1,111,1,144,1, +177,1,236,1,46,2,124,2,190,2,195,2,215,2,106,3,126,3,177,3,243, +3,128,4,14,5,66,5,89,5,168,5,0,0,109,7,0,0,69,35,37,109, +105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,72,112,97, +114,97,109,101,116,101,114,105,122,101,64,108,101,116,42,63,108,101,116,64,119, +104,101,110,64,99,111,110,100,63,97,110,100,66,108,101,116,114,101,99,62,111, +114,66,100,101,102,105,110,101,66,117,110,108,101,115,115,65,113,117,111,116,101, +29,94,2,14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35,37, +112,97,114,97,109,122,11,62,105,102,65,98,101,103,105,110,63,115,116,120,61, +115,70,108,101,116,45,118,97,108,117,101,115,61,120,73,108,101,116,114,101,99, +45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,20,112,97,114,97,109, +101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,61,118,73,100,101,102, +105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,20,83,0,0,95,159, +2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,11,2,2,2, +4,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,2,2,9, +2,2,2,10,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240,20,83, +0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2,2,2, +3,96,38,11,8,240,20,83,0,0,16,0,96,11,11,8,240,20,83,0,0, +16,0,13,16,4,36,29,11,11,2,2,11,18,16,2,99,64,104,101,114,101, +8,32,8,31,8,30,8,29,8,28,93,8,224,27,83,0,0,95,9,8,224, +27,83,0,0,2,2,27,248,22,155,4,195,249,22,148,4,80,158,39,36,251, +22,83,2,17,248,22,98,199,12,249,22,73,2,18,248,22,100,201,27,248,22, +155,4,195,249,22,148,4,80,158,39,36,251,22,83,2,17,248,22,98,199,249, +22,73,2,18,248,22,100,201,12,27,248,22,75,248,22,155,4,196,28,248,22, 81,193,20,15,159,37,36,37,28,248,22,81,248,22,75,194,248,22,74,193,249, -22,148,4,80,158,39,36,250,22,83,2,21,248,22,83,249,22,83,248,22,83, -2,22,248,22,74,201,251,22,83,2,17,2,22,2,22,249,22,73,2,11,248, -22,75,204,18,16,2,101,11,8,32,8,31,8,30,8,29,8,28,16,4,11, -11,2,19,3,1,8,101,110,118,49,51,54,49,52,16,4,11,11,2,20,3, -1,8,101,110,118,49,51,54,49,53,93,8,224,33,83,0,0,95,9,8,224, -33,83,0,0,2,2,248,22,155,4,193,27,248,22,155,4,194,249,22,73,248, -22,83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,155,4,23,197,1, -249,22,148,4,80,158,39,36,28,248,22,58,248,22,149,4,248,22,74,23,198, -2,27,249,22,2,32,0,89,162,8,44,37,43,9,222,33,40,248,22,155,4, -248,22,98,23,200,2,250,22,83,2,23,248,22,83,249,22,83,248,22,83,248, -22,74,23,204,2,250,22,84,2,24,249,22,2,22,74,23,204,2,248,22,100, -23,206,2,249,22,73,248,22,74,23,202,1,249,22,2,22,98,23,200,1,250, -22,84,2,21,249,22,2,32,0,89,162,8,44,37,47,9,222,33,41,248,22, -155,4,248,22,74,201,248,22,75,198,27,248,22,155,4,194,249,22,73,248,22, +22,148,4,80,158,39,36,251,22,83,2,17,248,22,74,199,249,22,73,2,9, +248,22,75,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8,28,16, +4,11,11,2,19,3,1,8,101,110,118,49,51,54,48,56,16,4,11,11,2, +20,3,1,8,101,110,118,49,51,54,48,57,93,8,224,28,83,0,0,95,9, +8,224,28,83,0,0,2,2,27,248,22,75,248,22,155,4,196,28,248,22,81, +193,20,15,159,37,36,37,28,248,22,81,248,22,75,194,248,22,74,193,249,22, +148,4,80,158,39,36,250,22,83,2,21,248,22,83,249,22,83,248,22,83,2, +22,248,22,74,201,251,22,83,2,17,2,22,2,22,249,22,73,2,11,248,22, +75,204,18,16,2,101,11,8,32,8,31,8,30,8,29,8,28,16,4,11,11, +2,19,3,1,8,101,110,118,49,51,54,49,49,16,4,11,11,2,20,3,1, +8,101,110,118,49,51,54,49,50,93,8,224,29,83,0,0,95,9,8,224,29, +83,0,0,2,2,248,22,155,4,193,27,248,22,155,4,194,249,22,73,248,22, 83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,155,4,23,197,1,249, -22,148,4,80,158,39,36,250,22,84,2,23,249,22,2,32,0,89,162,8,44, -37,47,9,222,33,43,248,22,155,4,248,22,74,201,248,22,75,198,27,248,22, -75,248,22,155,4,196,27,248,22,155,4,248,22,74,195,249,22,148,4,80,158, -40,36,28,248,22,81,195,250,22,84,2,21,9,248,22,75,199,250,22,83,2, -5,248,22,83,248,22,74,199,250,22,84,2,4,248,22,75,201,248,22,75,202, -27,248,22,75,248,22,155,4,23,197,1,27,249,22,1,22,87,249,22,2,22, -155,4,248,22,155,4,248,22,74,199,249,22,148,4,80,158,40,36,251,22,83, -1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109, -97,114,107,2,25,250,22,84,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,21,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,11,2,25,201,250,22,84,2,21,9,248,22,75,203,27,248,22,75,248,22, -155,4,196,28,248,22,81,193,20,15,159,37,36,37,249,22,148,4,80,158,39, -36,27,248,22,155,4,248,22,74,197,28,249,22,134,9,62,61,62,248,22,149, -4,248,22,98,196,250,22,83,2,21,248,22,83,249,22,83,21,93,2,26,248, -22,74,199,250,22,84,2,8,249,22,83,2,26,249,22,83,248,22,107,203,2, -26,248,22,75,202,251,22,83,2,17,28,249,22,134,9,248,22,149,4,248,22, -74,200,64,101,108,115,101,10,248,22,74,197,250,22,84,2,21,9,248,22,75, -200,249,22,73,2,8,248,22,75,202,100,8,32,8,31,8,30,8,29,8,28, -16,4,11,11,2,19,3,1,8,101,110,118,49,51,54,51,55,16,4,11,11, -2,20,3,1,8,101,110,118,49,51,54,51,56,93,8,224,34,83,0,0,18, -16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,34,83,0,0,2, -2,27,248,22,75,248,22,155,4,196,249,22,148,4,80,158,39,36,28,248,22, -58,248,22,149,4,248,22,74,197,250,22,83,2,27,248,22,83,248,22,74,199, -248,22,98,198,27,248,22,149,4,248,22,74,197,250,22,83,2,27,248,22,83, -248,22,74,197,250,22,84,2,24,248,22,75,199,248,22,75,202,159,36,20,105, -159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,2,2,11,11, -11,10,36,80,158,36,36,20,105,159,36,16,0,16,0,16,1,2,3,37,16, -0,36,16,0,36,11,11,39,36,11,11,11,16,10,2,4,2,5,2,6,2, -7,2,8,2,9,2,10,2,11,2,12,2,13,16,10,11,11,11,11,11,11, -11,11,11,11,16,10,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2, -11,2,12,2,13,36,46,37,11,11,11,16,0,16,0,16,0,36,36,11,11, -11,11,16,0,16,0,16,0,36,36,16,11,16,5,2,3,20,15,159,36,36, -36,36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,13,89,162,8,44, -37,53,9,223,0,33,34,36,20,105,159,36,16,1,2,3,16,0,11,16,5, -2,6,89,162,8,44,37,53,9,223,0,33,35,36,20,105,159,36,16,1,2, -3,16,0,11,16,5,2,9,89,162,8,44,37,53,9,223,0,33,36,36,20, -105,159,36,16,1,2,3,16,1,33,37,11,16,5,2,11,89,162,8,44,37, -56,9,223,0,33,38,36,20,105,159,36,16,1,2,3,16,1,33,39,11,16, -5,2,5,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16,1, -2,3,16,0,11,16,5,2,10,89,162,8,44,37,53,9,223,0,33,44,36, -20,105,159,36,16,1,2,3,16,0,11,16,5,2,4,89,162,8,44,37,54, -9,223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,7, -89,162,8,44,37,55,9,223,0,33,46,36,20,105,159,36,16,1,2,3,16, -0,11,16,5,2,8,89,162,8,44,37,58,9,223,0,33,47,36,20,105,159, -36,16,1,2,3,16,1,33,49,11,16,5,2,12,89,162,8,44,37,54,9, -223,0,33,50,36,20,105,159,36,16,1,2,3,16,0,11,16,0,94,2,15, -2,16,93,2,15,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2024); +22,148,4,80,158,39,36,28,248,22,58,248,22,149,4,248,22,74,23,198,2, +27,249,22,2,32,0,89,162,8,44,37,43,9,222,33,40,248,22,155,4,248, +22,98,23,200,2,250,22,83,2,23,248,22,83,249,22,83,248,22,83,248,22, +74,23,204,2,250,22,84,2,24,249,22,2,22,74,23,204,2,248,22,100,23, +206,2,249,22,73,248,22,74,23,202,1,249,22,2,22,98,23,200,1,250,22, +84,2,21,249,22,2,32,0,89,162,8,44,37,47,9,222,33,41,248,22,155, +4,248,22,74,201,248,22,75,198,27,248,22,155,4,194,249,22,73,248,22,83, +248,22,74,196,248,22,75,195,27,248,22,75,248,22,155,4,23,197,1,249,22, +148,4,80,158,39,36,250,22,84,2,23,249,22,2,32,0,89,162,8,44,37, +47,9,222,33,43,248,22,155,4,248,22,74,201,248,22,75,198,27,248,22,75, +248,22,155,4,196,27,248,22,155,4,248,22,74,195,249,22,148,4,80,158,40, +36,28,248,22,81,195,250,22,84,2,21,9,248,22,75,199,250,22,83,2,6, +248,22,83,248,22,74,199,250,22,84,2,5,248,22,75,201,248,22,75,202,27, +248,22,75,248,22,155,4,23,197,1,27,249,22,1,22,87,249,22,2,22,155, +4,248,22,155,4,248,22,74,199,249,22,148,4,80,158,40,36,251,22,83,1, +22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97, +114,107,2,25,250,22,84,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,21,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, +11,2,25,201,250,22,84,2,21,9,248,22,75,203,27,248,22,75,248,22,155, +4,196,28,248,22,81,193,20,15,159,37,36,37,249,22,148,4,80,158,39,36, +27,248,22,155,4,248,22,74,197,28,249,22,134,9,62,61,62,248,22,149,4, +248,22,98,196,250,22,83,2,21,248,22,83,249,22,83,21,93,2,26,248,22, +74,199,250,22,84,2,8,249,22,83,2,26,249,22,83,248,22,107,203,2,26, +248,22,75,202,251,22,83,2,17,28,249,22,134,9,248,22,149,4,248,22,74, +200,64,101,108,115,101,10,248,22,74,197,250,22,84,2,21,9,248,22,75,200, +249,22,73,2,8,248,22,75,202,100,8,32,8,31,8,30,8,29,8,28,16, +4,11,11,2,19,3,1,8,101,110,118,49,51,54,51,52,16,4,11,11,2, +20,3,1,8,101,110,118,49,51,54,51,53,93,8,224,30,83,0,0,18,16, +2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,30,83,0,0,2,2, +27,248,22,75,248,22,155,4,196,249,22,148,4,80,158,39,36,28,248,22,58, +248,22,149,4,248,22,74,197,250,22,83,2,27,248,22,83,248,22,74,199,248, +22,98,198,27,248,22,149,4,248,22,74,197,250,22,83,2,27,248,22,83,248, +22,74,197,250,22,84,2,24,248,22,75,199,248,22,75,202,159,36,20,105,159, +36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,2,2,11,11,11, +10,36,80,158,36,36,20,105,159,36,16,0,16,0,16,1,2,3,37,16,0, +36,16,0,36,11,11,39,36,11,11,11,16,10,2,4,2,5,2,6,2,7, +2,8,2,9,2,10,2,11,2,12,2,13,16,10,11,11,11,11,11,11,11, +11,11,11,16,10,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11, +2,12,2,13,36,46,37,11,11,11,16,0,16,0,16,0,36,36,11,11,11, +11,16,0,16,0,16,0,36,36,16,11,16,5,2,3,20,15,159,36,36,36, +36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,13,89,162,8,44,37, +53,9,223,0,33,34,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2, +7,89,162,8,44,37,53,9,223,0,33,35,36,20,105,159,36,16,1,2,3, +16,0,11,16,5,2,9,89,162,8,44,37,53,9,223,0,33,36,36,20,105, +159,36,16,1,2,3,16,1,33,37,11,16,5,2,11,89,162,8,44,37,56, +9,223,0,33,38,36,20,105,159,36,16,1,2,3,16,1,33,39,11,16,5, +2,6,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16,1,2, +3,16,0,11,16,5,2,10,89,162,8,44,37,53,9,223,0,33,44,36,20, +105,159,36,16,1,2,3,16,0,11,16,5,2,5,89,162,8,44,37,54,9, +223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,4,89, +162,8,44,37,55,9,223,0,33,46,36,20,105,159,36,16,1,2,3,16,0, +11,16,5,2,8,89,162,8,44,37,58,9,223,0,33,47,36,20,105,159,36, +16,1,2,3,16,1,33,49,11,16,5,2,12,89,162,8,44,37,54,9,223, +0,33,50,36,20,105,159,36,16,1,2,3,16,0,11,16,0,94,2,15,2, +16,93,2,15,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2044); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,54,74,0,0,0,1,0,0,8,0,21,0, -26,0,43,0,58,0,76,0,92,0,106,0,128,0,146,0,166,0,182,0,200, -0,231,0,4,1,26,1,40,1,46,1,60,1,65,1,75,1,83,1,111,1, -143,1,188,1,194,1,201,1,207,1,252,1,20,2,59,2,61,2,63,2,229, -2,63,4,104,4,177,5,7,6,93,6,192,6,20,7,33,7,166,7,139,8, -223,8,236,8,1,10,204,10,217,10,109,15,124,16,13,17,254,17,236,18,243, -18,251,18,3,19,128,19,142,19,152,19,217,21,142,24,164,24,180,24,128,26, -231,26,245,26,71,28,8,30,17,30,26,30,52,30,181,30,0,0,200,33,0, -0,67,35,37,117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110,103, -63,64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,115,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,75,99,111,108,108,101,99, -116,105,111,110,45,112,97,116,104,73,102,105,110,100,45,99,111,108,45,102,105, -108,101,1,20,99,111,108,108,101,99,116,105,111,110,45,102,105,108,101,45,112, -97,116,104,77,99,104,101,99,107,45,115,117,102,102,105,120,45,99,97,108,108, -79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,75, -112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,77,108,111,97,100,47, -117,115,101,45,99,111,109,112,105,108,101,100,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,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,73,101,109,98,101,100,100,101,100,45,108, -111,97,100,65,113,117,111,116,101,29,94,2,18,68,35,37,112,97,114,97,109, -122,11,64,108,111,111,112,69,101,120,101,99,45,102,105,108,101,67,119,105,110, -100,111,119,115,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,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,65,99,108,111,111,112,6,4,4,46,114,107,116,6,3,3,46, -115,115,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,6,21,21,115,116,114,105,110,103,32,111,114,32,98,121,116, -101,32,115,116,114,105,110,103,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,5,0,5,0,27,20,14,159,80,159,37,52,38,250,80,159, -40,53,38,249,22,27,11,80,159,42,52,38,22,177,13,10,248,22,184,5,23, -196,2,28,248,22,183,6,23,194,2,12,87,94,248,22,142,9,23,194,1,27, -20,14,159,80,159,38,52,38,250,80,159,41,53,38,249,22,27,11,80,159,43, -52,38,22,177,13,10,248,22,184,5,23,197,2,28,248,22,183,6,23,194,2, -12,87,94,248,22,142,9,23,194,1,27,20,14,159,80,159,39,52,38,250,80, -159,42,53,38,249,22,27,11,80,159,44,52,38,22,177,13,10,248,22,184,5, -23,198,2,28,248,22,183,6,23,194,2,12,87,94,248,22,142,9,23,194,1, -248,80,159,40,55,37,197,28,248,22,81,23,195,2,9,27,248,22,74,23,196, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,55,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,74,0,0,0,1,0,0,8,0,21,0,26, +0,43,0,58,0,76,0,92,0,106,0,128,0,146,0,166,0,182,0,200,0, +231,0,4,1,26,1,40,1,46,1,60,1,65,1,75,1,83,1,111,1,143, +1,188,1,194,1,201,1,207,1,252,1,20,2,59,2,61,2,63,2,229,2, +63,4,104,4,177,5,7,6,93,6,192,6,20,7,33,7,166,7,139,8,223, +8,236,8,1,10,204,10,217,10,109,15,124,16,13,17,254,17,236,18,243,18, +251,18,3,19,128,19,142,19,152,19,217,21,142,24,164,24,180,24,128,26,231, +26,245,26,71,28,8,30,17,30,26,30,52,30,181,30,0,0,200,33,0,0, +67,35,37,117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110,103,63, +64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,115,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,75,99,111,108,108,101,99,116, +105,111,110,45,112,97,116,104,73,102,105,110,100,45,99,111,108,45,102,105,108, +101,1,20,99,111,108,108,101,99,116,105,111,110,45,102,105,108,101,45,112,97, +116,104,77,99,104,101,99,107,45,115,117,102,102,105,120,45,99,97,108,108,79, +112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,75,112, +97,116,104,45,97,100,100,45,115,117,102,102,105,120,77,108,111,97,100,47,117, +115,101,45,99,111,109,112,105,108,101,100,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, +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,73,101,109,98,101,100,100,101,100,45,108,111, +97,100,65,113,117,111,116,101,29,94,2,18,68,35,37,112,97,114,97,109,122, +11,64,108,111,111,112,69,101,120,101,99,45,102,105,108,101,67,119,105,110,100, +111,119,115,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,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,65,99,108,111,111,112,6,4,4,46,114,107,116,6,3,3,46,115, +115,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,6,21,21,115,116,114,105,110,103,32,111,114,32,98,121,116,101, +32,115,116,114,105,110,103,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,5,0,5,0,27,20,14,159,80,159,37,52,38,250,80,159,40, +53,38,249,22,27,11,80,159,42,52,38,22,177,13,10,248,22,184,5,23,196, +2,28,248,22,183,6,23,194,2,12,87,94,248,22,142,9,23,194,1,27,20, +14,159,80,159,38,52,38,250,80,159,41,53,38,249,22,27,11,80,159,43,52, +38,22,177,13,10,248,22,184,5,23,197,2,28,248,22,183,6,23,194,2,12, +87,94,248,22,142,9,23,194,1,27,20,14,159,80,159,39,52,38,250,80,159, +42,53,38,249,22,27,11,80,159,44,52,38,22,177,13,10,248,22,184,5,23, +198,2,28,248,22,183,6,23,194,2,12,87,94,248,22,142,9,23,194,1,248, +80,159,40,55,37,197,28,248,22,81,23,195,2,9,27,248,22,74,23,196,2, +27,28,248,22,163,14,23,195,2,23,194,1,28,248,22,162,14,23,195,2,249, +22,164,14,23,196,1,250,80,158,43,50,248,22,179,14,2,21,11,10,250,80, +158,41,50,248,22,179,14,2,21,23,197,1,10,28,23,193,2,249,22,73,248, +22,166,14,249,22,164,14,23,198,1,247,22,180,14,27,248,22,75,23,200,1, +28,248,22,81,23,194,2,9,27,248,22,74,23,195,2,27,28,248,22,163,14, +23,195,2,23,194,1,28,248,22,162,14,23,195,2,249,22,164,14,23,196,1, +250,80,158,48,50,248,22,179,14,2,21,11,10,250,80,158,46,50,248,22,179, +14,2,21,23,197,1,10,28,23,193,2,249,22,73,248,22,166,14,249,22,164, +14,23,198,1,247,22,180,14,248,80,159,46,54,37,248,22,75,23,199,1,87, +94,23,193,1,248,80,159,44,54,37,248,22,75,23,197,1,87,94,23,193,1, +27,248,22,75,23,198,1,28,248,22,81,23,194,2,9,27,248,22,74,23,195, 2,27,28,248,22,163,14,23,195,2,23,194,1,28,248,22,162,14,23,195,2, -249,22,164,14,23,196,1,250,80,158,43,50,248,22,179,14,2,21,11,10,250, -80,158,41,50,248,22,179,14,2,21,23,197,1,10,28,23,193,2,249,22,73, -248,22,166,14,249,22,164,14,23,198,1,247,22,180,14,27,248,22,75,23,200, -1,28,248,22,81,23,194,2,9,27,248,22,74,23,195,2,27,28,248,22,163, -14,23,195,2,23,194,1,28,248,22,162,14,23,195,2,249,22,164,14,23,196, -1,250,80,158,48,50,248,22,179,14,2,21,11,10,250,80,158,46,50,248,22, -179,14,2,21,23,197,1,10,28,23,193,2,249,22,73,248,22,166,14,249,22, -164,14,23,198,1,247,22,180,14,248,80,159,46,54,37,248,22,75,23,199,1, -87,94,23,193,1,248,80,159,44,54,37,248,22,75,23,197,1,87,94,23,193, -1,27,248,22,75,23,198,1,28,248,22,81,23,194,2,9,27,248,22,74,23, -195,2,27,28,248,22,163,14,23,195,2,23,194,1,28,248,22,162,14,23,195, -2,249,22,164,14,23,196,1,250,80,158,46,50,248,22,179,14,2,21,11,10, -250,80,158,44,50,248,22,179,14,2,21,23,197,1,10,28,23,193,2,249,22, -73,248,22,166,14,249,22,164,14,23,198,1,247,22,180,14,248,80,159,44,54, -37,248,22,75,23,199,1,248,80,159,42,54,37,248,22,75,196,27,248,22,139, -14,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,188,6,23,195, -2,27,248,22,161,14,195,28,192,192,248,22,162,14,195,11,87,94,28,28,248, -22,140,14,23,195,2,10,28,248,22,139,14,23,195,2,10,28,248,22,188,6, -23,195,2,28,248,22,161,14,23,195,2,10,248,22,162,14,23,195,2,11,12, -250,22,170,9,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,23,197,2,28,28,248,22,140,14,23,195,2,249,22,134,9,248,22, -141,14,23,197,2,2,22,249,22,134,9,247,22,146,8,2,22,27,28,248,22, -188,6,23,196,2,23,195,2,248,22,136,8,248,22,144,14,23,197,2,28,249, -22,130,15,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93, -91,92,92,93,34,23,195,2,28,248,22,188,6,195,248,22,147,14,195,194,27, -248,22,163,7,23,195,1,249,22,148,14,248,22,139,8,250,22,138,15,0,6, -35,114,120,34,47,34,28,249,22,130,15,0,22,35,114,120,34,91,47,92,92, -93,91,46,32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250, -22,138,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42, -41,36,34,23,202,1,6,2,2,92,49,80,159,44,37,38,2,22,28,248,22, -188,6,194,248,22,147,14,194,193,87,94,28,28,248,22,139,14,23,195,2,10, -28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22,162,14, -23,195,2,11,12,250,22,170,9,23,196,2,2,23,23,197,2,28,248,22,161, -14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7, -2,24,23,200,1,23,201,1,247,22,23,87,94,28,28,248,22,139,14,23,195, -2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22, -162,14,23,195,2,11,12,250,22,170,9,23,196,2,2,23,23,197,2,28,248, -22,161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22, -172,7,2,24,23,200,1,23,201,1,247,22,23,87,94,87,94,28,28,248,22, -139,14,23,195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195, -2,10,248,22,162,14,23,195,2,11,12,250,22,170,9,195,2,23,23,197,2, -28,248,22,161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7, -250,22,172,7,2,24,199,23,201,1,247,22,23,249,22,3,89,162,8,44,37, -50,9,223,2,33,39,196,87,94,28,28,248,22,139,14,23,194,2,10,28,248, -22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14,23,194, -2,11,12,250,22,170,9,2,7,2,23,23,196,2,28,248,22,161,14,23,194, -2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7,2,24,2, -7,23,200,1,247,22,23,32,42,89,162,8,44,41,56,2,26,222,33,43,28, -248,22,81,23,197,2,87,94,23,196,1,28,23,197,2,196,87,94,23,197,1, -248,22,153,12,249,22,128,12,251,22,172,7,2,25,2,7,28,248,22,81,23, -203,2,87,94,23,202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205, -1,23,200,1,247,22,23,27,249,22,157,14,248,22,74,23,200,2,23,197,2, -28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,199,28,248, -22,152,14,193,192,252,2,42,199,200,201,248,22,75,203,203,252,2,42,198,199, -200,248,22,75,202,202,87,94,87,94,87,94,28,28,248,22,139,14,23,194,2, -10,28,248,22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162, -14,23,194,2,11,12,250,22,170,9,2,7,2,23,23,196,2,28,248,22,161, -14,23,194,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7, -2,24,2,7,23,200,2,247,22,23,249,22,3,32,0,89,162,8,44,37,49, -9,222,33,41,23,196,2,27,247,22,181,14,28,248,22,81,23,194,2,248,22, -153,12,249,22,128,12,251,22,172,7,2,25,2,7,28,248,22,81,23,203,2, -87,94,23,202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205,1,23, -200,1,247,22,23,27,249,22,157,14,248,22,74,23,197,2,23,197,2,28,248, -22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,199,28,248,22,152, -14,193,192,252,2,42,199,200,201,248,22,75,200,11,252,2,42,198,199,200,248, -22,75,199,11,87,94,28,28,248,22,139,14,23,194,2,10,28,248,22,188,6, -23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14,23,194,2,11,12, -250,22,170,9,2,9,2,23,23,196,2,28,248,22,161,14,23,194,2,12,248, -22,153,12,249,22,159,11,248,22,153,7,250,22,172,7,2,24,2,9,23,200, -1,247,22,23,32,46,89,162,8,44,42,59,2,26,222,33,47,28,248,22,81, -23,198,2,87,95,23,197,1,23,194,1,28,23,198,2,197,87,94,23,198,1, -248,22,153,12,249,22,128,12,251,22,172,7,2,25,2,9,28,248,22,81,23, -204,2,87,94,23,203,1,23,202,1,250,22,1,22,157,14,23,205,1,23,206, -1,23,200,1,247,22,23,27,249,22,157,14,248,22,74,23,201,2,23,198,2, -28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23,201,2, -28,248,22,152,14,23,194,2,28,23,196,2,28,28,248,22,151,14,249,22,157, -14,195,198,10,27,28,248,22,139,14,197,248,22,143,14,197,196,27,248,22,191, -6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7,2,27, -249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7,250,22, -146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23,195,1, -23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23,196,1, -11,192,253,2,46,200,201,202,203,248,22,75,205,28,205,205,198,192,253,2,46, -200,201,202,203,248,22,75,205,205,253,2,46,199,200,201,202,248,22,75,204,204, -87,95,87,94,28,28,248,22,139,14,193,10,28,248,22,188,6,193,28,248,22, -161,14,193,10,248,22,162,14,193,11,12,250,22,170,9,2,9,2,23,195,28, -248,22,161,14,193,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172, -7,2,24,2,9,199,247,22,23,87,94,87,94,28,28,248,22,139,14,23,195, -2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22, -162,14,23,195,2,11,12,250,22,170,9,2,9,2,23,23,197,2,28,248,22, +249,22,164,14,23,196,1,250,80,158,46,50,248,22,179,14,2,21,11,10,250, +80,158,44,50,248,22,179,14,2,21,23,197,1,10,28,23,193,2,249,22,73, +248,22,166,14,249,22,164,14,23,198,1,247,22,180,14,248,80,159,44,54,37, +248,22,75,23,199,1,248,80,159,42,54,37,248,22,75,196,27,248,22,139,14, +23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,188,6,23,195,2, +27,248,22,161,14,195,28,192,192,248,22,162,14,195,11,87,94,28,28,248,22, +140,14,23,195,2,10,28,248,22,139,14,23,195,2,10,28,248,22,188,6,23, +195,2,28,248,22,161,14,23,195,2,10,248,22,162,14,23,195,2,11,12,250, +22,170,9,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,23,197,2,28,28,248,22,140,14,23,195,2,249,22,134,9,248,22,141, +14,23,197,2,2,22,249,22,134,9,247,22,146,8,2,22,27,28,248,22,188, +6,23,196,2,23,195,2,248,22,136,8,248,22,144,14,23,197,2,28,249,22, +130,15,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91, +92,92,93,34,23,195,2,28,248,22,188,6,195,248,22,147,14,195,194,27,248, +22,163,7,23,195,1,249,22,148,14,248,22,139,8,250,22,138,15,0,6,35, +114,120,34,47,34,28,249,22,130,15,0,22,35,114,120,34,91,47,92,92,93, +91,46,32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22, +138,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41, +36,34,23,202,1,6,2,2,92,49,80,159,44,37,38,2,22,28,248,22,188, +6,194,248,22,147,14,194,193,87,94,28,28,248,22,139,14,23,195,2,10,28, +248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22,162,14,23, +195,2,11,12,250,22,170,9,23,196,2,2,23,23,197,2,28,248,22,161,14, +23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7,2, +24,23,200,1,23,201,1,247,22,23,87,94,28,28,248,22,139,14,23,195,2, +10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22,162, +14,23,195,2,11,12,250,22,170,9,23,196,2,2,23,23,197,2,28,248,22, 161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172, -7,2,24,2,9,23,201,2,247,22,23,249,22,3,32,0,89,162,8,44,37, -49,9,222,33,45,23,197,2,249,22,157,14,27,247,22,181,14,253,2,46,23, -199,2,201,23,203,1,23,204,1,23,199,1,11,194,32,49,89,162,44,44,8, -29,2,26,222,33,50,28,248,22,81,23,200,2,87,95,23,199,1,23,198,1, -28,23,200,2,199,87,94,23,200,1,248,23,196,1,251,22,172,7,2,25,23, -199,1,28,248,22,81,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22, -157,14,23,204,1,23,205,1,23,198,1,27,249,22,157,14,248,22,74,23,203, -2,23,199,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197, -1,23,202,2,28,248,22,152,14,23,194,2,28,23,200,2,28,28,248,22,151, -14,249,22,157,14,23,196,2,23,203,2,10,27,28,248,22,139,14,23,202,2, -248,22,143,14,23,202,2,23,201,2,27,248,22,191,6,23,195,2,27,28,249, -22,188,3,23,196,2,40,28,249,22,130,7,2,27,249,22,146,7,23,199,2, -249,22,176,3,23,200,2,40,249,22,147,7,250,22,146,7,23,200,1,36,249, -22,176,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23, -193,2,248,22,151,14,249,22,157,14,23,199,2,23,196,1,11,192,27,248,22, -75,23,203,1,27,28,23,204,2,87,94,23,195,1,23,204,1,87,94,23,204, -1,23,195,1,28,248,22,81,23,195,2,87,95,23,202,1,23,194,1,28,23, -193,2,192,87,94,23,193,1,248,23,200,1,251,22,172,7,2,25,23,203,1, -28,248,22,81,23,207,2,87,94,23,206,1,23,205,1,250,22,1,22,157,14, -23,208,1,23,209,1,23,202,1,27,249,22,157,14,248,22,74,23,198,2,23, -203,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23, -206,2,28,248,22,152,14,23,194,2,28,23,204,2,28,28,248,22,151,14,249, -22,157,14,195,206,10,27,28,248,22,139,14,205,248,22,143,14,205,204,27,248, -22,191,6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7, -2,27,249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7, -250,22,146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23, -195,1,23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23, -196,1,11,192,26,8,2,49,206,23,15,23,16,23,17,23,18,23,19,248,22, -75,204,28,202,202,200,192,26,8,2,49,206,23,15,23,16,23,17,23,18,23, -19,248,22,75,204,202,26,8,2,49,205,206,23,15,23,16,23,17,23,18,248, -22,75,203,201,192,27,248,22,75,23,203,1,28,248,22,81,23,194,2,87,95, -23,201,1,23,193,1,28,23,203,2,202,87,94,23,203,1,248,23,199,1,251, -22,172,7,2,25,23,202,1,28,248,22,81,23,206,2,87,94,23,205,1,23, -204,1,250,22,1,22,157,14,23,207,1,23,208,1,23,201,1,27,249,22,157, -14,248,22,74,23,197,2,23,202,2,28,248,22,152,14,23,194,2,27,250,22, -1,22,157,14,23,197,1,23,205,2,28,248,22,152,14,23,194,2,28,23,203, -2,28,28,248,22,151,14,249,22,157,14,195,205,10,27,28,248,22,139,14,204, -248,22,143,14,204,203,27,248,22,191,6,23,195,2,27,28,249,22,188,3,23, -196,2,40,28,249,22,130,7,2,27,249,22,146,7,23,199,2,249,22,176,3, -23,200,2,40,249,22,147,7,250,22,146,7,23,200,1,36,249,22,176,3,23, -201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22, -151,14,249,22,157,14,198,23,196,1,11,192,26,8,2,49,205,206,23,15,23, -16,23,17,23,18,248,22,75,203,28,23,20,23,20,200,192,26,8,2,49,205, -206,23,15,23,16,23,17,23,18,248,22,75,203,23,20,26,8,2,49,204,205, -206,23,15,23,16,23,17,248,22,75,202,23,19,87,94,23,193,1,27,248,22, -75,23,202,1,28,248,22,81,23,194,2,87,95,23,200,1,23,193,1,28,23, -202,2,201,87,94,23,202,1,248,23,198,1,251,22,172,7,2,25,23,201,1, -28,248,22,81,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,157,14, -23,206,1,23,207,1,23,200,1,27,249,22,157,14,248,22,74,23,197,2,23, -201,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23, -204,2,28,248,22,152,14,23,194,2,28,23,202,2,28,28,248,22,151,14,249, -22,157,14,195,204,10,27,28,248,22,139,14,203,248,22,143,14,203,202,27,248, -22,191,6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7, -2,27,249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7, -250,22,146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23, -195,1,23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23, -196,1,11,192,26,8,2,49,204,205,206,23,15,23,16,23,17,248,22,75,203, -28,23,19,23,19,200,192,26,8,2,49,204,205,206,23,15,23,16,23,17,248, -22,75,203,23,19,26,8,2,49,203,204,205,206,23,15,23,16,248,22,75,202, -23,18,27,247,22,181,14,28,248,22,81,23,194,2,87,94,23,198,1,248,23, -196,1,251,22,172,7,2,25,23,199,1,28,248,22,81,23,203,2,87,94,23, -202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205,1,23,198,1,27, -249,22,157,14,248,22,74,23,197,2,23,199,2,28,248,22,152,14,23,194,2, -27,250,22,1,22,157,14,23,197,1,23,202,2,28,248,22,152,14,23,194,2, -28,23,200,2,28,28,248,22,151,14,249,22,157,14,195,202,10,27,28,248,22, -139,14,201,248,22,143,14,201,200,27,248,22,191,6,23,195,2,27,28,249,22, +7,2,24,23,200,1,23,201,1,247,22,23,87,94,87,94,28,28,248,22,139, +14,23,195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2, +10,248,22,162,14,23,195,2,11,12,250,22,170,9,195,2,23,23,197,2,28, +248,22,161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250, +22,172,7,2,24,199,23,201,1,247,22,23,249,22,3,89,162,8,44,37,50, +9,223,2,33,39,196,87,94,28,28,248,22,139,14,23,194,2,10,28,248,22, +188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14,23,194,2, +11,12,250,22,170,9,2,7,2,23,23,196,2,28,248,22,161,14,23,194,2, +12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7,2,24,2,7, +23,200,1,247,22,23,32,42,89,162,8,44,41,56,2,26,222,33,43,28,248, +22,81,23,197,2,87,94,23,196,1,28,23,197,2,196,87,94,23,197,1,248, +22,153,12,249,22,128,12,251,22,172,7,2,25,2,7,28,248,22,81,23,203, +2,87,94,23,202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205,1, +23,200,1,247,22,23,27,249,22,157,14,248,22,74,23,200,2,23,197,2,28, +248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,199,28,248,22, +152,14,193,192,252,2,42,199,200,201,248,22,75,203,203,252,2,42,198,199,200, +248,22,75,202,202,87,94,87,94,87,94,28,28,248,22,139,14,23,194,2,10, +28,248,22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14, +23,194,2,11,12,250,22,170,9,2,7,2,23,23,196,2,28,248,22,161,14, +23,194,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7,2, +24,2,7,23,200,2,247,22,23,249,22,3,32,0,89,162,8,44,37,49,9, +222,33,41,23,196,2,27,247,22,181,14,28,248,22,81,23,194,2,248,22,153, +12,249,22,128,12,251,22,172,7,2,25,2,7,28,248,22,81,23,203,2,87, +94,23,202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205,1,23,200, +1,247,22,23,27,249,22,157,14,248,22,74,23,197,2,23,197,2,28,248,22, +152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,199,28,248,22,152,14, +193,192,252,2,42,199,200,201,248,22,75,200,11,252,2,42,198,199,200,248,22, +75,199,11,87,94,28,28,248,22,139,14,23,194,2,10,28,248,22,188,6,23, +194,2,28,248,22,161,14,23,194,2,10,248,22,162,14,23,194,2,11,12,250, +22,170,9,2,9,2,23,23,196,2,28,248,22,161,14,23,194,2,12,248,22, +153,12,249,22,159,11,248,22,153,7,250,22,172,7,2,24,2,9,23,200,1, +247,22,23,32,46,89,162,8,44,42,59,2,26,222,33,47,28,248,22,81,23, +198,2,87,95,23,197,1,23,194,1,28,23,198,2,197,87,94,23,198,1,248, +22,153,12,249,22,128,12,251,22,172,7,2,25,2,9,28,248,22,81,23,204, +2,87,94,23,203,1,23,202,1,250,22,1,22,157,14,23,205,1,23,206,1, +23,200,1,247,22,23,27,249,22,157,14,248,22,74,23,201,2,23,198,2,28, +248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23,201,2,28, +248,22,152,14,23,194,2,28,23,196,2,28,28,248,22,151,14,249,22,157,14, +195,198,10,27,28,248,22,139,14,197,248,22,143,14,197,196,27,248,22,191,6, +23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7,2,27,249, +22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7,250,22,146, +7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23,195,1,23, +194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23,196,1,11, +192,253,2,46,200,201,202,203,248,22,75,205,28,205,205,198,192,253,2,46,200, +201,202,203,248,22,75,205,205,253,2,46,199,200,201,202,248,22,75,204,204,87, +95,87,94,28,28,248,22,139,14,193,10,28,248,22,188,6,193,28,248,22,161, +14,193,10,248,22,162,14,193,11,12,250,22,170,9,2,9,2,23,195,28,248, +22,161,14,193,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7, +2,24,2,9,199,247,22,23,87,94,87,94,28,28,248,22,139,14,23,195,2, +10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22,162, +14,23,195,2,11,12,250,22,170,9,2,9,2,23,23,197,2,28,248,22,161, +14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7, +2,24,2,9,23,201,2,247,22,23,249,22,3,32,0,89,162,8,44,37,49, +9,222,33,45,23,197,2,249,22,157,14,27,247,22,181,14,253,2,46,23,199, +2,201,23,203,1,23,204,1,23,199,1,11,194,32,49,89,162,44,44,8,29, +2,26,222,33,50,28,248,22,81,23,200,2,87,95,23,199,1,23,198,1,28, +23,200,2,199,87,94,23,200,1,248,23,196,1,251,22,172,7,2,25,23,199, +1,28,248,22,81,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,157, +14,23,204,1,23,205,1,23,198,1,27,249,22,157,14,248,22,74,23,203,2, +23,199,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1, +23,202,2,28,248,22,152,14,23,194,2,28,23,200,2,28,28,248,22,151,14, +249,22,157,14,23,196,2,23,203,2,10,27,28,248,22,139,14,23,202,2,248, +22,143,14,23,202,2,23,201,2,27,248,22,191,6,23,195,2,27,28,249,22, 188,3,23,196,2,40,28,249,22,130,7,2,27,249,22,146,7,23,199,2,249, 22,176,3,23,200,2,40,249,22,147,7,250,22,146,7,23,200,1,36,249,22, 176,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193, -2,248,22,151,14,249,22,157,14,198,23,196,1,11,192,26,8,2,49,202,203, -204,205,206,23,15,248,22,75,203,200,192,26,8,2,49,202,203,204,205,206,23, -15,248,22,75,203,11,26,8,2,49,201,202,203,204,205,206,248,22,75,202,11, -87,95,28,28,248,22,140,14,23,194,2,10,28,248,22,139,14,23,194,2,10, -28,248,22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14, -23,194,2,11,12,252,22,170,9,23,200,2,2,29,36,23,198,2,23,199,2, -28,28,248,22,188,6,23,195,2,10,248,22,177,7,23,195,2,87,94,23,194, -1,12,252,22,170,9,23,200,2,2,30,37,23,198,2,23,199,1,91,159,39, -11,90,161,39,36,11,248,22,160,14,23,197,2,87,94,23,195,1,87,94,28, -192,12,250,22,171,9,23,201,1,2,31,23,199,1,249,22,7,194,195,91,159, -38,11,90,161,38,36,11,87,95,28,28,248,22,140,14,23,196,2,10,28,248, -22,139,14,23,196,2,10,28,248,22,188,6,23,196,2,28,248,22,161,14,23, -196,2,10,248,22,162,14,23,196,2,11,12,252,22,170,9,2,11,2,29,36, -23,200,2,23,201,2,28,28,248,22,188,6,23,197,2,10,248,22,177,7,23, -197,2,12,252,22,170,9,2,11,2,30,37,23,200,2,23,201,2,91,159,39, -11,90,161,39,36,11,248,22,160,14,23,199,2,87,94,23,195,1,87,94,28, -192,12,250,22,171,9,2,11,2,31,23,201,2,249,22,7,194,195,27,249,22, -149,14,250,22,137,15,0,20,35,114,120,35,34,40,63,58,91,46,93,91,94, -46,93,42,124,41,36,34,248,22,145,14,23,201,1,28,248,22,188,6,23,203, -2,249,22,139,8,23,204,1,8,63,23,202,1,28,248,22,140,14,23,199,2, -248,22,141,14,23,199,1,87,94,23,198,1,247,22,142,14,28,248,22,139,14, -194,249,22,157,14,195,194,192,91,159,38,11,90,161,38,36,11,87,95,28,28, -248,22,140,14,23,196,2,10,28,248,22,139,14,23,196,2,10,28,248,22,188, -6,23,196,2,28,248,22,161,14,23,196,2,10,248,22,162,14,23,196,2,11, -12,252,22,170,9,2,12,2,29,36,23,200,2,23,201,2,28,28,248,22,188, -6,23,197,2,10,248,22,177,7,23,197,2,12,252,22,170,9,2,12,2,30, -37,23,200,2,23,201,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23, -199,2,87,94,23,195,1,87,94,28,192,12,250,22,171,9,2,12,2,31,23, -201,2,249,22,7,194,195,27,249,22,149,14,249,22,189,7,250,22,138,15,0, -9,35,114,120,35,34,91,46,93,34,248,22,145,14,23,203,1,6,1,1,95, -28,248,22,188,6,23,202,2,249,22,139,8,23,203,1,8,63,23,201,1,28, -248,22,140,14,23,199,2,248,22,141,14,23,199,1,87,94,23,198,1,247,22, -142,14,28,248,22,139,14,194,249,22,157,14,195,194,192,249,247,22,153,5,194, -11,249,80,159,38,48,37,9,9,249,80,159,38,48,37,195,9,27,247,22,183, -14,249,80,158,39,49,28,23,195,2,27,248,22,144,8,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,23,196, -1,250,22,157,14,248,22,179,14,69,97,100,100,111,110,45,100,105,114,247,22, -142,8,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,42,54,37, -250,22,87,23,203,1,248,22,83,248,22,179,14,72,99,111,108,108,101,99,116, -115,45,100,105,114,23,204,1,28,193,249,22,73,195,194,192,32,59,89,162,8, -44,39,8,29,2,20,222,33,61,0,8,35,114,120,35,34,92,34,34,27,249, -22,190,14,23,197,2,23,198,2,28,23,193,2,87,94,23,196,1,27,248,22, -98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,190,14,23,201,2,23, -196,2,28,23,193,2,87,94,23,194,1,27,248,22,98,23,195,2,27,27,248, -22,107,23,197,1,27,249,22,190,14,23,205,2,23,196,2,28,23,193,2,87, -94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249, -22,190,14,23,209,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22, -98,23,195,2,27,250,2,59,23,211,2,23,212,1,248,22,107,23,199,1,28, -249,22,185,7,23,196,2,2,32,249,22,87,23,210,2,194,249,22,73,248,22, +2,248,22,151,14,249,22,157,14,23,199,2,23,196,1,11,192,27,248,22,75, +23,203,1,27,28,23,204,2,87,94,23,195,1,23,204,1,87,94,23,204,1, +23,195,1,28,248,22,81,23,195,2,87,95,23,202,1,23,194,1,28,23,193, +2,192,87,94,23,193,1,248,23,200,1,251,22,172,7,2,25,23,203,1,28, +248,22,81,23,207,2,87,94,23,206,1,23,205,1,250,22,1,22,157,14,23, +208,1,23,209,1,23,202,1,27,249,22,157,14,248,22,74,23,198,2,23,203, +2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23,206, +2,28,248,22,152,14,23,194,2,28,23,204,2,28,28,248,22,151,14,249,22, +157,14,195,206,10,27,28,248,22,139,14,205,248,22,143,14,205,204,27,248,22, +191,6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7,2, +27,249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7,250, +22,146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23,195, +1,23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23,196, +1,11,192,26,8,2,49,206,23,15,23,16,23,17,23,18,23,19,248,22,75, +204,28,202,202,200,192,26,8,2,49,206,23,15,23,16,23,17,23,18,23,19, +248,22,75,204,202,26,8,2,49,205,206,23,15,23,16,23,17,23,18,248,22, +75,203,201,192,27,248,22,75,23,203,1,28,248,22,81,23,194,2,87,95,23, +201,1,23,193,1,28,23,203,2,202,87,94,23,203,1,248,23,199,1,251,22, +172,7,2,25,23,202,1,28,248,22,81,23,206,2,87,94,23,205,1,23,204, +1,250,22,1,22,157,14,23,207,1,23,208,1,23,201,1,27,249,22,157,14, +248,22,74,23,197,2,23,202,2,28,248,22,152,14,23,194,2,27,250,22,1, +22,157,14,23,197,1,23,205,2,28,248,22,152,14,23,194,2,28,23,203,2, +28,28,248,22,151,14,249,22,157,14,195,205,10,27,28,248,22,139,14,204,248, +22,143,14,204,203,27,248,22,191,6,23,195,2,27,28,249,22,188,3,23,196, +2,40,28,249,22,130,7,2,27,249,22,146,7,23,199,2,249,22,176,3,23, +200,2,40,249,22,147,7,250,22,146,7,23,200,1,36,249,22,176,3,23,201, +1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,151, +14,249,22,157,14,198,23,196,1,11,192,26,8,2,49,205,206,23,15,23,16, +23,17,23,18,248,22,75,203,28,23,20,23,20,200,192,26,8,2,49,205,206, +23,15,23,16,23,17,23,18,248,22,75,203,23,20,26,8,2,49,204,205,206, +23,15,23,16,23,17,248,22,75,202,23,19,87,94,23,193,1,27,248,22,75, +23,202,1,28,248,22,81,23,194,2,87,95,23,200,1,23,193,1,28,23,202, +2,201,87,94,23,202,1,248,23,198,1,251,22,172,7,2,25,23,201,1,28, +248,22,81,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,157,14,23, +206,1,23,207,1,23,200,1,27,249,22,157,14,248,22,74,23,197,2,23,201, +2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23,204, +2,28,248,22,152,14,23,194,2,28,23,202,2,28,28,248,22,151,14,249,22, +157,14,195,204,10,27,28,248,22,139,14,203,248,22,143,14,203,202,27,248,22, +191,6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7,2, +27,249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7,250, +22,146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23,195, +1,23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23,196, +1,11,192,26,8,2,49,204,205,206,23,15,23,16,23,17,248,22,75,203,28, +23,19,23,19,200,192,26,8,2,49,204,205,206,23,15,23,16,23,17,248,22, +75,203,23,19,26,8,2,49,203,204,205,206,23,15,23,16,248,22,75,202,23, +18,27,247,22,181,14,28,248,22,81,23,194,2,87,94,23,198,1,248,23,196, +1,251,22,172,7,2,25,23,199,1,28,248,22,81,23,203,2,87,94,23,202, +1,23,201,1,250,22,1,22,157,14,23,204,1,23,205,1,23,198,1,27,249, +22,157,14,248,22,74,23,197,2,23,199,2,28,248,22,152,14,23,194,2,27, +250,22,1,22,157,14,23,197,1,23,202,2,28,248,22,152,14,23,194,2,28, +23,200,2,28,28,248,22,151,14,249,22,157,14,195,202,10,27,28,248,22,139, +14,201,248,22,143,14,201,200,27,248,22,191,6,23,195,2,27,28,249,22,188, +3,23,196,2,40,28,249,22,130,7,2,27,249,22,146,7,23,199,2,249,22, +176,3,23,200,2,40,249,22,147,7,250,22,146,7,23,200,1,36,249,22,176, +3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2, +248,22,151,14,249,22,157,14,198,23,196,1,11,192,26,8,2,49,202,203,204, +205,206,23,15,248,22,75,203,200,192,26,8,2,49,202,203,204,205,206,23,15, +248,22,75,203,11,26,8,2,49,201,202,203,204,205,206,248,22,75,202,11,87, +95,28,28,248,22,140,14,23,194,2,10,28,248,22,139,14,23,194,2,10,28, +248,22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14,23, +194,2,11,12,252,22,170,9,23,200,2,2,29,36,23,198,2,23,199,2,28, +28,248,22,188,6,23,195,2,10,248,22,177,7,23,195,2,87,94,23,194,1, +12,252,22,170,9,23,200,2,2,30,37,23,198,2,23,199,1,91,159,39,11, +90,161,39,36,11,248,22,160,14,23,197,2,87,94,23,195,1,87,94,28,192, +12,250,22,171,9,23,201,1,2,31,23,199,1,249,22,7,194,195,91,159,38, +11,90,161,38,36,11,87,95,28,28,248,22,140,14,23,196,2,10,28,248,22, +139,14,23,196,2,10,28,248,22,188,6,23,196,2,28,248,22,161,14,23,196, +2,10,248,22,162,14,23,196,2,11,12,252,22,170,9,2,11,2,29,36,23, +200,2,23,201,2,28,28,248,22,188,6,23,197,2,10,248,22,177,7,23,197, +2,12,252,22,170,9,2,11,2,30,37,23,200,2,23,201,2,91,159,39,11, +90,161,39,36,11,248,22,160,14,23,199,2,87,94,23,195,1,87,94,28,192, +12,250,22,171,9,2,11,2,31,23,201,2,249,22,7,194,195,27,249,22,149, +14,250,22,137,15,0,20,35,114,120,35,34,40,63,58,91,46,93,91,94,46, +93,42,124,41,36,34,248,22,145,14,23,201,1,28,248,22,188,6,23,203,2, +249,22,139,8,23,204,1,8,63,23,202,1,28,248,22,140,14,23,199,2,248, +22,141,14,23,199,1,87,94,23,198,1,247,22,142,14,28,248,22,139,14,194, +249,22,157,14,195,194,192,91,159,38,11,90,161,38,36,11,87,95,28,28,248, +22,140,14,23,196,2,10,28,248,22,139,14,23,196,2,10,28,248,22,188,6, +23,196,2,28,248,22,161,14,23,196,2,10,248,22,162,14,23,196,2,11,12, +252,22,170,9,2,12,2,29,36,23,200,2,23,201,2,28,28,248,22,188,6, +23,197,2,10,248,22,177,7,23,197,2,12,252,22,170,9,2,12,2,30,37, +23,200,2,23,201,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,199, +2,87,94,23,195,1,87,94,28,192,12,250,22,171,9,2,12,2,31,23,201, +2,249,22,7,194,195,27,249,22,149,14,249,22,189,7,250,22,138,15,0,9, +35,114,120,35,34,91,46,93,34,248,22,145,14,23,203,1,6,1,1,95,28, +248,22,188,6,23,202,2,249,22,139,8,23,203,1,8,63,23,201,1,28,248, +22,140,14,23,199,2,248,22,141,14,23,199,1,87,94,23,198,1,247,22,142, +14,28,248,22,139,14,194,249,22,157,14,195,194,192,249,247,22,153,5,194,11, +249,80,159,38,48,37,9,9,249,80,159,38,48,37,195,9,27,247,22,183,14, +249,80,158,39,49,28,23,195,2,27,248,22,144,8,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,23,196,1, +250,22,157,14,248,22,179,14,69,97,100,100,111,110,45,100,105,114,247,22,142, +8,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,42,54,37,250, +22,87,23,203,1,248,22,83,248,22,179,14,72,99,111,108,108,101,99,116,115, +45,100,105,114,23,204,1,28,193,249,22,73,195,194,192,32,59,89,162,8,44, +39,8,29,2,20,222,33,61,0,8,35,114,120,35,34,92,34,34,27,249,22, +190,14,23,197,2,23,198,2,28,23,193,2,87,94,23,196,1,27,248,22,98, +23,195,2,27,27,248,22,107,23,197,1,27,249,22,190,14,23,201,2,23,196, +2,28,23,193,2,87,94,23,194,1,27,248,22,98,23,195,2,27,27,248,22, +107,23,197,1,27,249,22,190,14,23,205,2,23,196,2,28,23,193,2,87,94, +23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249,22, +190,14,23,209,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,98, +23,195,2,27,250,2,59,23,211,2,23,212,1,248,22,107,23,199,1,28,249, +22,185,7,23,196,2,2,32,249,22,87,23,210,2,194,249,22,73,248,22,148, +14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1, +2,33,23,197,1,194,87,95,23,207,1,23,193,1,28,249,22,185,7,23,196, +2,2,32,249,22,87,23,208,2,9,249,22,73,248,22,148,14,28,249,22,134, +9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197,1, +9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,206,2,194,249,22,73, +248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60, +23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23,196, +2,2,32,249,22,87,23,204,2,9,249,22,73,248,22,148,14,28,249,22,134, +9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197,1, +9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,202,2,194,249,22,73, +248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60, +23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23,196, +2,2,32,249,22,87,23,200,2,9,249,22,73,248,22,148,14,28,249,22,134, +9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197,1, +9,28,249,22,185,7,23,196,2,2,32,249,22,87,197,194,87,94,23,196,1, +249,22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138, +15,2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185, +7,23,198,2,2,32,249,22,87,195,9,87,94,23,194,1,249,22,73,248,22, +148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,202, +1,2,33,23,199,1,9,87,95,28,28,248,22,177,7,23,195,2,10,248,22, +188,6,23,195,2,12,250,22,170,9,2,15,6,21,21,98,121,116,101,32,115, +116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,23,197,2,28,28,248, +22,82,23,196,2,249,22,4,22,139,14,23,197,2,11,12,250,22,170,9,2, +15,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,23,198,2,27, +28,248,22,188,6,23,196,2,248,22,138,8,23,196,1,23,195,1,27,249,22, +190,14,23,197,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,98, +23,195,2,27,27,248,22,107,23,197,1,27,249,22,190,14,23,201,2,23,196, +2,28,23,193,2,87,94,23,194,1,27,248,22,98,23,195,2,27,27,248,22, +107,23,197,1,27,249,22,190,14,23,205,2,23,196,2,28,23,193,2,87,94, +23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249,22, +190,14,23,209,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,98, +23,195,2,27,250,2,59,23,214,2,23,212,1,248,22,107,23,199,1,28,249, +22,185,7,23,196,2,2,32,249,22,87,23,213,2,194,249,22,73,248,22,148, +14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1, +2,33,23,197,1,194,87,95,23,207,1,23,193,1,28,249,22,185,7,23,196, +2,2,32,249,22,87,23,211,2,9,249,22,73,248,22,148,14,28,249,22,134, +9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197,1, +9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,209,2,194,249,22,73, +248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60, +23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23,196, +2,2,32,249,22,87,23,207,2,9,249,22,73,248,22,148,14,28,249,22,134, +9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197,1, +9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,205,2,194,249,22,73, +248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60, +23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23,196, +2,2,32,249,22,87,23,203,2,9,249,22,73,248,22,148,14,28,249,22,134, +9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197,1, +9,28,249,22,185,7,23,196,2,2,32,249,22,87,200,194,87,94,23,199,1, +249,22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138, +15,2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185, +7,23,196,2,2,32,249,22,87,198,9,87,94,23,197,1,249,22,73,248,22, 148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200, -1,2,33,23,197,1,194,87,95,23,207,1,23,193,1,28,249,22,185,7,23, -196,2,2,32,249,22,87,23,208,2,9,249,22,73,248,22,148,14,28,249,22, -134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, -1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,206,2,194,249,22, -73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2, -60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23, -196,2,2,32,249,22,87,23,204,2,9,249,22,73,248,22,148,14,28,249,22, -134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, -1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,202,2,194,249,22, -73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2, -60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23, -196,2,2,32,249,22,87,23,200,2,9,249,22,73,248,22,148,14,28,249,22, -134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, -1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,197,194,87,94,23,196, -1,249,22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22, -138,15,2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22, -185,7,23,198,2,2,32,249,22,87,195,9,87,94,23,194,1,249,22,73,248, -22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23, -202,1,2,33,23,199,1,9,87,95,28,28,248,22,177,7,23,195,2,10,248, -22,188,6,23,195,2,12,250,22,170,9,2,15,6,21,21,98,121,116,101,32, -115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,23,197,2,28,28, -248,22,82,23,196,2,249,22,4,22,139,14,23,197,2,11,12,250,22,170,9, -2,15,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,23,198,2, -27,28,248,22,188,6,23,196,2,248,22,138,8,23,196,1,23,195,1,27,249, -22,190,14,23,197,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22, -98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,190,14,23,201,2,23, -196,2,28,23,193,2,87,94,23,194,1,27,248,22,98,23,195,2,27,27,248, -22,107,23,197,1,27,249,22,190,14,23,205,2,23,196,2,28,23,193,2,87, -94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249, -22,190,14,23,209,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22, -98,23,195,2,27,250,2,59,23,214,2,23,212,1,248,22,107,23,199,1,28, -249,22,185,7,23,196,2,2,32,249,22,87,23,213,2,194,249,22,73,248,22, -148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200, -1,2,33,23,197,1,194,87,95,23,207,1,23,193,1,28,249,22,185,7,23, -196,2,2,32,249,22,87,23,211,2,9,249,22,73,248,22,148,14,28,249,22, -134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, -1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,209,2,194,249,22, -73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2, -60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23, -196,2,2,32,249,22,87,23,207,2,9,249,22,73,248,22,148,14,28,249,22, -134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, -1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,205,2,194,249,22, -73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2, -60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23, -196,2,2,32,249,22,87,23,203,2,9,249,22,73,248,22,148,14,28,249,22, -134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, -1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,200,194,87,94,23,199, -1,249,22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22, -138,15,2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22, -185,7,23,196,2,2,32,249,22,87,198,9,87,94,23,197,1,249,22,73,248, -22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23, -200,1,2,33,23,197,1,9,32,63,89,162,8,44,39,53,70,102,111,117,110, -100,45,101,120,101,99,222,33,66,32,64,89,162,8,44,40,58,64,110,101,120, -116,222,33,65,27,248,22,165,14,23,196,2,28,249,22,136,9,23,195,2,23, -197,1,11,28,248,22,161,14,23,194,2,27,249,22,157,14,23,197,1,23,196, -1,28,23,197,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,197,2, -87,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,165,14,23,199,2, -28,249,22,136,9,23,195,2,23,200,2,11,28,248,22,161,14,23,194,2,250, -2,63,23,205,2,23,206,2,249,22,157,14,23,200,2,23,198,1,250,2,63, -23,205,2,23,206,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27, -28,248,22,139,14,23,196,2,27,249,22,157,14,23,198,2,23,205,2,28,28, -248,22,152,14,193,10,248,22,151,14,193,192,11,11,28,23,193,2,192,87,94, -23,193,1,28,23,203,2,11,27,248,22,165,14,23,200,2,28,249,22,136,9, -23,195,2,23,201,1,11,28,248,22,161,14,23,194,2,250,2,63,23,206,1, -23,207,1,249,22,157,14,23,201,1,23,198,1,250,2,63,205,206,195,192,87, -94,23,194,1,28,23,196,2,91,159,39,11,90,161,39,36,11,248,22,160,14, -23,197,2,87,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,165,14, -23,199,2,28,249,22,136,9,23,195,2,23,200,2,11,28,248,22,161,14,23, -194,2,250,2,63,23,204,2,23,205,2,249,22,157,14,23,200,2,23,198,1, -250,2,63,23,204,2,23,205,2,23,196,1,11,28,23,193,2,192,87,94,23, -193,1,27,28,248,22,139,14,23,196,2,27,249,22,157,14,23,198,2,23,204, -2,28,28,248,22,152,14,193,10,248,22,151,14,193,192,11,11,28,23,193,2, -192,87,94,23,193,1,28,23,202,2,11,27,248,22,165,14,23,200,2,28,249, -22,136,9,23,195,2,23,201,1,11,28,248,22,161,14,23,194,2,250,2,63, -23,205,1,23,206,1,249,22,157,14,23,201,1,23,198,1,250,2,63,204,205, -195,192,28,23,193,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,199, -2,87,95,23,195,1,23,194,1,27,28,23,198,2,251,2,64,23,198,2,23, -203,2,23,201,2,23,202,2,11,28,23,193,2,192,87,94,23,193,1,27,28, -248,22,139,14,195,27,249,22,157,14,197,200,28,28,248,22,152,14,193,10,248, -22,151,14,193,192,11,11,28,192,192,28,198,11,251,2,64,198,203,201,202,194, -32,67,89,162,8,44,40,8,31,2,20,222,33,68,28,248,22,81,23,197,2, -11,27,248,22,164,14,248,22,74,23,199,2,27,249,22,157,14,23,196,1,23, -197,2,28,248,22,151,14,23,194,2,250,2,63,198,199,195,87,94,23,193,1, -27,248,22,75,23,200,1,28,248,22,81,23,194,2,11,27,248,22,164,14,248, -22,74,23,196,2,27,249,22,157,14,23,196,1,23,200,2,28,248,22,151,14, -23,194,2,250,2,63,201,202,195,87,94,23,193,1,27,248,22,75,23,197,1, -28,248,22,81,23,194,2,11,27,248,22,164,14,248,22,74,23,196,2,27,249, -22,157,14,23,196,1,23,203,2,28,248,22,151,14,23,194,2,250,2,63,204, -205,195,87,94,23,193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2, -11,27,248,22,164,14,248,22,74,23,196,2,27,249,22,157,14,23,196,1,23, -206,2,28,248,22,151,14,23,194,2,250,2,63,23,15,23,16,195,87,94,23, -193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,164, -14,248,22,74,23,196,2,27,249,22,157,14,23,196,1,23,209,2,28,248,22, -151,14,23,194,2,250,2,63,23,18,23,19,195,87,94,23,193,1,27,248,22, -75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,164,14,248,22,74,195, -27,249,22,157,14,23,196,1,23,19,28,248,22,151,14,193,250,2,63,23,21, -23,22,195,251,2,67,23,21,23,22,23,23,248,22,75,199,87,95,28,28,248, -22,139,14,23,195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23, -195,2,10,248,22,162,14,23,195,2,11,12,250,22,170,9,2,16,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,23,197,2,28,28,23,195,2,28,28,248,22,139,14,23,196,2, -10,28,248,22,188,6,23,196,2,28,248,22,161,14,23,196,2,10,248,22,162, -14,23,196,2,11,248,22,161,14,23,196,2,11,10,12,250,22,170,9,2,16, -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,23,198,2,28,28,248,22,161,14,23, -195,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,198,2,249,22,134, -9,194,68,114,101,108,97,116,105,118,101,11,27,248,22,144,8,6,4,4,80, -65,84,72,27,28,23,194,2,27,249,80,159,41,49,38,23,197,1,9,28,249, -22,134,9,247,22,146,8,2,22,249,22,73,248,22,148,14,5,1,46,194,192, -87,94,23,194,1,9,28,248,22,81,23,194,2,11,27,248,22,164,14,248,22, +1,2,33,23,197,1,9,32,63,89,162,8,44,39,53,70,102,111,117,110,100, +45,101,120,101,99,222,33,66,32,64,89,162,8,44,40,58,64,110,101,120,116, +222,33,65,27,248,22,165,14,23,196,2,28,249,22,136,9,23,195,2,23,197, +1,11,28,248,22,161,14,23,194,2,27,249,22,157,14,23,197,1,23,196,1, +28,23,197,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,197,2,87, +95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,165,14,23,199,2,28, +249,22,136,9,23,195,2,23,200,2,11,28,248,22,161,14,23,194,2,250,2, +63,23,205,2,23,206,2,249,22,157,14,23,200,2,23,198,1,250,2,63,23, +205,2,23,206,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28, +248,22,139,14,23,196,2,27,249,22,157,14,23,198,2,23,205,2,28,28,248, +22,152,14,193,10,248,22,151,14,193,192,11,11,28,23,193,2,192,87,94,23, +193,1,28,23,203,2,11,27,248,22,165,14,23,200,2,28,249,22,136,9,23, +195,2,23,201,1,11,28,248,22,161,14,23,194,2,250,2,63,23,206,1,23, +207,1,249,22,157,14,23,201,1,23,198,1,250,2,63,205,206,195,192,87,94, +23,194,1,28,23,196,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23, +197,2,87,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,165,14,23, +199,2,28,249,22,136,9,23,195,2,23,200,2,11,28,248,22,161,14,23,194, +2,250,2,63,23,204,2,23,205,2,249,22,157,14,23,200,2,23,198,1,250, +2,63,23,204,2,23,205,2,23,196,1,11,28,23,193,2,192,87,94,23,193, +1,27,28,248,22,139,14,23,196,2,27,249,22,157,14,23,198,2,23,204,2, +28,28,248,22,152,14,193,10,248,22,151,14,193,192,11,11,28,23,193,2,192, +87,94,23,193,1,28,23,202,2,11,27,248,22,165,14,23,200,2,28,249,22, +136,9,23,195,2,23,201,1,11,28,248,22,161,14,23,194,2,250,2,63,23, +205,1,23,206,1,249,22,157,14,23,201,1,23,198,1,250,2,63,204,205,195, +192,28,23,193,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,199,2, +87,95,23,195,1,23,194,1,27,28,23,198,2,251,2,64,23,198,2,23,203, +2,23,201,2,23,202,2,11,28,23,193,2,192,87,94,23,193,1,27,28,248, +22,139,14,195,27,249,22,157,14,197,200,28,28,248,22,152,14,193,10,248,22, +151,14,193,192,11,11,28,192,192,28,198,11,251,2,64,198,203,201,202,194,32, +67,89,162,8,44,40,8,31,2,20,222,33,68,28,248,22,81,23,197,2,11, +27,248,22,164,14,248,22,74,23,199,2,27,249,22,157,14,23,196,1,23,197, +2,28,248,22,151,14,23,194,2,250,2,63,198,199,195,87,94,23,193,1,27, +248,22,75,23,200,1,28,248,22,81,23,194,2,11,27,248,22,164,14,248,22, 74,23,196,2,27,249,22,157,14,23,196,1,23,200,2,28,248,22,151,14,23, 194,2,250,2,63,201,202,195,87,94,23,193,1,27,248,22,75,23,197,1,28, 248,22,81,23,194,2,11,27,248,22,164,14,248,22,74,23,196,2,27,249,22, 157,14,23,196,1,23,203,2,28,248,22,151,14,23,194,2,250,2,63,204,205, 195,87,94,23,193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11, -27,248,22,164,14,248,22,74,195,27,249,22,157,14,23,196,1,205,28,248,22, -151,14,193,250,2,63,23,15,23,16,195,251,2,67,23,15,23,16,23,17,248, -22,75,199,27,248,22,164,14,23,196,1,28,248,22,151,14,193,250,2,63,198, -199,195,11,250,80,159,39,50,37,196,197,11,250,80,159,39,50,37,196,11,11, -87,94,249,22,177,6,247,22,149,5,195,248,22,139,6,249,22,128,4,36,249, -22,176,3,197,198,27,28,23,197,2,87,95,23,196,1,23,195,1,23,197,1, -87,94,23,197,1,27,248,22,179,14,2,21,27,249,80,159,41,50,37,23,196, -1,11,27,248,22,131,4,23,199,1,27,28,23,194,2,23,194,1,87,94,23, -194,1,36,27,248,22,131,4,23,202,1,27,28,23,194,2,23,194,1,87,94, -23,194,1,36,249,22,180,5,23,199,1,83,158,40,20,100,95,89,162,8,44, -36,48,9,224,4,2,33,72,23,195,1,23,197,1,27,248,22,165,5,23,195, -1,248,80,159,39,55,37,193,159,36,20,105,159,36,16,1,11,16,0,83,158, -42,20,103,145,2,1,2,1,29,11,11,11,11,11,10,43,80,158,36,36,20, -105,159,38,16,18,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,30,2,19,1,20, -112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,5, -30,2,19,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,16,0,16,0,36,16,0,36,16,4,2,6,2, -5,2,3,2,10,40,11,11,39,36,11,11,11,16,12,2,9,2,7,2,17, -2,8,2,16,2,14,2,13,2,4,2,12,2,15,2,11,2,2,16,12,11, -11,11,11,11,11,11,11,11,11,11,11,16,12,2,9,2,7,2,17,2,8, -2,16,2,14,2,13,2,4,2,12,2,15,2,11,2,2,48,48,37,11,11, -11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16,0,36,36, -16,0,16,18,83,158,36,16,2,89,162,8,44,37,51,2,20,223,0,33,34, -80,159,36,55,37,83,158,36,16,2,89,162,8,44,37,56,2,20,223,0,33, -35,80,159,36,54,37,83,158,36,16,2,32,0,89,162,44,37,45,2,2,222, -33,36,80,159,36,36,37,83,158,36,16,2,249,22,190,6,7,92,7,92,80, -159,36,37,37,83,158,36,16,2,89,162,44,37,54,2,4,223,0,33,37,80, -159,36,38,37,83,158,36,16,2,32,0,89,162,8,44,38,50,2,5,222,33, -38,80,159,36,39,37,83,158,36,16,2,32,0,89,162,8,44,39,51,2,6, -222,33,40,80,159,36,40,37,83,158,36,16,2,32,0,89,162,8,45,38,54, -2,7,222,33,44,80,159,36,41,37,83,158,36,16,2,32,0,89,162,45,39, -53,2,9,222,33,48,80,159,36,43,37,83,158,36,16,2,32,0,89,162,44, -41,59,2,8,222,33,51,80,159,36,42,37,83,158,36,16,2,32,0,89,162, -44,39,50,2,10,222,33,52,80,159,36,44,37,83,158,36,16,2,32,0,89, -162,44,38,53,2,11,222,33,53,80,159,36,45,37,83,158,36,16,2,32,0, -89,162,44,38,54,2,12,222,33,54,80,159,36,46,37,83,158,36,16,2,32, -0,89,162,44,37,44,2,13,222,33,55,80,159,36,47,37,83,158,36,16,2, -83,158,39,20,99,96,2,14,89,162,44,36,44,9,223,0,33,56,89,162,44, -37,45,9,223,0,33,57,89,162,44,38,55,9,223,0,33,58,80,159,36,48, -37,83,158,36,16,2,27,248,22,186,14,248,22,138,8,27,28,249,22,134,9, -247,22,146,8,2,22,6,1,1,59,6,1,1,58,250,22,172,7,6,14,14, -40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,89, -162,8,44,38,8,30,2,15,223,0,33,62,80,159,36,49,37,83,158,36,16, -2,83,158,39,20,99,96,2,16,89,162,8,44,39,8,24,9,223,0,33,69, -89,162,44,38,47,9,223,0,33,70,89,162,44,37,46,9,223,0,33,71,80, -159,36,50,37,83,158,36,16,2,89,162,8,44,39,54,2,17,223,0,33,73, -80,159,36,51,37,94,29,94,2,18,68,35,37,107,101,114,110,101,108,11,29, -94,2,18,69,35,37,109,105,110,45,115,116,120,11,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 8817); +27,248,22,164,14,248,22,74,23,196,2,27,249,22,157,14,23,196,1,23,206, +2,28,248,22,151,14,23,194,2,250,2,63,23,15,23,16,195,87,94,23,193, +1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,164,14, +248,22,74,23,196,2,27,249,22,157,14,23,196,1,23,209,2,28,248,22,151, +14,23,194,2,250,2,63,23,18,23,19,195,87,94,23,193,1,27,248,22,75, +23,197,1,28,248,22,81,23,194,2,11,27,248,22,164,14,248,22,74,195,27, +249,22,157,14,23,196,1,23,19,28,248,22,151,14,193,250,2,63,23,21,23, +22,195,251,2,67,23,21,23,22,23,23,248,22,75,199,87,95,28,28,248,22, +139,14,23,195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195, +2,10,248,22,162,14,23,195,2,11,12,250,22,170,9,2,16,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,23,197,2,28,28,23,195,2,28,28,248,22,139,14,23,196,2,10, +28,248,22,188,6,23,196,2,28,248,22,161,14,23,196,2,10,248,22,162,14, +23,196,2,11,248,22,161,14,23,196,2,11,10,12,250,22,170,9,2,16,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,23,198,2,28,28,248,22,161,14,23,195, +2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,198,2,249,22,134,9, +194,68,114,101,108,97,116,105,118,101,11,27,248,22,144,8,6,4,4,80,65, +84,72,27,28,23,194,2,27,249,80,159,41,49,38,23,197,1,9,28,249,22, +134,9,247,22,146,8,2,22,249,22,73,248,22,148,14,5,1,46,194,192,87, +94,23,194,1,9,28,248,22,81,23,194,2,11,27,248,22,164,14,248,22,74, +23,196,2,27,249,22,157,14,23,196,1,23,200,2,28,248,22,151,14,23,194, +2,250,2,63,201,202,195,87,94,23,193,1,27,248,22,75,23,197,1,28,248, +22,81,23,194,2,11,27,248,22,164,14,248,22,74,23,196,2,27,249,22,157, +14,23,196,1,23,203,2,28,248,22,151,14,23,194,2,250,2,63,204,205,195, +87,94,23,193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27, +248,22,164,14,248,22,74,195,27,249,22,157,14,23,196,1,205,28,248,22,151, +14,193,250,2,63,23,15,23,16,195,251,2,67,23,15,23,16,23,17,248,22, +75,199,27,248,22,164,14,23,196,1,28,248,22,151,14,193,250,2,63,198,199, +195,11,250,80,159,39,50,37,196,197,11,250,80,159,39,50,37,196,11,11,87, +94,249,22,177,6,247,22,149,5,195,248,22,139,6,249,22,128,4,36,249,22, +176,3,197,198,27,28,23,197,2,87,95,23,196,1,23,195,1,23,197,1,87, +94,23,197,1,27,248,22,179,14,2,21,27,249,80,159,41,50,37,23,196,1, +11,27,248,22,131,4,23,199,1,27,28,23,194,2,23,194,1,87,94,23,194, +1,36,27,248,22,131,4,23,202,1,27,28,23,194,2,23,194,1,87,94,23, +194,1,36,249,22,180,5,23,199,1,83,158,40,20,100,95,89,162,8,44,36, +48,9,224,4,2,33,72,23,195,1,23,197,1,27,248,22,165,5,23,195,1, +248,80,159,39,55,37,193,159,36,20,105,159,36,16,1,11,16,0,83,158,42, +20,103,145,2,1,2,1,29,11,11,11,11,11,10,43,80,158,36,36,20,105, +159,38,16,18,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,30,2,19,1,20,112, +97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,5,30, +2,19,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,16,0,16,0,36,16,0,36,16,4,2,6,2,5, +2,3,2,10,40,11,11,39,36,11,11,11,16,12,2,9,2,7,2,17,2, +8,2,16,2,14,2,13,2,4,2,12,2,15,2,11,2,2,16,12,11,11, +11,11,11,11,11,11,11,11,11,11,16,12,2,9,2,7,2,17,2,8,2, +16,2,14,2,13,2,4,2,12,2,15,2,11,2,2,48,48,37,11,11,11, +16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16,0,36,36,16, +0,16,18,83,158,36,16,2,89,162,8,44,37,51,2,20,223,0,33,34,80, +159,36,55,37,83,158,36,16,2,89,162,8,44,37,56,2,20,223,0,33,35, +80,159,36,54,37,83,158,36,16,2,32,0,89,162,44,37,45,2,2,222,33, +36,80,159,36,36,37,83,158,36,16,2,249,22,190,6,7,92,7,92,80,159, +36,37,37,83,158,36,16,2,89,162,44,37,54,2,4,223,0,33,37,80,159, +36,38,37,83,158,36,16,2,32,0,89,162,8,44,38,50,2,5,222,33,38, +80,159,36,39,37,83,158,36,16,2,32,0,89,162,8,44,39,51,2,6,222, +33,40,80,159,36,40,37,83,158,36,16,2,32,0,89,162,8,45,38,54,2, +7,222,33,44,80,159,36,41,37,83,158,36,16,2,32,0,89,162,45,39,53, +2,9,222,33,48,80,159,36,43,37,83,158,36,16,2,32,0,89,162,44,41, +59,2,8,222,33,51,80,159,36,42,37,83,158,36,16,2,32,0,89,162,44, +39,50,2,10,222,33,52,80,159,36,44,37,83,158,36,16,2,32,0,89,162, +44,38,53,2,11,222,33,53,80,159,36,45,37,83,158,36,16,2,32,0,89, +162,44,38,54,2,12,222,33,54,80,159,36,46,37,83,158,36,16,2,32,0, +89,162,44,37,44,2,13,222,33,55,80,159,36,47,37,83,158,36,16,2,83, +158,39,20,99,96,2,14,89,162,44,36,44,9,223,0,33,56,89,162,44,37, +45,9,223,0,33,57,89,162,44,38,55,9,223,0,33,58,80,159,36,48,37, +83,158,36,16,2,27,248,22,186,14,248,22,138,8,27,28,249,22,134,9,247, +22,146,8,2,22,6,1,1,59,6,1,1,58,250,22,172,7,6,14,14,40, +91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,89,162, +8,44,38,8,30,2,15,223,0,33,62,80,159,36,49,37,83,158,36,16,2, +83,158,39,20,99,96,2,16,89,162,8,44,39,8,24,9,223,0,33,69,89, +162,44,38,47,9,223,0,33,70,89,162,44,37,46,9,223,0,33,71,80,159, +36,50,37,83,158,36,16,2,89,162,8,44,39,54,2,17,223,0,33,73,80, +159,36,51,37,94,29,94,2,18,68,35,37,107,101,114,110,101,108,11,29,94, +2,18,69,35,37,109,105,110,45,115,116,120,11,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8837); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,54,12,0,0,0,1,0,0,15,0,40,0, -57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0,0,183, -1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115, -116,114,117,99,116,58,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101, -108,76,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,77,84,72, -45,112,108,97,99,101,45,99,104,97,110,110,101,108,63,1,20,84,72,45,112, -108,97,99,101,45,99,104,97,110,110,101,108,45,114,101,102,1,21,84,72,45, -112,108,97,99,101,45,99,104,97,110,110,101,108,45,115,101,116,33,79,84,72, -45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,105,110,1,20,84,72, -45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,111,117,116,249,80,158, -38,39,195,36,249,80,158,38,39,195,36,249,80,158,38,39,195,37,159,36,20, -105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,11, -11,11,11,10,45,80,158,36,36,20,105,159,36,16,7,2,2,2,3,2,4, -2,5,2,6,2,7,2,8,16,0,16,0,36,16,0,36,16,2,2,5,2, -6,38,11,11,39,36,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2, -16,5,11,11,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,41,41, -37,11,11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16, -0,36,36,16,0,16,2,83,158,36,16,6,253,22,167,10,2,3,11,38,36, -11,248,22,83,249,22,73,22,158,10,89,162,44,37,45,9,223,9,33,9,80, -159,36,36,37,80,159,36,37,37,80,159,36,38,37,80,159,36,39,37,80,159, -36,40,37,83,158,36,16,3,249,22,7,89,162,44,37,45,9,223,2,33,10, -89,162,44,37,45,9,223,2,33,11,80,159,36,41,37,80,159,36,42,37,93, -29,94,65,113,117,111,116,101,68,35,37,107,101,114,110,101,108,11,9,9,9, -36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 484); + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,55,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,12,0,0,0,1,0,0,15,0,40,0,57, +0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0,0,183,1, +0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115,116, +114,117,99,116,58,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108, +76,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,77,84,72,45, +112,108,97,99,101,45,99,104,97,110,110,101,108,63,1,20,84,72,45,112,108, +97,99,101,45,99,104,97,110,110,101,108,45,114,101,102,1,21,84,72,45,112, +108,97,99,101,45,99,104,97,110,110,101,108,45,115,101,116,33,79,84,72,45, +112,108,97,99,101,45,99,104,97,110,110,101,108,45,105,110,1,20,84,72,45, +112,108,97,99,101,45,99,104,97,110,110,101,108,45,111,117,116,249,80,158,38, +39,195,36,249,80,158,38,39,195,36,249,80,158,38,39,195,37,159,36,20,105, +159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,11,11, +11,11,10,45,80,158,36,36,20,105,159,36,16,7,2,2,2,3,2,4,2, +5,2,6,2,7,2,8,16,0,16,0,36,16,0,36,16,2,2,5,2,6, +38,11,11,39,36,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16, +5,11,11,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37, +11,11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16,0, +36,36,16,0,16,2,83,158,36,16,6,253,22,167,10,2,3,11,38,36,11, +248,22,83,249,22,73,22,158,10,89,162,44,37,45,9,223,9,33,9,80,159, +36,36,37,80,159,36,37,37,80,159,36,38,37,80,159,36,39,37,80,159,36, +40,37,83,158,36,16,3,249,22,7,89,162,44,37,45,9,223,2,33,10,89, +162,44,37,45,9,223,2,33,11,80,159,36,41,37,80,159,36,42,37,93,29, +94,65,113,117,111,116,101,68,35,37,107,101,114,110,101,108,11,9,9,9,36, +0}; + EVAL_ONE_SIZED_STR((char *)expr, 504); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,54,74,0,0,0,1,0,0,7,0,18,0, -45,0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,162,0,180,0,200, -0,212,0,228,0,251,0,7,1,38,1,45,1,50,1,55,1,60,1,65,1, -70,1,79,1,84,1,88,1,94,1,101,1,107,1,115,1,124,1,145,1,166, -1,196,1,226,1,27,2,84,2,132,2,180,2,110,8,129,8,142,8,44,9, -57,9,243,10,81,13,204,13,210,13,224,13,237,13,79,15,92,15,211,15,224, -15,66,17,79,17,198,17,225,17,238,17,251,17,93,19,106,19,225,19,238,19, -101,20,109,20,196,20,198,20,11,21,57,29,109,29,132,29,0,0,41,32,0, -0,66,35,37,98,111,111,116,70,100,108,108,45,115,117,102,102,105,120,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,65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105,108, -115,11,68,35,37,112,97,114,97,109,122,29,94,2,4,2,6,11,1,20,112, -97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,1,20, -100,101,102,97,117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100,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,79,45,108,111,97,100,105,110, -103,45,112,114,111,109,112,116,45,116,97,103,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,21, -115,112,108,105,116,45,114,101,108,97,116,105,118,101,45,115,116,114,105,110,103, -71,111,114,105,103,45,112,97,114,97,109,122,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,29,94,2,4,2,6,11,64,98,111,111,116,64,115,101,97,108,64,115,97, -109,101,5,3,46,122,111,5,3,46,122,111,6,6,6,110,97,116,105,118,101, -64,108,111,111,112,63,108,105,98,6,3,3,46,115,115,6,4,4,46,114,107, -116,5,4,46,114,107,116,67,105,103,110,111,114,101,100,249,22,14,195,80,159, -38,46,38,250,22,157,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198, -1,2,23,250,22,157,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198, -1,2,24,252,22,157,14,23,199,1,23,201,1,2,25,247,22,147,8,249,80, -159,45,39,38,23,200,1,80,159,45,36,38,252,22,157,14,23,199,1,23,201, -1,2,25,247,22,147,8,249,80,159,45,39,38,23,200,1,80,159,45,36,38, -27,252,22,157,14,23,200,1,23,202,1,2,25,247,22,147,8,249,80,159,46, -39,38,23,201,1,80,159,46,36,38,27,250,22,174,14,196,11,32,0,89,162, -8,44,36,41,9,222,11,28,192,249,22,73,195,194,11,27,252,22,157,14,23, -200,1,23,202,1,2,25,247,22,147,8,249,80,159,46,39,38,23,201,1,80, -159,46,36,38,27,250,22,174,14,196,11,32,0,89,162,8,44,36,41,9,222, -11,28,192,249,22,73,195,194,11,27,250,22,157,14,23,198,1,23,200,1,249, -80,159,44,39,38,23,199,1,2,23,27,250,22,174,14,196,11,32,0,89,162, -8,44,36,41,9,222,11,28,192,249,22,73,195,194,11,27,250,22,157,14,23, -198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,174,14, -196,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,73,195,194,11, -87,94,28,248,80,159,37,38,38,23,195,2,12,250,22,170,9,77,108,111,97, -100,47,117,115,101,45,99,111,109,112,105,108,101,100,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, -23,197,2,91,159,46,11,90,161,37,36,11,28,248,22,163,14,23,205,2,23, -204,2,27,247,22,154,5,28,23,193,2,249,22,164,14,23,207,2,23,195,1, -23,205,2,90,161,39,37,11,248,22,160,14,23,205,1,87,94,23,196,1,90, -161,38,40,11,28,23,205,2,27,248,22,144,14,23,197,2,27,248,22,182,7, -23,195,2,28,28,249,22,188,3,23,195,2,40,249,22,185,7,5,4,46,114, -107,116,249,22,188,7,23,198,2,249,22,176,3,23,199,2,40,11,249,22,7, -23,199,2,248,22,148,14,249,22,189,7,250,22,188,7,23,202,1,36,249,22, -176,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,22,7, -23,197,2,11,90,161,37,42,11,28,249,22,134,9,23,199,2,23,197,2,23, -193,2,249,22,157,14,23,196,2,23,199,2,90,161,37,43,11,28,23,198,2, -28,249,22,134,9,23,200,2,23,197,1,23,193,1,87,94,23,193,1,249,22, -157,14,23,196,2,23,200,2,87,94,23,195,1,11,90,161,37,44,11,28,249, -22,134,9,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1,2, -22,23,194,1,90,161,37,45,11,247,22,182,14,27,250,22,174,14,23,203,2, -11,32,0,89,162,8,44,36,41,9,222,11,27,28,23,194,2,249,22,73,23, -203,2,23,196,1,87,94,23,194,1,11,27,28,23,203,2,28,23,194,2,11, -27,250,22,174,14,23,207,2,11,32,0,89,162,8,44,36,41,9,222,11,28, -192,249,22,73,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23,194,2, -27,89,162,44,37,50,62,122,111,225,15,13,9,33,33,27,89,162,44,37,50, -66,97,108,116,45,122,111,225,16,14,11,33,34,27,89,162,44,37,52,9,225, -17,15,11,33,35,27,89,162,44,37,52,9,225,18,16,13,33,36,27,28,23, -200,2,23,200,2,248,22,132,9,23,200,2,27,28,23,208,2,28,23,200,2, -87,94,23,201,1,23,200,2,248,22,132,9,23,202,1,11,27,28,23,195,2, -28,23,197,1,27,249,22,5,89,162,8,44,37,53,9,225,24,22,18,33,37, -23,216,2,27,28,23,202,2,11,193,28,192,192,28,193,28,23,202,2,28,249, -22,188,3,248,22,75,196,248,22,75,23,205,2,193,11,11,11,11,87,94,23, -197,1,11,28,23,193,2,87,105,23,213,1,23,211,1,23,210,1,23,209,1, -23,208,1,23,201,1,23,200,1,23,199,1,23,198,1,23,196,1,23,195,1, -23,194,1,20,14,159,80,159,57,40,38,250,80,159,8,24,41,38,249,22,27, -11,80,159,8,26,40,38,22,176,4,11,20,14,159,80,159,57,40,38,250,80, -159,8,24,41,38,249,22,27,11,80,159,8,26,40,38,22,154,5,28,248,22, -139,14,23,216,2,23,215,1,87,94,23,215,1,247,22,180,14,249,247,22,185, -14,248,22,74,195,23,25,87,94,23,193,1,27,28,23,195,2,28,23,197,1, -27,249,22,5,89,162,8,44,37,53,9,225,25,23,20,33,38,23,217,2,27, -28,23,204,2,11,193,28,192,192,28,193,28,203,28,249,22,188,3,248,22,75, -196,248,22,75,206,193,11,11,11,11,87,94,23,197,1,11,28,23,193,2,87, -102,23,214,1,23,211,1,23,210,1,23,209,1,23,201,1,23,200,1,23,199, -1,23,196,1,23,195,1,20,14,159,80,159,58,40,38,250,80,159,8,25,41, -38,249,22,27,11,80,159,8,27,40,38,22,176,4,23,215,1,20,14,159,80, -159,58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40,38, -22,154,5,28,248,22,139,14,23,217,2,23,216,1,87,94,23,216,1,247,22, -180,14,249,247,22,185,14,248,22,74,195,23,26,87,94,23,193,1,27,28,23, -197,2,28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37, -51,9,225,26,24,20,33,39,23,213,1,23,218,2,27,28,23,204,2,11,193, -28,192,192,28,193,28,23,204,2,28,249,22,188,3,248,22,75,196,248,22,75, -23,207,2,193,11,11,11,87,94,23,210,1,11,87,94,23,201,1,11,28,23, -193,2,87,101,23,215,1,23,213,1,23,212,1,23,211,1,23,202,1,23,200, -1,23,197,1,23,196,1,20,14,159,80,159,59,40,38,250,80,159,8,26,41, -38,249,22,27,11,80,159,8,28,40,38,22,176,4,11,20,14,159,80,159,59, -40,38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40,38,22,154, -5,28,248,22,139,14,23,218,2,23,217,1,87,94,23,217,1,247,22,180,14, -249,247,22,152,5,248,22,74,195,23,27,87,94,23,193,1,27,28,23,197,1, -28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37,51,9, -225,27,25,22,33,40,23,215,1,23,219,1,27,28,23,205,2,11,193,28,192, -192,28,193,28,204,28,249,22,188,3,248,22,75,196,248,22,75,23,15,193,11, -11,11,87,95,23,216,1,23,212,1,11,87,94,23,201,1,11,28,23,193,2, -87,95,23,213,1,23,198,1,20,14,159,80,159,8,24,40,38,250,80,159,8, -27,41,38,249,22,27,11,80,159,8,29,40,38,22,176,4,23,217,1,20,14, -159,80,159,8,24,40,38,250,80,159,8,27,41,38,249,22,27,11,80,159,8, -29,40,38,22,154,5,28,248,22,139,14,23,219,2,23,218,1,87,94,23,218, -1,247,22,180,14,249,247,22,152,5,248,22,74,195,23,28,87,94,23,193,1, -27,28,23,199,2,87,94,23,215,1,23,214,1,87,94,23,214,1,23,215,1, -20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27,11,80, -159,8,30,40,38,22,176,4,28,23,30,28,23,202,1,11,195,87,94,23,202, -1,11,20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27, -11,80,159,8,30,40,38,22,154,5,28,248,22,139,14,23,220,2,23,219,1, -87,94,23,219,1,247,22,180,14,249,247,22,152,5,194,23,29,0,17,35,114, -120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,43,89,162,8,44, -37,59,2,26,222,33,44,27,249,22,190,14,2,42,23,196,2,28,23,193,2, -87,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1, -27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, -73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42, -23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2, -27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2, -87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,43,248,22,107,23, -197,1,248,22,83,194,248,22,83,194,248,22,83,194,248,22,83,194,32,45,89, -162,44,37,8,40,2,26,222,33,46,28,248,22,81,248,22,75,23,195,2,249, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,55,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,74,0,0,0,1,0,0,7,0,18,0,45, +0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,162,0,180,0,200,0, +212,0,228,0,251,0,7,1,38,1,45,1,50,1,55,1,60,1,65,1,70, +1,79,1,84,1,88,1,94,1,101,1,107,1,115,1,124,1,145,1,166,1, +196,1,226,1,27,2,84,2,132,2,180,2,110,8,129,8,142,8,44,9,57, +9,243,10,81,13,204,13,210,13,224,13,237,13,79,15,92,15,211,15,224,15, +66,17,79,17,198,17,225,17,238,17,251,17,93,19,106,19,225,19,238,19,101, +20,109,20,196,20,198,20,11,21,57,29,109,29,132,29,0,0,41,32,0,0, +66,35,37,98,111,111,116,70,100,108,108,45,115,117,102,102,105,120,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,65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105,108,115, +11,68,35,37,112,97,114,97,109,122,29,94,2,4,2,6,11,1,20,112,97, +114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,1,20,100, +101,102,97,117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100,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,79,45,108,111,97,100,105,110,103, +45,112,114,111,109,112,116,45,116,97,103,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,21,115, +112,108,105,116,45,114,101,108,97,116,105,118,101,45,115,116,114,105,110,103,71, +111,114,105,103,45,112,97,114,97,109,122,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, +29,94,2,4,2,6,11,64,98,111,111,116,64,115,101,97,108,64,115,97,109, +101,5,3,46,122,111,5,3,46,122,111,6,6,6,110,97,116,105,118,101,64, +108,111,111,112,63,108,105,98,6,3,3,46,115,115,6,4,4,46,114,107,116, +5,4,46,114,107,116,67,105,103,110,111,114,101,100,249,22,14,195,80,159,38, +46,38,250,22,157,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,1, +2,23,250,22,157,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198,1, +2,24,252,22,157,14,23,199,1,23,201,1,2,25,247,22,147,8,249,80,159, +45,39,38,23,200,1,80,159,45,36,38,252,22,157,14,23,199,1,23,201,1, +2,25,247,22,147,8,249,80,159,45,39,38,23,200,1,80,159,45,36,38,27, +252,22,157,14,23,200,1,23,202,1,2,25,247,22,147,8,249,80,159,46,39, +38,23,201,1,80,159,46,36,38,27,250,22,174,14,196,11,32,0,89,162,8, +44,36,41,9,222,11,28,192,249,22,73,195,194,11,27,252,22,157,14,23,200, +1,23,202,1,2,25,247,22,147,8,249,80,159,46,39,38,23,201,1,80,159, +46,36,38,27,250,22,174,14,196,11,32,0,89,162,8,44,36,41,9,222,11, +28,192,249,22,73,195,194,11,27,250,22,157,14,23,198,1,23,200,1,249,80, +159,44,39,38,23,199,1,2,23,27,250,22,174,14,196,11,32,0,89,162,8, +44,36,41,9,222,11,28,192,249,22,73,195,194,11,27,250,22,157,14,23,198, +1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,174,14,196, +11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,73,195,194,11,87, +94,28,248,80,159,37,38,38,23,195,2,12,250,22,170,9,77,108,111,97,100, +47,117,115,101,45,99,111,109,112,105,108,101,100,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,23, +197,2,91,159,46,11,90,161,37,36,11,28,248,22,163,14,23,205,2,23,204, +2,27,247,22,154,5,28,23,193,2,249,22,164,14,23,207,2,23,195,1,23, +205,2,90,161,39,37,11,248,22,160,14,23,205,1,87,94,23,196,1,90,161, +38,40,11,28,23,205,2,27,248,22,144,14,23,197,2,27,248,22,182,7,23, +195,2,28,28,249,22,188,3,23,195,2,40,249,22,185,7,5,4,46,114,107, +116,249,22,188,7,23,198,2,249,22,176,3,23,199,2,40,11,249,22,7,23, +199,2,248,22,148,14,249,22,189,7,250,22,188,7,23,202,1,36,249,22,176, +3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,22,7,23, +197,2,11,90,161,37,42,11,28,249,22,134,9,23,199,2,23,197,2,23,193, +2,249,22,157,14,23,196,2,23,199,2,90,161,37,43,11,28,23,198,2,28, +249,22,134,9,23,200,2,23,197,1,23,193,1,87,94,23,193,1,249,22,157, +14,23,196,2,23,200,2,87,94,23,195,1,11,90,161,37,44,11,28,249,22, +134,9,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1,2,22, +23,194,1,90,161,37,45,11,247,22,182,14,27,250,22,174,14,23,203,2,11, +32,0,89,162,8,44,36,41,9,222,11,27,28,23,194,2,249,22,73,23,203, +2,23,196,1,87,94,23,194,1,11,27,28,23,203,2,28,23,194,2,11,27, +250,22,174,14,23,207,2,11,32,0,89,162,8,44,36,41,9,222,11,28,192, +249,22,73,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23,194,2,27, +89,162,44,37,50,62,122,111,225,15,13,9,33,33,27,89,162,44,37,50,66, +97,108,116,45,122,111,225,16,14,11,33,34,27,89,162,44,37,52,9,225,17, +15,11,33,35,27,89,162,44,37,52,9,225,18,16,13,33,36,27,28,23,200, +2,23,200,2,248,22,132,9,23,200,2,27,28,23,208,2,28,23,200,2,87, +94,23,201,1,23,200,2,248,22,132,9,23,202,1,11,27,28,23,195,2,28, +23,197,1,27,249,22,5,89,162,8,44,37,53,9,225,24,22,18,33,37,23, +216,2,27,28,23,202,2,11,193,28,192,192,28,193,28,23,202,2,28,249,22, +188,3,248,22,75,196,248,22,75,23,205,2,193,11,11,11,11,87,94,23,197, +1,11,28,23,193,2,87,105,23,213,1,23,211,1,23,210,1,23,209,1,23, +208,1,23,201,1,23,200,1,23,199,1,23,198,1,23,196,1,23,195,1,23, +194,1,20,14,159,80,159,57,40,38,250,80,159,8,24,41,38,249,22,27,11, +80,159,8,26,40,38,22,176,4,11,20,14,159,80,159,57,40,38,250,80,159, +8,24,41,38,249,22,27,11,80,159,8,26,40,38,22,154,5,28,248,22,139, +14,23,216,2,23,215,1,87,94,23,215,1,247,22,180,14,249,247,22,185,14, +248,22,74,195,23,25,87,94,23,193,1,27,28,23,195,2,28,23,197,1,27, +249,22,5,89,162,8,44,37,53,9,225,25,23,20,33,38,23,217,2,27,28, +23,204,2,11,193,28,192,192,28,193,28,203,28,249,22,188,3,248,22,75,196, +248,22,75,206,193,11,11,11,11,87,94,23,197,1,11,28,23,193,2,87,102, +23,214,1,23,211,1,23,210,1,23,209,1,23,201,1,23,200,1,23,199,1, +23,196,1,23,195,1,20,14,159,80,159,58,40,38,250,80,159,8,25,41,38, +249,22,27,11,80,159,8,27,40,38,22,176,4,23,215,1,20,14,159,80,159, +58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40,38,22, +154,5,28,248,22,139,14,23,217,2,23,216,1,87,94,23,216,1,247,22,180, +14,249,247,22,185,14,248,22,74,195,23,26,87,94,23,193,1,27,28,23,197, +2,28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37,51, +9,225,26,24,20,33,39,23,213,1,23,218,2,27,28,23,204,2,11,193,28, +192,192,28,193,28,23,204,2,28,249,22,188,3,248,22,75,196,248,22,75,23, +207,2,193,11,11,11,87,94,23,210,1,11,87,94,23,201,1,11,28,23,193, +2,87,101,23,215,1,23,213,1,23,212,1,23,211,1,23,202,1,23,200,1, +23,197,1,23,196,1,20,14,159,80,159,59,40,38,250,80,159,8,26,41,38, +249,22,27,11,80,159,8,28,40,38,22,176,4,11,20,14,159,80,159,59,40, +38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40,38,22,154,5, +28,248,22,139,14,23,218,2,23,217,1,87,94,23,217,1,247,22,180,14,249, +247,22,152,5,248,22,74,195,23,27,87,94,23,193,1,27,28,23,197,1,28, +23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37,51,9,225, +27,25,22,33,40,23,215,1,23,219,1,27,28,23,205,2,11,193,28,192,192, +28,193,28,204,28,249,22,188,3,248,22,75,196,248,22,75,23,15,193,11,11, +11,87,95,23,216,1,23,212,1,11,87,94,23,201,1,11,28,23,193,2,87, +95,23,213,1,23,198,1,20,14,159,80,159,8,24,40,38,250,80,159,8,27, +41,38,249,22,27,11,80,159,8,29,40,38,22,176,4,23,217,1,20,14,159, +80,159,8,24,40,38,250,80,159,8,27,41,38,249,22,27,11,80,159,8,29, +40,38,22,154,5,28,248,22,139,14,23,219,2,23,218,1,87,94,23,218,1, +247,22,180,14,249,247,22,152,5,248,22,74,195,23,28,87,94,23,193,1,27, +28,23,199,2,87,94,23,215,1,23,214,1,87,94,23,214,1,23,215,1,20, +14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27,11,80,159, +8,30,40,38,22,176,4,28,23,30,28,23,202,1,11,195,87,94,23,202,1, +11,20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27,11, +80,159,8,30,40,38,22,154,5,28,248,22,139,14,23,220,2,23,219,1,87, +94,23,219,1,247,22,180,14,249,247,22,152,5,194,23,29,0,17,35,114,120, +34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,43,89,162,8,44,37, +59,2,26,222,33,44,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87, +94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27, +249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73, +248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23, +196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,27, +248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87, +94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,43,248,22,107,23,197, +1,248,22,83,194,248,22,83,194,248,22,83,194,248,22,83,194,32,45,89,162, +44,37,8,40,2,26,222,33,46,28,248,22,81,248,22,75,23,195,2,249,22, +7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28, +248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38,11, +90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2,249, 22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11, 28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38, 11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2, @@ -681,25 +688,25 @@ 159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23, 195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161, 38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197, -91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75, -23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90, -161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74, -197,91,159,38,11,90,161,38,36,11,248,2,45,248,22,75,198,249,22,7,249, -22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249, -22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200, -196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248, -22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249, -22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249, -22,7,249,22,73,248,22,74,200,196,195,27,27,249,22,190,14,2,42,23,197, -2,28,23,193,2,87,94,23,195,1,249,22,73,248,22,98,23,196,2,27,248, -22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94, -23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249, -22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248, -22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196, -2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2, -43,248,22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,248,22, -83,195,28,23,195,1,192,28,248,22,81,248,22,75,23,195,2,249,22,7,9, -248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248,22, +91,159,38,11,90,161,38,36,11,248,2,45,248,22,75,198,249,22,7,249,22, +73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22, +7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196, +195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22, +74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22, +73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22, +7,249,22,73,248,22,74,200,196,195,27,27,249,22,190,14,2,42,23,197,2, +28,23,193,2,87,94,23,195,1,249,22,73,248,22,98,23,196,2,27,248,22, +107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23, +194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22, +190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22, +98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2, +28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,43, +248,22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,248,22,83, +195,28,23,195,1,192,28,248,22,81,248,22,75,23,195,2,249,22,7,9,248, +22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248,22,81, +248,22,75,23,197,2,249,22,7,9,248,22,74,197,27,248,22,75,196,91,159, +38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9, +248,22,74,197,27,248,22,75,196,91,159,38,11,90,161,38,36,11,28,248,22, 81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,27,248,22,75,196,91, 159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7, 9,248,22,74,197,27,248,22,75,196,91,159,38,11,90,161,38,36,11,28,248, @@ -709,24 +716,24 @@ 248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,27,248,22,75, 196,91,159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249, 22,7,9,248,22,74,197,27,248,22,75,196,91,159,38,11,90,161,38,36,11, -28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,27,248,22, -75,196,91,159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2, -249,22,7,9,248,22,74,197,27,248,22,75,196,91,159,38,11,90,161,38,36, -11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159, -38,11,90,161,38,36,11,248,2,45,248,22,75,198,249,22,7,249,22,73,248, -22,74,201,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249, -22,73,248,22,74,202,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249, -22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22,73,248,22,74,202, -196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22,73,248, -22,74,202,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249, -22,73,248,22,74,200,196,195,87,95,28,248,22,130,5,195,12,250,22,170,9, -2,18,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45, -112,97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27, -250,22,153,2,80,159,41,43,38,248,22,151,15,247,22,181,12,11,27,28,23, -194,2,193,87,94,23,194,1,27,247,22,133,2,87,94,250,22,151,2,80,159, -43,43,38,248,22,151,15,247,22,181,12,195,192,250,22,151,2,195,199,66,97, -116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,169,9,11,196,195,248, -22,167,9,194,32,51,89,162,44,37,8,34,2,26,222,33,52,28,248,22,81, +28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38, +11,90,161,38,36,11,248,2,45,248,22,75,198,249,22,7,249,22,73,248,22, +74,201,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22, +73,248,22,74,202,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22, +7,249,22,73,248,22,74,202,196,195,249,22,7,249,22,73,248,22,74,202,196, +195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22,73,248,22, +74,202,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22, +73,248,22,74,200,196,195,87,95,28,248,22,130,5,195,12,250,22,170,9,2, +18,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112, +97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,250, +22,153,2,80,159,41,43,38,248,22,151,15,247,22,181,12,11,27,28,23,194, +2,193,87,94,23,194,1,27,247,22,133,2,87,94,250,22,151,2,80,159,43, +43,38,248,22,151,15,247,22,181,12,195,192,250,22,151,2,195,199,66,97,116, +116,97,99,104,251,211,197,198,199,10,28,192,250,22,169,9,11,196,195,248,22, +167,9,194,32,51,89,162,44,37,8,34,2,26,222,33,52,28,248,22,81,248, +22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38, +11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248, +22,74,197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81, 248,22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159, 38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9, 248,22,74,197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22, @@ -735,22 +742,22 @@ 9,248,22,74,197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248, 22,81,248,22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194, 91,159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22, -7,9,248,22,74,197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28, -248,22,81,248,22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75, -194,91,159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249, -22,7,9,248,22,74,197,91,159,38,11,90,161,38,36,11,248,2,51,248,22, -75,198,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248, -22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249, -22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249, -22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201, -196,195,249,22,7,249,22,73,248,22,74,200,196,195,32,53,89,162,8,44,37, -55,2,26,222,33,54,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87, -94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27, -249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73, -248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23, -196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248, -2,53,248,22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,32, -55,89,162,44,37,8,34,2,26,222,33,56,28,248,22,81,248,22,75,23,195, +7,9,248,22,74,197,91,159,38,11,90,161,38,36,11,248,2,51,248,22,75, +198,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22, +74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22, +73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22, +7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196, +195,249,22,7,249,22,73,248,22,74,200,196,195,32,53,89,162,8,44,37,55, +2,26,222,33,54,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94, +23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249, +22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248, +22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196, +2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2, +53,248,22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,32,55, +89,162,44,37,8,34,2,26,222,33,56,28,248,22,81,248,22,75,23,195,2, +249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36, +11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159, +38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195, 2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38, 36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91, 159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23, @@ -759,24 +766,24 @@ 91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75, 23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90, 161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74, -197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22, -75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11, -90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22, -74,197,91,159,38,11,90,161,38,36,11,248,2,55,248,22,75,198,249,22,7, -249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195, -249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74, -200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73, -248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7, -249,22,73,248,22,74,200,196,195,32,57,89,162,8,44,37,55,2,26,222,33, -58,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, -22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2, -42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196, -2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193, -2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,57,248,22,107, -23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,28,249,22,130,7,194, -6,1,1,46,2,22,28,249,22,130,7,194,6,2,2,46,46,62,117,112,192, -0,11,35,114,120,34,91,46,93,115,115,36,34,32,61,89,162,44,37,8,34, -2,26,222,33,62,28,248,22,81,248,22,75,23,195,2,249,22,7,9,248,22, +197,91,159,38,11,90,161,38,36,11,248,2,55,248,22,75,198,249,22,7,249, +22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249, +22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200, +196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248, +22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249, +22,73,248,22,74,200,196,195,32,57,89,162,8,44,37,55,2,26,222,33,58, +27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, +73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42, +23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2, +27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2, +87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,57,248,22,107,23, +197,1,248,22,83,194,248,22,83,194,248,22,83,194,28,249,22,130,7,194,6, +1,1,46,2,22,28,249,22,130,7,194,6,2,2,46,46,62,117,112,192,0, +11,35,114,120,34,91,46,93,115,115,36,34,32,61,89,162,44,37,8,34,2, +26,222,33,62,28,248,22,81,248,22,75,23,195,2,249,22,7,9,248,22,74, +195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248,22,81,248,22, +75,23,197,2,249,22,7,9,248,22,74,197,91,159,38,11,90,161,38,36,11, +27,248,22,75,198,28,248,22,81,248,22,75,23,195,2,249,22,7,9,248,22, 74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248,22,81,248, 22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38,11,90,161,38,36, 11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2,249,22,7,9,248, @@ -785,193 +792,191 @@ 36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2,249,22,7,9, 248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248,22, 81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38,11,90,161, -38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2,249,22,7, -9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248, -22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38,11,90, -161,38,36,11,248,2,61,248,22,75,198,249,22,7,249,22,73,248,22,74,201, -196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248, -22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249, -22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249, -22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200, -196,195,32,63,89,162,8,44,37,55,2,26,222,33,64,27,249,22,190,14,2, -42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196, -2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193, -2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197, -1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, -22,73,248,22,98,23,196,2,248,2,63,248,22,107,23,197,1,248,22,83,194, -248,22,83,194,248,22,83,194,32,65,89,162,8,44,37,55,2,26,222,33,66, -27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, -73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42, +38,36,11,248,2,61,248,22,75,198,249,22,7,249,22,73,248,22,74,201,196, +195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22, +74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22, +73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22, +7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196, +195,32,63,89,162,8,44,37,55,2,26,222,33,64,27,249,22,190,14,2,42, 23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2, 27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2, -87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,65,248,22,107,23, -197,1,248,22,83,194,248,22,83,194,248,22,83,194,27,248,2,65,23,195,1, -192,28,249,22,136,9,248,22,75,23,200,2,23,197,1,28,249,22,134,9,248, -22,74,23,200,2,23,196,1,251,22,167,9,2,18,6,28,28,99,121,99,108, -101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,46,115,58,32, -126,46,115,23,200,1,249,22,2,22,75,248,22,88,249,22,73,23,206,1,23, -202,1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,73,248,22,151,15, -247,22,181,12,23,197,1,20,14,159,80,159,40,40,38,250,80,159,43,41,38, -249,22,27,11,80,159,45,40,38,22,175,4,23,196,1,249,247,22,153,5,23, -198,1,248,22,61,248,22,143,14,23,198,1,87,94,28,28,248,22,139,14,23, -196,2,10,248,22,138,5,23,196,2,12,28,23,197,2,250,22,169,9,11,6, -15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250, -22,170,9,2,18,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111, -114,32,112,97,116,104,23,198,2,28,28,248,22,71,23,196,2,249,22,134,9, -248,22,74,23,198,2,2,4,11,248,22,131,5,248,22,98,196,28,28,248,22, -71,23,196,2,249,22,134,9,248,22,74,23,198,2,66,112,108,97,110,101,116, -11,87,94,28,207,12,20,14,159,80,159,37,52,38,80,158,37,50,90,161,37, -36,10,249,22,177,4,21,94,2,27,6,19,19,112,108,97,110,101,116,47,114, -101,115,111,108,118,101,114,46,114,107,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,252, -212,199,200,201,202,80,158,42,50,87,94,23,193,1,27,89,162,8,44,37,46, -79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223, -5,33,50,27,28,248,22,58,23,198,2,27,250,22,153,2,80,159,43,44,38, -249,22,73,23,203,2,247,22,181,14,11,28,23,193,2,192,87,94,23,193,1, -91,159,38,11,90,161,38,36,11,27,248,22,64,23,202,2,248,2,51,248,2, -53,23,195,1,27,28,248,22,81,23,195,2,6,8,8,109,97,105,110,46,114, -107,116,249,22,147,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159,49, -54,38,2,18,23,204,1,28,248,22,81,23,201,2,23,201,1,87,94,23,201, -1,248,22,74,23,201,2,28,248,22,81,23,201,2,87,94,23,200,1,9,248, -22,75,23,201,1,23,199,2,249,22,157,14,23,195,1,23,196,1,28,248,22, -188,6,23,198,2,87,94,23,194,1,27,28,23,199,2,28,249,22,134,9,23, -201,2,80,158,42,47,80,158,40,48,27,248,22,132,5,23,201,2,28,248,22, -139,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,197,1, -87,95,83,160,38,11,80,158,44,47,23,203,2,83,160,38,11,80,158,44,48, -192,192,11,11,27,28,23,194,2,23,194,1,87,94,23,194,1,27,247,22,154, -5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,27,250,22,153,2,80, -159,45,44,38,249,22,73,23,205,2,23,199,2,11,28,23,193,2,192,87,94, -23,193,1,91,159,38,11,90,161,38,36,11,248,2,55,248,2,57,23,204,2, -250,22,1,22,157,14,23,199,1,249,22,87,249,22,2,32,0,89,162,8,44, -37,44,9,222,33,59,23,200,1,248,22,83,27,248,22,191,6,23,202,2,28, -249,22,188,3,194,39,28,249,22,130,7,2,28,249,22,146,7,204,249,22,176, -3,198,39,249,22,147,7,250,22,146,7,205,36,249,22,176,3,199,39,2,29, -200,200,28,248,22,139,14,23,198,2,87,94,23,194,1,28,248,22,162,14,23, -198,2,27,248,22,166,14,23,199,2,91,159,39,11,90,161,39,36,11,248,22, -160,14,23,197,2,87,95,23,195,1,23,193,1,28,249,22,190,14,2,60,248, -22,144,14,23,197,1,249,80,159,45,53,38,23,198,1,2,30,195,248,22,83, -6,26,26,32,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,249,22,134,9,248,22,74,23,200,2,2,27, -27,250,22,153,2,80,159,43,44,38,249,22,73,23,203,2,247,22,181,14,11, -28,23,193,2,192,87,94,23,193,1,91,159,39,11,90,161,38,36,11,27,248, -22,98,23,203,2,248,2,61,248,2,63,23,195,1,90,161,37,38,11,28,248, -22,81,248,22,100,23,203,2,28,248,22,81,23,194,2,249,22,130,15,0,8, -35,114,120,34,91,46,93,34,23,196,2,11,10,27,28,23,196,2,27,248,22, -191,6,23,197,2,28,249,22,188,3,194,39,28,249,22,130,7,2,28,249,22, -146,7,23,200,2,249,22,176,3,198,39,249,22,147,7,250,22,146,7,23,201, -2,36,249,22,176,3,199,39,2,29,23,196,2,23,196,2,28,248,22,81,23, -195,2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,130,15,0,8,35, -114,120,34,91,46,93,34,23,197,2,27,248,22,191,6,23,197,2,28,249,22, -188,3,194,39,28,249,22,130,7,2,28,249,22,146,7,23,200,2,249,22,176, -3,198,39,249,22,147,7,250,22,146,7,23,201,2,36,249,22,176,3,199,39, -2,29,23,196,2,23,196,2,249,22,147,7,23,197,2,6,4,4,46,114,107, -116,27,28,23,197,1,87,94,23,196,1,249,22,87,28,248,22,81,248,22,100, -23,207,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,87,249,22,2, -32,0,89,162,8,44,37,44,9,222,33,67,248,22,100,23,210,2,23,197,1, -28,248,22,81,23,196,2,87,94,23,195,1,248,22,83,23,197,1,87,94,23, -196,1,23,195,1,27,252,80,159,51,54,38,2,18,23,206,1,248,22,74,23, -200,2,248,22,75,23,200,1,23,200,2,249,22,157,14,23,195,1,23,197,1, -28,249,22,134,9,248,22,74,23,200,2,64,102,105,108,101,27,248,22,166,14, -249,22,164,14,248,22,168,14,248,22,98,23,203,2,27,28,23,203,2,28,249, -22,134,9,23,205,2,80,158,46,47,80,158,44,48,27,248,22,132,5,23,205, -2,28,248,22,139,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,160, -14,23,197,1,87,95,83,160,38,11,80,158,48,47,23,207,2,83,160,38,11, -80,158,48,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22, -154,5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,91,159,39,11,90, -161,39,36,11,248,22,160,14,23,197,2,87,95,23,195,1,23,193,1,28,249, -22,190,14,2,60,248,22,144,14,23,197,1,249,80,159,45,53,38,23,198,1, -2,30,195,12,87,94,28,28,248,22,139,14,23,194,2,10,248,22,149,8,23, -194,2,87,94,23,199,1,12,28,23,199,2,250,22,169,9,67,114,101,113,117, -105,114,101,249,22,172,7,6,17,17,98,97,100,32,109,111,100,117,108,101,32, -112,97,116,104,126,97,28,23,198,2,248,22,74,23,199,2,6,0,0,23,202, -1,87,94,23,199,1,250,22,170,9,2,18,249,22,172,7,6,13,13,109,111, -100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,74,23,199,2, -6,0,0,23,200,2,27,28,248,22,149,8,23,195,2,249,22,154,8,23,196, -2,36,249,22,166,14,248,22,167,14,23,197,2,11,27,28,248,22,149,8,23, -196,2,249,22,154,8,23,197,2,37,248,80,159,42,55,38,23,195,2,91,159, -39,11,90,161,39,36,11,28,248,22,149,8,23,199,2,250,22,7,2,31,249, -22,154,8,23,203,2,38,2,31,248,22,160,14,23,198,2,87,95,23,195,1, -23,193,1,27,28,248,22,149,8,23,200,2,249,22,154,8,23,201,2,39,249, -80,159,47,53,38,23,197,2,5,0,27,28,248,22,149,8,23,201,2,249,22, -154,8,23,202,2,40,248,22,131,5,23,200,2,27,27,250,22,153,2,80,159, -51,43,38,248,22,151,15,247,22,181,12,11,28,23,193,2,192,87,94,23,193, -1,27,247,22,133,2,87,94,250,22,151,2,80,159,52,43,38,248,22,151,15, -247,22,181,12,195,192,87,95,28,23,208,1,27,250,22,153,2,23,197,2,197, -11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,51,46,38,80,159, -50,46,38,247,22,19,250,22,25,248,22,23,23,197,2,80,159,53,45,38,23, -196,1,27,248,22,151,15,247,22,181,12,249,22,3,83,158,40,20,100,94,89, -162,8,44,37,55,9,226,12,11,2,3,33,68,23,195,1,23,196,1,248,28, -248,22,17,80,159,50,46,38,32,0,89,162,44,37,42,9,222,33,69,80,159, -49,59,37,89,162,44,36,51,9,227,13,9,8,4,3,33,70,250,22,151,2, -23,197,1,197,10,12,28,28,248,22,149,8,23,202,1,11,28,248,22,188,6, -23,206,2,10,28,248,22,58,23,206,2,10,28,248,22,71,23,206,2,249,22, -134,9,248,22,74,23,208,2,2,27,11,250,22,151,2,80,159,50,44,38,28, -248,22,188,6,23,209,2,249,22,73,23,210,1,27,28,23,212,2,28,249,22, -134,9,23,214,2,80,158,55,47,87,94,23,212,1,80,158,53,48,27,248,22, -132,5,23,214,2,28,248,22,139,14,23,194,2,91,159,39,11,90,161,39,36, -11,248,22,160,14,23,197,1,87,95,83,160,38,11,80,158,57,47,23,23,83, -160,38,11,80,158,57,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1, -27,247,22,154,5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,249,22, -73,23,210,1,247,22,181,14,252,22,151,8,23,208,1,23,207,1,23,205,1, -23,203,1,201,12,193,87,96,83,160,38,11,80,158,36,50,248,80,159,37,58, -38,249,22,27,11,80,159,39,52,38,248,22,174,4,80,159,37,51,38,248,22, -153,5,80,159,37,37,37,248,22,172,13,80,159,37,42,37,83,160,38,11,80, -158,36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,52,38,159,36,20, -105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,11, -11,11,11,10,38,80,158,36,36,20,105,159,37,16,23,2,2,2,3,30,2, -5,72,112,97,116,104,45,115,116,114,105,110,103,63,11,30,2,5,75,112,97, -116,104,45,97,100,100,45,115,117,102,102,105,120,8,30,2,7,2,8,5,30, -2,7,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,2,9,2,10,2,11,2,12,2,13,2,14,2,15, -2,16,2,17,2,18,30,2,19,2,8,5,30,2,5,79,112,97,116,104,45, -114,101,112,108,97,99,101,45,115,117,102,102,105,120,10,30,2,5,73,102,105, -110,100,45,99,111,108,45,102,105,108,101,3,30,2,5,76,110,111,114,109,97, -108,45,99,97,115,101,45,112,97,116,104,7,2,20,2,21,30,2,19,74,114, -101,112,97,114,97,109,101,116,101,114,105,122,101,6,16,0,16,0,36,16,0, -36,16,11,2,12,2,13,2,10,2,11,2,14,2,15,2,3,2,9,2,2, -2,16,2,18,47,11,11,39,36,11,11,11,16,3,2,20,2,17,2,21,16, -3,11,11,11,16,3,2,20,2,17,2,21,39,39,37,11,11,11,16,0,16, -0,16,0,36,36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,15, -83,158,36,16,2,89,162,44,37,45,9,223,0,33,32,80,159,36,59,37,83, -158,36,16,2,248,22,146,8,69,115,111,45,115,117,102,102,105,120,80,159,36, -36,37,83,158,36,16,2,89,162,44,38,8,38,2,3,223,0,33,41,80,159, -36,37,37,83,158,36,16,2,32,0,89,162,8,44,37,42,2,9,222,192,80, -159,36,42,37,83,158,36,16,2,247,22,136,2,80,159,36,43,37,83,158,36, -16,2,247,22,135,2,80,159,36,44,37,83,158,36,16,2,247,22,69,80,159, -36,45,37,83,158,36,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111, -97,100,105,110,103,80,159,36,46,37,83,158,36,16,2,11,80,158,36,47,83, -158,36,16,2,11,80,158,36,48,83,158,36,16,2,32,0,89,162,44,38,8, -42,2,16,222,33,47,80,159,36,49,37,83,158,36,16,2,11,80,158,36,50, -83,158,36,16,2,91,159,38,10,90,161,37,36,10,11,90,161,37,37,10,83, -158,39,20,99,96,2,18,89,162,8,44,37,51,9,224,2,0,33,48,89,162, -44,39,49,9,223,1,33,49,89,162,44,40,8,32,9,224,2,0,33,71,208, -80,159,36,51,37,83,158,36,16,2,89,162,44,36,45,2,20,223,0,33,72, -80,159,36,56,37,83,158,36,16,2,89,162,8,44,36,45,2,21,223,0,33, -73,80,159,36,57,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11, -29,94,2,4,69,35,37,109,105,110,45,115,116,120,11,2,5,2,19,9,9, -9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 8402); +87,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1, +27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, +73,248,22,98,23,196,2,248,2,63,248,22,107,23,197,1,248,22,83,194,248, +22,83,194,248,22,83,194,32,65,89,162,8,44,37,55,2,26,222,33,66,27, +249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73, +248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23, +196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,27, +248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87, +94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,65,248,22,107,23,197, +1,248,22,83,194,248,22,83,194,248,22,83,194,27,248,2,65,23,195,1,192, +28,249,22,136,9,248,22,75,23,200,2,23,197,1,28,249,22,134,9,248,22, +74,23,200,2,23,196,1,251,22,167,9,2,18,6,28,28,99,121,99,108,101, +32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,46,115,58,32,126, +46,115,23,200,1,249,22,2,22,75,248,22,88,249,22,73,23,206,1,23,202, +1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,73,248,22,151,15,247, +22,181,12,23,197,1,20,14,159,80,159,40,40,38,250,80,159,43,41,38,249, +22,27,11,80,159,45,40,38,22,175,4,23,196,1,249,247,22,153,5,23,198, +1,248,22,61,248,22,143,14,23,198,1,87,94,28,28,248,22,139,14,23,196, +2,10,248,22,138,5,23,196,2,12,28,23,197,2,250,22,169,9,11,6,15, +15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22, +170,9,2,18,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111,114, +32,112,97,116,104,23,198,2,28,28,248,22,71,23,196,2,249,22,134,9,248, +22,74,23,198,2,2,4,11,248,22,131,5,248,22,98,196,28,28,248,22,71, +23,196,2,249,22,134,9,248,22,74,23,198,2,66,112,108,97,110,101,116,11, +87,94,28,207,12,20,14,159,80,159,37,52,38,80,158,37,50,90,161,37,36, +10,249,22,177,4,21,94,2,27,6,19,19,112,108,97,110,101,116,47,114,101, +115,111,108,118,101,114,46,114,107,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,252,212, +199,200,201,202,80,158,42,50,87,94,23,193,1,27,89,162,8,44,37,46,79, +115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,5, +33,50,27,28,248,22,58,23,198,2,27,250,22,153,2,80,159,43,44,38,249, +22,73,23,203,2,247,22,181,14,11,28,23,193,2,192,87,94,23,193,1,91, +159,38,11,90,161,38,36,11,27,248,22,64,23,202,2,248,2,51,248,2,53, +23,195,1,27,28,248,22,81,23,195,2,6,8,8,109,97,105,110,46,114,107, +116,249,22,147,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159,49,54, +38,2,18,23,204,1,28,248,22,81,23,201,2,23,201,1,87,94,23,201,1, +248,22,74,23,201,2,28,248,22,81,23,201,2,87,94,23,200,1,9,248,22, +75,23,201,1,23,199,2,249,22,157,14,23,195,1,23,196,1,28,248,22,188, +6,23,198,2,87,94,23,194,1,27,28,23,199,2,28,249,22,134,9,23,201, +2,80,158,42,47,80,158,40,48,27,248,22,132,5,23,201,2,28,248,22,139, +14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,197,1,87, +95,83,160,38,11,80,158,44,47,23,203,2,83,160,38,11,80,158,44,48,192, +192,11,11,27,28,23,194,2,23,194,1,87,94,23,194,1,27,247,22,154,5, +28,23,193,2,192,87,94,23,193,1,247,22,180,14,27,250,22,153,2,80,159, +45,44,38,249,22,73,23,205,2,23,199,2,11,28,23,193,2,192,87,94,23, +193,1,91,159,38,11,90,161,38,36,11,248,2,55,248,2,57,23,204,2,250, +22,1,22,157,14,23,199,1,249,22,87,249,22,2,32,0,89,162,8,44,37, +44,9,222,33,59,23,200,1,248,22,83,27,248,22,191,6,23,202,2,28,249, +22,188,3,194,39,28,249,22,130,7,2,28,249,22,146,7,204,249,22,176,3, +198,39,249,22,147,7,250,22,146,7,205,36,249,22,176,3,199,39,2,29,200, +200,28,248,22,139,14,23,198,2,87,94,23,194,1,28,248,22,162,14,23,198, +2,27,248,22,166,14,23,199,2,91,159,39,11,90,161,39,36,11,248,22,160, +14,23,197,2,87,95,23,195,1,23,193,1,28,249,22,190,14,2,60,248,22, +144,14,23,197,1,249,80,159,45,53,38,23,198,1,2,30,195,248,22,83,6, +26,26,32,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,249,22,134,9,248,22,74,23,200,2,2,27,27, +250,22,153,2,80,159,43,44,38,249,22,73,23,203,2,247,22,181,14,11,28, +23,193,2,192,87,94,23,193,1,91,159,39,11,90,161,38,36,11,27,248,22, +98,23,203,2,248,2,61,248,2,63,23,195,1,90,161,37,38,11,28,248,22, +81,248,22,100,23,203,2,28,248,22,81,23,194,2,249,22,130,15,0,8,35, +114,120,34,91,46,93,34,23,196,2,11,10,27,28,23,196,2,27,248,22,191, +6,23,197,2,28,249,22,188,3,194,39,28,249,22,130,7,2,28,249,22,146, +7,23,200,2,249,22,176,3,198,39,249,22,147,7,250,22,146,7,23,201,2, +36,249,22,176,3,199,39,2,29,23,196,2,23,196,2,28,248,22,81,23,195, +2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,130,15,0,8,35,114, +120,34,91,46,93,34,23,197,2,27,248,22,191,6,23,197,2,28,249,22,188, +3,194,39,28,249,22,130,7,2,28,249,22,146,7,23,200,2,249,22,176,3, +198,39,249,22,147,7,250,22,146,7,23,201,2,36,249,22,176,3,199,39,2, +29,23,196,2,23,196,2,249,22,147,7,23,197,2,6,4,4,46,114,107,116, +27,28,23,197,1,87,94,23,196,1,249,22,87,28,248,22,81,248,22,100,23, +207,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,87,249,22,2,32, +0,89,162,8,44,37,44,9,222,33,67,248,22,100,23,210,2,23,197,1,28, +248,22,81,23,196,2,87,94,23,195,1,248,22,83,23,197,1,87,94,23,196, +1,23,195,1,27,252,80,159,51,54,38,2,18,23,206,1,248,22,74,23,200, +2,248,22,75,23,200,1,23,200,2,249,22,157,14,23,195,1,23,197,1,28, +249,22,134,9,248,22,74,23,200,2,64,102,105,108,101,27,248,22,166,14,249, +22,164,14,248,22,168,14,248,22,98,23,203,2,27,28,23,203,2,28,249,22, +134,9,23,205,2,80,158,46,47,80,158,44,48,27,248,22,132,5,23,205,2, +28,248,22,139,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,160,14, +23,197,1,87,95,83,160,38,11,80,158,48,47,23,207,2,83,160,38,11,80, +158,48,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,154, +5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,91,159,39,11,90,161, +39,36,11,248,22,160,14,23,197,2,87,95,23,195,1,23,193,1,28,249,22, +190,14,2,60,248,22,144,14,23,197,1,249,80,159,45,53,38,23,198,1,2, +30,195,12,87,94,28,28,248,22,139,14,23,194,2,10,248,22,149,8,23,194, +2,87,94,23,199,1,12,28,23,199,2,250,22,169,9,67,114,101,113,117,105, +114,101,249,22,172,7,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112, +97,116,104,126,97,28,23,198,2,248,22,74,23,199,2,6,0,0,23,202,1, +87,94,23,199,1,250,22,170,9,2,18,249,22,172,7,6,13,13,109,111,100, +117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,74,23,199,2,6, +0,0,23,200,2,27,28,248,22,149,8,23,195,2,249,22,154,8,23,196,2, +36,249,22,166,14,248,22,167,14,23,197,2,11,27,28,248,22,149,8,23,196, +2,249,22,154,8,23,197,2,37,248,80,159,42,55,38,23,195,2,91,159,39, +11,90,161,39,36,11,28,248,22,149,8,23,199,2,250,22,7,2,31,249,22, +154,8,23,203,2,38,2,31,248,22,160,14,23,198,2,87,95,23,195,1,23, +193,1,27,28,248,22,149,8,23,200,2,249,22,154,8,23,201,2,39,249,80, +159,47,53,38,23,197,2,5,0,27,28,248,22,149,8,23,201,2,249,22,154, +8,23,202,2,40,248,22,131,5,23,200,2,27,27,250,22,153,2,80,159,51, +43,38,248,22,151,15,247,22,181,12,11,28,23,193,2,192,87,94,23,193,1, +27,247,22,133,2,87,94,250,22,151,2,80,159,52,43,38,248,22,151,15,247, +22,181,12,195,192,87,95,28,23,208,1,27,250,22,153,2,23,197,2,197,11, +28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,51,46,38,80,159,50, +46,38,247,22,19,250,22,25,248,22,23,23,197,2,80,159,53,45,38,23,196, +1,27,248,22,151,15,247,22,181,12,249,22,3,83,158,40,20,100,94,89,162, +8,44,37,55,9,226,12,11,2,3,33,68,23,195,1,23,196,1,248,28,248, +22,17,80,159,50,46,38,32,0,89,162,44,37,42,9,222,33,69,80,159,49, +59,37,89,162,44,36,51,9,227,13,9,8,4,3,33,70,250,22,151,2,23, +197,1,197,10,12,28,28,248,22,149,8,23,202,1,11,28,248,22,188,6,23, +206,2,10,28,248,22,58,23,206,2,10,28,248,22,71,23,206,2,249,22,134, +9,248,22,74,23,208,2,2,27,11,250,22,151,2,80,159,50,44,38,28,248, +22,188,6,23,209,2,249,22,73,23,210,1,27,28,23,212,2,28,249,22,134, +9,23,214,2,80,158,55,47,87,94,23,212,1,80,158,53,48,27,248,22,132, +5,23,214,2,28,248,22,139,14,23,194,2,91,159,39,11,90,161,39,36,11, +248,22,160,14,23,197,1,87,95,83,160,38,11,80,158,57,47,23,23,83,160, +38,11,80,158,57,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27, +247,22,154,5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,249,22,73, +23,210,1,247,22,181,14,252,22,151,8,23,208,1,23,207,1,23,205,1,23, +203,1,201,12,193,87,96,83,160,38,11,80,158,36,50,248,80,159,37,58,38, +249,22,27,11,80,159,39,52,38,248,22,174,4,80,159,37,51,38,248,22,153, +5,80,159,37,37,37,248,22,172,13,80,159,37,42,37,83,160,38,11,80,158, +36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,52,38,159,36,20,105, +159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,11,11, +11,11,10,38,80,158,36,36,20,105,159,37,16,23,2,2,2,3,30,2,5, +72,112,97,116,104,45,115,116,114,105,110,103,63,11,30,2,5,75,112,97,116, +104,45,97,100,100,45,115,117,102,102,105,120,8,30,2,7,2,8,5,30,2, +7,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,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2, +16,2,17,2,18,30,2,19,2,8,5,30,2,5,79,112,97,116,104,45,114, +101,112,108,97,99,101,45,115,117,102,102,105,120,10,30,2,5,73,102,105,110, +100,45,99,111,108,45,102,105,108,101,3,30,2,5,76,110,111,114,109,97,108, +45,99,97,115,101,45,112,97,116,104,7,2,20,2,21,30,2,19,74,114,101, +112,97,114,97,109,101,116,101,114,105,122,101,6,16,0,16,0,36,16,0,36, +16,11,2,12,2,13,2,10,2,11,2,14,2,15,2,3,2,9,2,2,2, +16,2,18,47,11,11,39,36,11,11,11,16,3,2,20,2,17,2,21,16,3, +11,11,11,16,3,2,20,2,17,2,21,39,39,37,11,11,11,16,0,16,0, +16,0,36,36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,15,83, +158,36,16,2,89,162,44,37,45,9,223,0,33,32,80,159,36,59,37,83,158, +36,16,2,248,22,146,8,69,115,111,45,115,117,102,102,105,120,80,159,36,36, +37,83,158,36,16,2,89,162,44,38,8,38,2,3,223,0,33,41,80,159,36, +37,37,83,158,36,16,2,32,0,89,162,8,44,37,42,2,9,222,192,80,159, +36,42,37,83,158,36,16,2,247,22,136,2,80,159,36,43,37,83,158,36,16, +2,247,22,135,2,80,159,36,44,37,83,158,36,16,2,247,22,69,80,159,36, +45,37,83,158,36,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97, +100,105,110,103,80,159,36,46,37,83,158,36,16,2,11,80,158,36,47,83,158, +36,16,2,11,80,158,36,48,83,158,36,16,2,32,0,89,162,44,38,8,42, +2,16,222,33,47,80,159,36,49,37,83,158,36,16,2,11,80,158,36,50,83, +158,36,16,2,91,159,38,10,90,161,37,36,10,11,90,161,37,37,10,83,158, +39,20,99,96,2,18,89,162,8,44,37,51,9,224,2,0,33,48,89,162,44, +39,49,9,223,1,33,49,89,162,44,40,8,32,9,224,2,0,33,71,208,80, +159,36,51,37,83,158,36,16,2,89,162,44,36,45,2,20,223,0,33,72,80, +159,36,56,37,83,158,36,16,2,89,162,8,44,36,45,2,21,223,0,33,73, +80,159,36,57,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29, +94,2,4,69,35,37,109,105,110,45,115,116,120,11,2,5,2,19,9,9,9, +36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8422); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,54,11,0,0,0,1,0,0,10,0,16,0, -29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,103,1,0, -0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2, -67,35,37,117,116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119,111, -114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2, -74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,66, -35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,11, -29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,132,84, -0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,6, -36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9,36, -36,16,0,159,36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2, -1,2,1,29,11,11,11,11,11,18,96,11,46,46,46,36,80,158,36,36,20, -105,159,36,16,0,16,0,16,0,36,16,0,36,16,0,36,11,11,39,36,11, -11,11,16,0,16,0,16,0,36,36,37,11,11,11,16,0,16,0,16,0,36, -36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,0,104,2,9,2, -8,29,94,2,2,69,35,37,102,111,114,101,105,103,110,11,29,94,2,2,68, -35,37,117,110,115,97,102,101,11,29,94,2,2,69,35,37,102,108,102,120,110, -117,109,11,2,7,2,6,2,5,2,4,2,3,29,94,2,2,67,35,37,112, -108,97,99,101,11,29,94,2,2,69,35,37,102,117,116,117,114,101,115,11,9, -9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 402); + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,55,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,0,29, +0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,103,1,0,0, +69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,67, +35,37,117,116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119,111,114, +107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2,74, +35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,66,35, +37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,11,29, +94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,128,84,0, +0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,6,36, +36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9,36,36, +16,0,159,36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1, +2,1,29,11,11,11,11,11,18,96,11,46,46,46,36,80,158,36,36,20,105, +159,36,16,0,16,0,16,0,36,16,0,36,16,0,36,11,11,39,36,11,11, +11,16,0,16,0,16,0,36,36,37,11,11,11,16,0,16,0,16,0,36,36, +11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,0,104,2,9,2,8, +29,94,2,2,69,35,37,102,111,114,101,105,103,110,11,29,94,2,2,68,35, +37,117,110,115,97,102,101,11,29,94,2,2,69,35,37,102,108,102,120,110,117, +109,11,2,7,2,6,2,5,2,4,2,3,29,94,2,2,67,35,37,112,108, +97,99,101,11,29,94,2,2,69,35,37,102,117,116,117,114,101,115,11,9,9, +9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 422); } diff --git a/src/racket/src/eval.c b/src/racket/src/eval.c index 36a4fda838..ab183c6a3a 100644 --- a/src/racket/src/eval.c +++ b/src/racket/src/eval.c @@ -10377,7 +10377,11 @@ static void *eval_k(void) Resolve_Prefix *rp; int depth; - depth = top->max_let_depth + scheme_prefix_depth(top->prefix); + if (!top->prefix) + depth = 0; + else + depth = top->max_let_depth + scheme_prefix_depth(top->prefix); + if (!scheme_check_runstack(depth)) { p->ku.k.p1 = top; p->ku.k.p2 = env; @@ -10388,43 +10392,49 @@ static void *eval_k(void) v = top->code; - if (use_jit) - v = scheme_jit_expr(v); - else - v = scheme_eval_clone(v); - rp = scheme_prefix_eval_clone(top->prefix); + if (!top->prefix) { + /* top->code is shared module code */ + scheme_module_execute(top->code, env); + v = scheme_void; + } else { + if (use_jit) + v = scheme_jit_expr(v); + else + v = scheme_eval_clone(v); + rp = scheme_prefix_eval_clone(top->prefix); - save_runstack = scheme_push_prefix(env, top->prefix, NULL, NULL, 0, env->phase, NULL); + save_runstack = scheme_push_prefix(env, top->prefix, NULL, NULL, 0, env->phase, NULL); - if (as_tail) { - /* Cons up a closure to capture the prefix */ - Scheme_Closure_Data *data; - mzshort *map; - int i, sz; + if (as_tail) { + /* Cons up a closure to capture the prefix */ + Scheme_Closure_Data *data; + mzshort *map; + int i, sz; - sz = (save_runstack XFORM_OK_MINUS MZ_RUNSTACK); - map = (mzshort *)scheme_malloc_atomic(sizeof(mzshort) * sz); - for (i = 0; i < sz; i++) { - map[i] = i; - } + sz = (save_runstack XFORM_OK_MINUS MZ_RUNSTACK); + map = (mzshort *)scheme_malloc_atomic(sizeof(mzshort) * sz); + for (i = 0; i < sz; i++) { + map[i] = i; + } - data = MALLOC_ONE_TAGGED(Scheme_Closure_Data); - data->iso.so.type = scheme_compiled_unclosed_procedure_type; - data->num_params = 0; - data->max_let_depth = top->max_let_depth + sz; - data->closure_size = sz; - data->closure_map = map; - data->code = v; + data = MALLOC_ONE_TAGGED(Scheme_Closure_Data); + data->iso.so.type = scheme_compiled_unclosed_procedure_type; + data->num_params = 0; + data->max_let_depth = top->max_let_depth + sz; + data->closure_size = sz; + data->closure_map = map; + data->code = v; - v = scheme_make_closure(p, (Scheme_Object *)data, 1); + v = scheme_make_closure(p, (Scheme_Object *)data, 1); - v = _scheme_tail_apply(v, 0, NULL); - } else if (multi) - v = _scheme_eval_linked_expr_multi_wp(v, p); - else - v = _scheme_eval_linked_expr_wp(v, p); + v = _scheme_tail_apply(v, 0, NULL); + } else if (multi) + v = _scheme_eval_linked_expr_multi_wp(v, p); + else + v = _scheme_eval_linked_expr_wp(v, p); - scheme_pop_prefix(save_runstack); + scheme_pop_prefix(save_runstack); + } } else { v = scheme_void; } diff --git a/src/racket/src/module.c b/src/racket/src/module.c index c67ec47819..98686e06f2 100644 --- a/src/racket/src/module.c +++ b/src/racket/src/module.c @@ -2593,7 +2593,12 @@ void scheme_prep_namespace_rename(Scheme_Env *menv) rn_stx = SCHEME_CAR(m->rn_stx); midx = SCHEME_CDR(m->rn_stx); rns = scheme_stx_to_rename(rn_stx); - rns = scheme_stx_shift_rename_set(rns, midx, m->self_modidx); + rns = scheme_stx_shift_rename_set(rns, midx, m->self_modidx, + /* CERT-INSP-CACHE <- grep for that in read.c; + if certificates are changed to no have inspectors, + then the NULL below should be something like m->insp, + but maybe not for inspector pairs */ + NULL); rn_stx = scheme_rename_to_stx(rns); m->rn_stx = rn_stx; } @@ -3241,9 +3246,10 @@ Scheme_Object *module_resolve_in_namespace(Scheme_Object *modidx, Scheme_Env *en return _module_resolve(modidx, NULL, env, load_it); } -Scheme_Object *scheme_modidx_shift(Scheme_Object *modidx, - Scheme_Object *shift_from_modidx, - Scheme_Object *shift_to_modidx) +static Scheme_Object *do_modidx_shift(Scheme_Object *modidx, + Scheme_Object *shift_from_modidx, + Scheme_Object *shift_to_modidx, + int must_clone) { Scheme_Object *base; @@ -3261,7 +3267,7 @@ Scheme_Object *scheme_modidx_shift(Scheme_Object *modidx, if (!SCHEME_FALSEP(base)) { /* FIXME: depth */ Scheme_Object *sbase; - sbase = scheme_modidx_shift(base, shift_from_modidx, shift_to_modidx); + sbase = do_modidx_shift(base, shift_from_modidx, shift_to_modidx, must_clone); if (!SAME_OBJ(base, sbase)) { /* There was a shift in the relative part. */ @@ -3343,11 +3349,25 @@ Scheme_Object *scheme_modidx_shift(Scheme_Object *modidx, return smodidx; } + } else if (must_clone) { + /* cloning here ensures that module resolution doesn't mutate + module-declaration code that might be cached */ + modidx = scheme_make_modidx(((Scheme_Modidx *)modidx)->path, + scheme_false, + scheme_false); + } return modidx; } +Scheme_Object *scheme_modidx_shift(Scheme_Object *modidx, + Scheme_Object *shift_from_modidx, + Scheme_Object *shift_to_modidx) +{ + return do_modidx_shift(modidx, shift_from_modidx, shift_to_modidx, 0); +} + void scheme_clear_modidx_cache(void) { Scheme_Modidx *sbm, *next; @@ -3987,9 +4007,10 @@ static void compute_require_names(Scheme_Env *menv, Scheme_Object *phase, np = scheme_null; for (l = reqs; !SCHEME_NULLP(l); l = SCHEME_CDR(l)) { - midx = scheme_modidx_shift(SCHEME_CAR(l), - menv->module->me->src_modidx, - (syntax_idx ? syntax_idx : menv->link_midx)); + midx = do_modidx_shift(SCHEME_CAR(l), + menv->module->me->src_modidx, + (syntax_idx ? syntax_idx : menv->link_midx), + 1); if (load_env) module_load(scheme_module_resolve(midx, 1), load_env, NULL); @@ -4928,6 +4949,9 @@ Scheme_Module *scheme_extract_compiled_module(Scheme_Object *o) { if (SAME_TYPE(SCHEME_TYPE(o), scheme_compilation_top_type)) { Scheme_Compilation_Top *c = (Scheme_Compilation_Top *)o; + + if (!c->prefix) /* => compiled module is in `code' field */ + return (Scheme_Module *)c->code; if (SAME_TYPE(SCHEME_TYPE(c->code), scheme_syntax_type) && (SCHEME_PINT_VAL(c->code) == MODULE_EXPD)) { @@ -5179,8 +5203,7 @@ static Scheme_Object **declare_insps(int n, Scheme_Object **insps, Scheme_Object return naya; } -static Scheme_Object * -module_execute(Scheme_Object *data) +static Scheme_Object *do_module_execute(Scheme_Object *data, Scheme_Env *genv, int set_cache) { Scheme_Module *m; Scheme_Env *env; @@ -5191,10 +5214,22 @@ module_execute(Scheme_Object *data) m = MALLOC_ONE_TAGGED(Scheme_Module); memcpy(m, data, sizeof(Scheme_Module)); + if (set_cache && m->code_key) { + if (!scheme_module_code_cache) { + REGISTER_SO(scheme_module_code_cache); + scheme_module_code_cache = scheme_make_weak_equal_table(); + } + scheme_add_to_table(scheme_module_code_cache, + (const char *)m->code_key, + scheme_make_ephemeron(m->code_key, data), + 0); + } + config = scheme_current_config(); prefix = scheme_get_param(config, MZCONFIG_CURRENT_MODULE_NAME); if (SCHEME_MODNAMEP(prefix)) { + m->modname = prefix; if (m->self_modidx) { @@ -5222,13 +5257,16 @@ module_execute(Scheme_Object *data) } else m->modsrc = m->modname; - env = scheme_environment_from_dummy(m->dummy); + if (genv) + env = genv; + else + env = scheme_environment_from_dummy(m->dummy); old_menv = get_special_modenv(m->modname); if (!old_menv) old_menv = (Scheme_Env *)scheme_hash_get(MODCHAIN_TABLE(env->modchain), m->modname); - insp = scheme_get_param(scheme_current_config(), MZCONFIG_CODE_INSPECTOR); + insp = scheme_get_param(config, MZCONFIG_CODE_INSPECTOR); if (old_menv) { if (scheme_module_protected_wrt(old_menv->insp, insp) || old_menv->attached) { @@ -5287,6 +5325,16 @@ module_execute(Scheme_Object *data) return scheme_void; } +static Scheme_Object *module_execute(Scheme_Object *data) +{ + return do_module_execute(data, NULL, 1); +} + +Scheme_Object *scheme_module_execute(Scheme_Object *data, Scheme_Env *genv) +{ + return do_module_execute(data, genv, 0); +} + static Scheme_Object *rebuild_et_vec(Scheme_Object *naya, Scheme_Object *vec, Resolve_Prefix *rp) { Scheme_Object *vec2; diff --git a/src/racket/src/mzmark.c b/src/racket/src/mzmark.c index c0fdb700b5..cbc9162ecc 100644 --- a/src/racket/src/mzmark.c +++ b/src/racket/src/mzmark.c @@ -2415,6 +2415,9 @@ static int module_val_SIZE(void *p, struct NewGC *gc) { static int module_val_MARK(void *p, struct NewGC *gc) { Scheme_Module *m = (Scheme_Module *)p; + + gcMARK2(m->code_key, gc); + gcMARK2(m->modname, gc); gcMARK2(m->modsrc, gc); @@ -2462,6 +2465,9 @@ static int module_val_MARK(void *p, struct NewGC *gc) { static int module_val_FIXUP(void *p, struct NewGC *gc) { Scheme_Module *m = (Scheme_Module *)p; + + gcFIXUP2(m->code_key, gc); + gcFIXUP2(m->modname, gc); gcFIXUP2(m->modsrc, gc); diff --git a/src/racket/src/mzmarksrc.c b/src/racket/src/mzmarksrc.c index 5a49ab6852..228508c1b1 100644 --- a/src/racket/src/mzmarksrc.c +++ b/src/racket/src/mzmarksrc.c @@ -956,6 +956,9 @@ stx_off_val { module_val { mark: Scheme_Module *m = (Scheme_Module *)p; + + gcMARK2(m->code_key, gc); + gcMARK2(m->modname, gc); gcMARK2(m->modsrc, gc); diff --git a/src/racket/src/portfun.c b/src/racket/src/portfun.c index 44f5557813..3e6dad4a92 100644 --- a/src/racket/src/portfun.c +++ b/src/racket/src/portfun.c @@ -27,6 +27,7 @@ port types. */ #include "schpriv.h" +#include "schvers.h" static Scheme_Object *input_port_p (int, Scheme_Object *[]); static Scheme_Object *output_port_p (int, Scheme_Object *[]); @@ -4101,6 +4102,61 @@ static Scheme_Object *do_load_handler(void *data) Scheme_Env *genv; int save_count = 0, got_one = 0, as_module, check_module_name = 0; + if (scheme_module_code_cache) { + intptr_t got; + int vers_size, hash_header_size; +# define HASH_HEADER_SIZE (3 + 20 + 16) + char buffer[HASH_HEADER_SIZE]; + + vers_size = strlen(MZSCHEME_VERSION); + hash_header_size = 3 + vers_size + 20; + if (hash_header_size >= HASH_HEADER_SIZE) + scheme_signal_error("internal error: buffer size mismatch"); + got = scheme_get_byte_string("default-load-handler", + port, + buffer, 0, hash_header_size, + 0, 1, scheme_make_integer(0)); + + obj = NULL; + if ((got == hash_header_size) + && (buffer[0] == '#') + && (buffer[1] == '~') + && (buffer[2] == vers_size) + && (!scheme_strncmp(buffer + 3, MZSCHEME_VERSION, vers_size))) { + int i; + for (i = 0; i < 20; i++) { + if (buffer[3 + vers_size + i]) + break; + } + if (i < 20) { + obj = scheme_make_sized_byte_string(buffer + 3 + vers_size, 20, 1); + } + } + + + if (obj) { + /* CERT-INSP-CACHE <- grep for that in read.c */ + obj = scheme_make_pair(obj, scheme_get_param(config, MZCONFIG_CODE_INSPECTOR)); + obj = scheme_lookup_in_table(scheme_module_code_cache, (const char *)obj); + if (obj) { + /* Synthesize a wrapper to pass through `eval': */ + Scheme_Compilation_Top *top; + + obj = scheme_ephemeron_value(obj); + + top = MALLOC_ONE_TAGGED(Scheme_Compilation_Top); + top->so.type = scheme_compilation_top_type; + top->code = obj; + top->prefix = NULL; /* indicates a wrapper */ + + obj = (Scheme_Object *)top; + + return _scheme_apply_multi(scheme_get_param(config, MZCONFIG_EVAL_HANDLER), + 1, &obj); + } + } + } + while ((obj = scheme_internal_read(port, lhd->stxsrc, 1, 0, 0, 0, 0, -1, NULL, NULL, NULL, lhd->delay_load_info)) && !SCHEME_EOFP(obj)) { diff --git a/src/racket/src/print.c b/src/racket/src/print.c index 9a60923b12..7860407833 100644 --- a/src/racket/src/print.c +++ b/src/racket/src/print.c @@ -3098,6 +3098,9 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, print_one_byte(pp, strlen(MZSCHEME_VERSION)); print_this_string(pp, MZSCHEME_VERSION, 0, -1); + /* Leave space for a module hash code */ + print_this_string(pp, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 0, 20); + if (mt->st_refs->count != mt->sorted_keys_count) scheme_signal_error("shared key count somehow changed"); diff --git a/src/racket/src/read.c b/src/racket/src/read.c index fb99bc50eb..9d70003cbf 100644 --- a/src/racket/src/read.c +++ b/src/racket/src/read.c @@ -5394,6 +5394,7 @@ static Scheme_Object *read_compiled(Scheme_Object *port, int perma_cache = use_perma_cache; Scheme_Object *dir; Scheme_Config *config; + char hash_code[20]; /* Allow delays? */ if (params->delay_load_info) { @@ -5422,6 +5423,10 @@ static Scheme_Object *read_compiled(Scheme_Object *port, } offset += size + 1; + /* Module hash code */ + got = scheme_get_bytes(port, 20, hash_code, 0); + offset += 20; + symtabsize = read_simple_number_from_port(port); offset += 4; @@ -5570,6 +5575,35 @@ static Scheme_Object *read_compiled(Scheme_Object *port, top->prefix->num_lifts, 0); /* If no exception, the resulting code is ok. */ + + /* Install module hash code, if any. This code is used to register + the module in scheme_module_execute(), and it's used to + find a registered module in the default load handler. */ + { + int i; + for (i = 0; i < 20; i++) { + if (hash_code[i]) break; + } + + if (i < 20) { + Scheme_Module *m; + m = scheme_extract_compiled_module(result); + if (m) { + Scheme_Object *hc; + hc = scheme_make_sized_byte_string(hash_code, 20, 1); + + /* CERT-INSP-CACHE: Certificates hold an inspector, which + means that the current inspector affects the way that bytecode + is read. For now, only share compiled modules when the + inspector is the same, but maybe certificates can be + fixed and this hack son't be necessary one day. Grep for + CERT-INSP-CACHE elsewhere for other places to change. */ + hc = scheme_make_pair(hc, insp); + + m->code_key = hc; + } + } + } } else scheme_ill_formed_code(rp); diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index cfbbbfbbd8..a069023e72 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -946,8 +946,10 @@ void scheme_list_module_rename(Scheme_Object *src, Scheme_Hash_Table *ht, Scheme Scheme_Object *scheme_rename_to_stx(Scheme_Object *rn); Scheme_Object *scheme_stx_to_rename(Scheme_Object *stx); -Scheme_Object *scheme_stx_shift_rename(Scheme_Object *mrn, Scheme_Object *old_midx, Scheme_Object *new_midx); -Scheme_Object *scheme_stx_shift_rename_set(Scheme_Object *mrns, Scheme_Object *old_midx, Scheme_Object *new_midx); +Scheme_Object *scheme_stx_shift_rename(Scheme_Object *mrn, Scheme_Object *old_midx, Scheme_Object *new_midx, + Scheme_Object *new_insp); +Scheme_Object *scheme_stx_shift_rename_set(Scheme_Object *mrns, Scheme_Object *old_midx, Scheme_Object *new_midx, + Scheme_Object *new_insp); Scheme_Hash_Table *scheme_module_rename_marked_names(Scheme_Object *rn); Scheme_Object *scheme_stx_content(Scheme_Object *o); @@ -1075,7 +1077,7 @@ typedef struct { Scheme_Object so; mzshort max_let_depth; Scheme_Object *code; - struct Resolve_Prefix *prefix; + struct Resolve_Prefix *prefix; /* NULL => a wrapper for a JITted module in `code' */ } Scheme_Compilation_Top; /* A `let', `let*', or `letrec' form is compiled to the intermediate @@ -2970,6 +2972,8 @@ typedef struct Scheme_Module { Scheme_Object so; /* scheme_module_type */ + Scheme_Object *code_key; + Scheme_Object *modname; Scheme_Object *modsrc; @@ -3112,6 +3116,8 @@ int scheme_tl_id_is_sym_used(Scheme_Hash_Table *marked_names, Scheme_Object *sym Scheme_Object *scheme_sys_wraps(Scheme_Comp_Env *env); Scheme_Object *scheme_sys_wraps_phase(Scheme_Object *phase); +Scheme_Object *scheme_module_execute(Scheme_Object *data, Scheme_Env *genv); + Scheme_Env *scheme_new_module_env(Scheme_Env *env, Scheme_Module *m, int new_exp_module_tree); int scheme_is_module_env(Scheme_Comp_Env *env); diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index c154e5f7db..018cf569f6 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.1.1.1" +#define MZSCHEME_VERSION "5.1.1.2" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 1 #define MZSCHEME_VERSION_Z 1 -#define MZSCHEME_VERSION_W 1 +#define MZSCHEME_VERSION_W 2 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/racket/src/stxobj.c b/src/racket/src/stxobj.c index bf407afbcc..e162d1c8f0 100644 --- a/src/racket/src/stxobj.c +++ b/src/racket/src/stxobj.c @@ -140,7 +140,8 @@ typedef struct Module_Renames { (cons modidx nominal_modidx) OR (list* modidx exportname nominal_modidx_plus_phase nominal_exportname) OR (list* modidx mod-phase exportname nominal_modidx_plus_phase nominal_exportname) OR - (cons insp localname) + (cons insp localname) OR + (cons (cons insp insp) localname) nominal_modix_plus_phase -> nominal_modix | (cons nominal_modix import_phase_plus_nominal_phase) import_phase_plus_nominal_phase -> import-phase-index | (cons import-phase-index nom-phase) */ Scheme_Hash_Table *nomarshal_ht; /* like ht, but dropped on marshal */ @@ -1482,7 +1483,8 @@ void scheme_save_module_rename_unmarshal(Scheme_Object *rn, Scheme_Object *info) static void do_append_module_rename(Scheme_Object *src, Scheme_Object *dest, Scheme_Object *old_midx, Scheme_Object *new_midx, - int do_pes, int do_unm) + int do_pes, int do_unm, + Scheme_Object *new_insp) { Scheme_Hash_Table *ht, *hts, *drop_ht; Scheme_Object *v; @@ -1551,6 +1553,7 @@ static void do_append_module_rename(Scheme_Object *src, Scheme_Object *dest, if (SCHEME_PAIRP(v) && is_rename_inspector_info(SCHEME_CAR(v))) { insp = SCHEME_CAR(v); + if (new_insp) insp = new_insp; v = SCHEME_CDR(v); } else insp = NULL; @@ -1613,7 +1616,7 @@ static void do_append_module_rename(Scheme_Object *src, Scheme_Object *dest, void scheme_append_module_rename(Scheme_Object *src, Scheme_Object *dest, int do_unm) { - do_append_module_rename(src, dest, NULL, NULL, 1, do_unm); + do_append_module_rename(src, dest, NULL, NULL, 1, do_unm, NULL); } void scheme_append_rename_set_to_env(Scheme_Object *_mrns, Scheme_Env *env) @@ -1742,7 +1745,8 @@ Scheme_Object *scheme_stx_to_rename(Scheme_Object *stx) } Scheme_Object *scheme_stx_shift_rename(Scheme_Object *mrn, - Scheme_Object *old_midx, Scheme_Object *new_midx) + Scheme_Object *old_midx, Scheme_Object *new_midx, + Scheme_Object *new_insp) { Scheme_Object *nmrn, *a, *l, *nl, *first, *last; @@ -1751,7 +1755,7 @@ Scheme_Object *scheme_stx_shift_rename(Scheme_Object *mrn, NULL); /* use "append" to copy most info: */ - do_append_module_rename(mrn, nmrn, old_midx, new_midx, 0, 0); + do_append_module_rename(mrn, nmrn, old_midx, new_midx, 0, 0, new_insp); /* Manually copy unmarshal_infos, where we have to shift anyway: */ @@ -1797,7 +1801,8 @@ Scheme_Object *scheme_stx_shift_rename(Scheme_Object *mrn, } Scheme_Object *scheme_stx_shift_rename_set(Scheme_Object *_mrns, - Scheme_Object *old_midx, Scheme_Object *new_midx) + Scheme_Object *old_midx, Scheme_Object *new_midx, + Scheme_Object *new_insp) { Module_Renames_Set *mrns = (Module_Renames_Set *)_mrns; Scheme_Object *mrn, *mrns2; @@ -1805,17 +1810,17 @@ Scheme_Object *scheme_stx_shift_rename_set(Scheme_Object *_mrns, mrns2 = scheme_make_module_rename_set(mrns->kind, NULL); if (mrns->rt) { - mrn = scheme_stx_shift_rename((Scheme_Object *)mrns->rt, old_midx, new_midx); + mrn = scheme_stx_shift_rename((Scheme_Object *)mrns->rt, old_midx, new_midx, new_insp); scheme_add_module_rename_to_set(mrns2, mrn); } if (mrns->et) { - mrn = scheme_stx_shift_rename((Scheme_Object *)mrns->et, old_midx, new_midx); + mrn = scheme_stx_shift_rename((Scheme_Object *)mrns->et, old_midx, new_midx, new_insp); scheme_add_module_rename_to_set(mrns2, mrn); } if (mrns->other_phases) { for (i = 0; i < mrns->other_phases->size; i++) { if (mrns->other_phases->vals[i]) { - mrn = scheme_stx_shift_rename(mrns->other_phases->vals[i], old_midx, new_midx); + mrn = scheme_stx_shift_rename(mrns->other_phases->vals[i], old_midx, new_midx, new_insp); scheme_add_module_rename_to_set(mrns2, mrn); } } diff --git a/src/racket/src/syntax.c b/src/racket/src/syntax.c index 8c0816d785..93d2a5f9c5 100644 --- a/src/racket/src/syntax.c +++ b/src/racket/src/syntax.c @@ -6963,6 +6963,11 @@ static Scheme_Object *write_top(Scheme_Object *obj) { Scheme_Compilation_Top *top = (Scheme_Compilation_Top *)obj; + if (!top->prefix) + scheme_raise_exn(MZEXN_FAIL, + "write: cannot marshal shared compiled code: %V", + obj); + return cons(scheme_make_integer(top->max_let_depth), cons((Scheme_Object *)top->prefix, scheme_protect_quote(top->code)));