add `define-logger' and filtering based on logger name

The `make-log-receiver' function now includes a logger-name
filter. This filter is implemented as a low enough level that
it affects `log-level?' tests to check whether a log message
needs to be constructed at all.

The -W and -L flags and PLTSTDERR and PLTSYSLOG environment variables
support filters of the form "<level> <level>@<name> ...", where
<level>@<name> specializes filtering of events for a logger whose
name matches <name> to show <level> and higher.
This commit is contained in:
Matthew Flatt 2012-09-06 12:33:13 -06:00
parent 8728a3a1e9
commit d92b9cb404
28 changed files with 860 additions and 499 deletions

View File

@ -0,0 +1,57 @@
(module logger '#%kernel
(#%require "small-scheme.rkt" "define.rkt"
(for-syntax '#%kernel "stx.rkt" "small-scheme.rkt" "stxcase-scheme.rkt"))
(#%provide log-fatal log-error log-warning log-info log-debug
define-logger)
(define-for-syntax (make-define-log mode X-logger-stx)
(lambda (stx)
(with-syntax ([X-logger X-logger-stx]
[mode mode])
(syntax-case stx ()
[(_ str-expr)
#'(let ([l X-logger])
(when (log-level? l 'mode)
(log-message l 'mode str-expr (current-continuation-marks))))]
[(_ str-expr arg ...)
#'(let ([l X-logger])
(when (log-level? l 'mode)
(log-message l 'mode (format str-expr arg ...) (current-continuation-marks))))]))))
(define-syntax log-fatal (make-define-log 'fatal #'(current-logger)))
(define-syntax log-error (make-define-log 'error #'(current-logger)))
(define-syntax log-warning (make-define-log 'warning #'(current-logger)))
(define-syntax log-info (make-define-log 'info #'(current-logger)))
(define-syntax log-debug (make-define-log 'debug #'(current-logger)))
(define (check-logger who)
(lambda (v)
(unless (logger? v)
(raise-argument-error who "logger?" v))
v))
(define-syntax (define-logger stx)
(syntax-case stx ()
[(_ X)
(let* ([X #'X]
[mk (lambda (mode)
(datum->syntax X (string->symbol (format "log-~a-~a" (syntax-e X) mode)) X))])
(unless (identifier? X)
(raise-syntax-error #f "not an identifier" stx X))
(with-syntax ([log-X-fatal (mk 'fatal)]
[log-X-error (mk 'error)]
[log-X-warning (mk 'warning)]
[log-X-info (mk 'info)]
[log-X-debug (mk 'debug)]
[current-X-logger
(datum->syntax X (string->symbol (format "current-~a-logger" (syntax-e X))) X)]
[X X])
#'(begin
(define X-logger (make-logger 'X (current-logger)))
(define-syntax log-X-fatal (make-define-log 'fatal #'X-logger))
(define-syntax log-X-error (make-define-log 'error #'X-logger))
(define-syntax log-X-warning (make-define-log 'warning #'X-logger))
(define-syntax log-X-info (make-define-log 'info #'X-logger))
(define-syntax log-X-debug (make-define-log 'debug #'X-logger)))))])))

View File

@ -3,7 +3,7 @@
;; more-scheme : case, do, etc. - remaining syntax ;; more-scheme : case, do, etc. - remaining syntax
(module more-scheme '#%kernel (module more-scheme '#%kernel
(#%require "small-scheme.rkt" "define.rkt" '#%paramz "case.rkt" (#%require "small-scheme.rkt" "define.rkt" '#%paramz "case.rkt" "logger.rkt"
(for-syntax '#%kernel "stx.rkt" "small-scheme.rkt" "stxcase-scheme.rkt" "qqstx.rkt")) (for-syntax '#%kernel "stx.rkt" "small-scheme.rkt" "stxcase-scheme.rkt" "qqstx.rkt"))
(define-syntax case-test (define-syntax case-test
@ -333,27 +333,6 @@
(printf "cpu time: ~s real time: ~s gc time: ~s\n" cpu user gc) (printf "cpu time: ~s real time: ~s gc time: ~s\n" cpu user gc)
(apply values v)))]))) (apply values v)))])))
(define-syntax (log-it stx)
(syntax-case stx ()
[(_ id mode str-expr)
#'(let ([l (current-logger)])
(when (log-level? l 'mode)
(log-message l 'mode str-expr (current-continuation-marks))))]))
(define-syntax (define-log stx)
(syntax-case stx ()
[(_ id mode)
#'(define-syntax (id stx)
(syntax-case stx ()
[(_ str-expr)
#'(log-it id mode str-expr)]
[(_ str-expr arg (... ...))
#'(log-it id mode (format str-expr arg (... ...)))]))]))
(define-log log-fatal fatal)
(define-log log-error error)
(define-log log-warning warning)
(define-log log-info info)
(define-log log-debug debug)
(define-values (hash-update hash-update! hash-has-key? hash-ref!) (define-values (hash-update hash-update! hash-has-key? hash-ref!)
(let* ([not-there (gensym)] (let* ([not-there (gensym)]
[up (lambda (who mut? set ht key xform default) [up (lambda (who mut? set ht key xform default)
@ -405,5 +384,5 @@
with-handlers with-handlers* call-with-exception-handler with-handlers with-handlers* call-with-exception-handler
set!-values set!-values
let/cc fluid-let time let/cc fluid-let time
log-fatal log-error log-warning log-info log-debug log-fatal log-error log-warning log-info log-debug define-logger
hash-ref! hash-has-key? hash-update hash-update!)) hash-ref! hash-has-key? hash-update hash-update!))

View File

@ -103,6 +103,7 @@ code via @racket[trace-futures]), it is much
easier to use the graphical profiler tool provided by easier to use the graphical profiler tool provided by
@racketmodname[future-visualizer]. @racketmodname[future-visualizer].
Future events are reported to a logger named @racket['future].
In addition to its string message, each event logged for a future has In addition to its string message, each event logged for a future has
a data value that is an instance of a @racket[future-event] a data value that is an instance of a @racket[future-event]
@tech{prefab} structure: @tech{prefab} structure:

View File

@ -1,5 +1,7 @@
#lang scribble/doc #lang scribble/doc
@(require "mz.rkt" (for-label racket/cmdline)) @(require "mz.rkt"
scribble/bnf
(for-label racket/cmdline))
@title[#:tag "logging"]{Logging} @title[#:tag "logging"]{Logging}
@ -33,9 +35,22 @@ through environment variables:
@item{If the @indexed-envvar{PLTSTDERR} environment variable is @item{If the @indexed-envvar{PLTSTDERR} environment variable is
defined and is not overridden by a command-line flag, it defined and is not overridden by a command-line flag, it
determines the level of the @tech{log receiver} that propagates determines the level of the @tech{log receiver} that propagates
events to the original error port. The environment variable's value events to the original error port.
should be @racket["none"], @racket["fatal"], @racket["error"],
@racket["warning"], @racket["info"], or @racket["debug"]. The environment variable's value can be a @nonterm{level}:
@litchar{none}, @litchar{fatal}, @litchar{error},
@litchar{warning}, @litchar{info}, or @litchar{debug}; all
events the corresponding level of higher are printed. After an
initial @nonterm{level}, the value can contain space-separated
specifications of the form
@nonterm{level}@litchar["@"]@nonterm{name}, which prints events
from loggers whose name match @nonterm{name} only at the given
@nonterm{level} or higher (where a @nonterm{name} contains any
character other than a space or @litchar["@"]). For example,
the value @racket["error debug@GC"] prints all events at the
@racket['error] level and higher, but prints events for a
logger named @racket['GC] at the @racket['debug] level and
higher (which includes all levels).
The default is @racket["error"].} The default is @racket["error"].}
@ -82,6 +97,18 @@ Reports @racket[logger]'s name, if any.}
A @tech{parameter} that determines the @tech{current logger}.} A @tech{parameter} that determines the @tech{current logger}.}
@defform[(define-logger id)]{
Defines @racketkeywordfont{log-}@racket[id]@racketkeywordfont{-fatal},
@racketkeywordfont{log-}@racket[id]@racketkeywordfont{-error},
@racketkeywordfont{log-}@racket[id]@racketkeywordfont{-warning},
@racketkeywordfont{log-}@racket[id]@racketkeywordfont{-info}, and
@racketkeywordfont{log-}@racket[id]@racketkeywordfont{-debug} as forms
like @racket[log-fatal], @racket[log-error],@racket[log-warning],
@racket[log-info], and @racket[log-debug]. The new forms use a logger named
@racket['@#,racket[id]] that is a child of @racket[current-logger],
instead of using @racket[(current-logger)] directly. The new logger is
created when @racket[define-logger] is evaluated.}
@; ---------------------------------------- @; ----------------------------------------
@section{Logging Events} @section{Logging Events}
@ -111,9 +138,9 @@ one of its ancestors is interested in @racket[level] events (or
potentially lower). Use this function to avoid work generating an potentially lower). Use this function to avoid work generating an
event for @racket[log-message] if no receiver is interested in the event for @racket[log-message] if no receiver is interested in the
information; this shortcut is built into @racket[log-fatal], information; this shortcut is built into @racket[log-fatal],
@racket[log-error], @racket[log-warning], @racket[log-info], and @racket[log-error], @racket[log-warning], @racket[log-info],
@racket[log-debug], however, so it should not be used with those @racket[log-debug], and forms bound by @racket[define-logger],
forms. however, so it should not be used with those forms.
The result of this function can change if a garbage collection The result of this function can change if a garbage collection
determines that a log receiver is no longer accessible (and therefore determines that a log receiver is no longer accessible (and therefore
@ -148,6 +175,10 @@ only if the logger has receivers that are interested in the event. In
addition, the current continuation's @tech{continuation marks} are addition, the current continuation's @tech{continuation marks} are
sent to the logger with the message string. sent to the logger with the message string.
These form are convenient for using the current logger, but libraries
should generally use a specifically named logger---typically through
similar convenience forms generated by @racket[define-logger].
For each @racketkeywordfont{log-}@racket[_level], For each @racketkeywordfont{log-}@racket[_level],
@racketblock[ @racketblock[
@ -161,6 +192,18 @@ is equivalent to
(when (log-level? l '@#,racket[_level]) (when (log-level? l '@#,racket[_level])
(log-message l '@#,racket[_level] string-expr (log-message l '@#,racket[_level] string-expr
(current-continuation-marks)))) (current-continuation-marks))))
]
while
@racketblock[
(@#,racketkeywordfont{log-}_level format-string-expr v ...)
]
is equivalent to
@racketblock[
(@#,racketkeywordfont{log-}_level (format format-string-expr v ...))
]} ]}
@; ---------------------------------------- @; ----------------------------------------
@ -172,12 +215,15 @@ Returns @racket[#t] if @racket[v] is a @tech{log receiver}, @racket[#f]
otherwise.} otherwise.}
@defproc[(make-log-receiver [logger logger?] @defproc[(make-log-receiver [logger logger?]
[level (or/c 'fatal 'error 'warning 'info 'debug)]) [level (or/c 'none 'fatal 'error 'warning 'info 'debug)]
[name (or/c #f symbol?) #f]
... ...)
log-receiver?]{ log-receiver?]{
Creates a @tech{log receiver} to receive events of importance Creates a @tech{log receiver} to receive events of importance
@racket[level] and higher as reported to @racket[logger] and its @racket[level] and higher as reported to @racket[logger] and its
descendants. descendants, as long as either @racket[name] is @racket[#f] or the
reporting logger's name matches @racket[name].
A @tech{log receiver} is a @tech{synchronizable event}. It becomes A @tech{log receiver} is a @tech{synchronizable event}. It becomes
ready as an @tech{synchronizable event} when a logging event is ready as an @tech{synchronizable event} when a logging event is
@ -185,4 +231,13 @@ received, so use @racket[sync] to receive an logged event. The
@tech{log receiver}'s synchronization value is a vector containing @tech{log receiver}'s synchronization value is a vector containing
three values: the level of the event as a symbol, an immutable string three values: the level of the event as a symbol, an immutable string
for the event message, and an arbitrary value that was supplied as the for the event message, and an arbitrary value that was supplied as the
last argument to @racket[log-message] when the event was logged.} last argument to @racket[log-message] when the event was logged.
Multiple pairs of @racket[level] and @racket[name] can be provided to
indicate different specific @racket[level]s for different
@racket[name]s (where @racket[name] defaults to racket[#f] only for
the last given @racket[level]). A @racket[level] for a @racket[#f]
@racket[name] applies only to loggers whose names do not match any other
provided @racket[name]. If the same @racket[name] is provided multiple
times, the @racket[level] provided with the last instance in the
argument list takes precedence.}

View File

@ -176,7 +176,7 @@ Set the @as-index{@envvar{PLTDISABLEGC}} environment variable (to any
value) before Racket starts to disable @tech{garbage collection}. value) before Racket starts to disable @tech{garbage collection}.
In Racket 3m (the main variant of Racket), each garbage collection In Racket 3m (the main variant of Racket), each garbage collection
logs a message (see @secref["logging"]) at the @racket['debug] level. logs a message (see @secref["logging"]) at the @racket['debug] level to a logger named @racket['GC].
The data portion of the message is an instance of a @indexed-racket[gc-info] The data portion of the message is an instance of a @indexed-racket[gc-info]
@tech{prefab} structure type with 10 fields as follows, but future @tech{prefab} structure type with 10 fields as follows, but future
versions of Racket may use a @racket[gc-info] @tech{prefab} structure versions of Racket may use a @racket[gc-info] @tech{prefab} structure

View File

@ -306,14 +306,14 @@ flags:
ports. This flag currently has no effect, because binary mode ports. This flag currently has no effect, because binary mode
is always used.} is always used.}
@item{@FlagFirst{W} @nonterm{level} or @DFlagFirst{warn} @item{@FlagFirst{W} @nonterm{levels} or @DFlagFirst{warn}
@nonterm{level} : Sets the logging level for writing events to @nonterm{levels} : Sets the logging level for writing events to
the original error port. The possible @nonterm{level} values the original error port. The possible @nonterm{level} values
are the same as for the @envvar{PLTSTDERR} environment are the same as for the @envvar{PLTSTDERR} environment
variable. See @secref["logging"] for more information.} variable. See @secref["logging"] for more information.}
@item{@FlagFirst{L} @nonterm{level} or @DFlagFirst{syslog} @item{@FlagFirst{L} @nonterm{levels} or @DFlagFirst{syslog}
@nonterm{level} : Sets the logging level for writing events to @nonterm{levels} : Sets the logging level for writing events to
the system log. The possible @nonterm{level} values the system log. The possible @nonterm{level} values
are the same as for the @envvar{PLTSYSLOG} environment are the same as for the @envvar{PLTSYSLOG} environment
variable. See @secref["logging"] for more information.} variable. See @secref["logging"] for more information.}

View File

@ -76,4 +76,58 @@
; -------------------- ; --------------------
(let ()
(define-logger test)
(define r (make-log-receiver (current-logger) 'warning 'test))
(log-test-debug (/ 0))
(log-test-debug "debug")
(test #f sync/timeout 0 r)
(log-test-warning "warning")
(test "test: warning" (lambda (v) (vector-ref v 1)) (sync r)))
; ----------------------------------------
(let ()
(define root (make-logger))
(define sub1 (make-logger 'sub1 root))
(define sub2 (make-logger 'sub2 root))
(define sub3 (make-logger 'sub3 root))
(define sub4 (make-logger 'sub4 root))
(define r (make-log-receiver root
'error #f
'info 'sub1
'none 'sub4
'info 'sub2
'warning 'sub1
'fatal #f))
(define (get)
(define m (sync/timeout 0 r))
(and m (vector-ref m 1)))
(log-message root 'debug "message" 'data)
(test #f get)
(log-message sub1 'info "message" 'data)
(test #f get)
(log-message sub2 'info "message" 'data)
(test "sub2: message" get)
(log-message sub2 'debug "message" 'data)
(test #f get)
(log-message sub1 'warning "message" 'data)
(test "sub1: message" get)
(log-message root 'fatal "message" 'data)
(test "message" get)
(log-message sub3 'fatal "message" 'data)
(test "sub3: message" get)
(log-message sub3 'debug "message" 'data)
(log-message sub3 'info "message" 'data)
(log-message sub3 'warning "message" 'data)
(test #f get)
(log-message sub4 'debug "message" 'data)
(log-message sub4 'info "message" 'data)
(log-message sub4 'warning "message" 'data)
(log-message sub4 'error "message" 'data)
(log-message sub4 'fatal "message" 'data)
(test #f get))
; --------------------
(report-errs) (report-errs)

View File

@ -1,8 +1,15 @@
Version 5.3.0.23
Changed make-log-receiver to accept a logger name as an
event filter
Addded define-logger
Changed -W, -L, PLTSTDERR, and PLTSYSLOG to support log
filters of the form "<level> <name>=<level> ..."
Changed log-error, etc., to support format mode
Added racket/format, which is re-exported by racket
Version 5.3.0.22 Version 5.3.0.22
Changed a thread's initial prompt to use the default handler Changed a thread's initial prompt to use the default handler
(instead of accepting and ignoring abort arguments) (instead of accepting and ignoring abort arguments)
Changed log-error, etc., to support format mode
Added racket/format, which is re-exported by racket
ffi/unsafe: added cpointer-gcable? ffi/unsafe: added cpointer-gcable?
racket/class: added dynamic-get-field and dynamic-set-field! racket/class: added dynamic-get-field and dynamic-set-field!

View File

@ -548,38 +548,91 @@ static Scheme_Object *reverse_path_list(Scheme_Object *l, int rel_to_cwd)
return r; return r;
} }
static int get_log_level(char *prog, char *real_switch, const char *envvar, const char *what, char *str) #ifndef MZ_XFORM
{ # define GC_CAN_IGNORE /**/
if (!strcmp(str, "none")) #endif
return 0;
else if (!strcmp(str, "fatal"))
return SCHEME_LOG_FATAL;
else if (!strcmp(str, "error"))
return SCHEME_LOG_ERROR;
else if (!strcmp(str, "warning"))
return SCHEME_LOG_WARNING;
else if (!strcmp(str, "info"))
return SCHEME_LOG_INFO;
else if (!strcmp(str, "debug"))
return SCHEME_LOG_DEBUG;
PRINTF("%s: %s level %s%s%s must be one of the following:\n" static Scheme_Object *get_log_level(char *prog, char *real_switch, const char *envvar, const char *what, GC_CAN_IGNORE char *str)
" none fatal error warning info or debug\n" {
int k, len, default_lvl = -1;
Scheme_Object *l = scheme_null, *last = NULL;
GC_CAN_IGNORE char *s, *orig_str = str;
while (1) {
if (!*str) {
if (default_lvl == -1) default_lvl = 0;
if (last)
SCHEME_CDR(last) = scheme_make_integer(default_lvl);
else
l = scheme_make_integer(default_lvl);
return l;
}
if (!strncmp(str, "none", 4)) {
k = 0;
len = 4;
} else if (!strncmp(str, "fatal", 5)) {
k = SCHEME_LOG_FATAL;
len = 5;
} else if (!strncmp(str, "error", 5)) {
k = SCHEME_LOG_ERROR;
len = 5;
} else if (!strncmp(str, "warning", 7)) {
k = SCHEME_LOG_WARNING;
len = 7;
} else if (!strncmp(str, "info", 4)) {
k = SCHEME_LOG_INFO;
len = 4;
} else if (!strncmp(str, "debug", 5)) {
k = SCHEME_LOG_DEBUG;
len = 5;
} else
k = -1;
str += len;
if (k != -1) {
if (*str == '@') {
str++;
for (s = str; *s && *s != ' '; s++) {
}
l = scheme_make_pair(scheme_make_sized_byte_string(str, s - str, 1), l);
if (!last) last = l;
l = scheme_make_pair(scheme_make_integer(k), l);
str = s;
} else if ((*str == ' ') || !*str) {
if (default_lvl == -1)
default_lvl = k;
else
k = -1;
} else
k = -1;
if (*str) str++;
}
if (k == -1) {
PRINTF("%s: %s <levels> %s%s%s must be one of the following\n"
" <level>s:\n"
" none fatal error warning info debug\n"
" or up to one such <level> in space-separated sequence of\n"
" <level>@<name>\n"
" given: %s\n", " given: %s\n",
prog, what, prog, what,
real_switch ? "after " : "in ", real_switch ? "after " : "in ",
real_switch ? real_switch : envvar, real_switch ? real_switch : envvar,
real_switch ? " switch" : " envrionment variable", real_switch ? " switch" : " environment variable",
str); orig_str);
return -1; return NULL;
}
}
} }
static int get_arg_log_level(char *prog, char *real_switch, const char *what, int argc, char **argv) static Scheme_Object *get_arg_log_level(char *prog, char *real_switch, const char *what, int argc, char **argv)
{ {
if (argc < 2) { if (argc < 2) {
PRINTF("%s: missing %s level after %s switch\n", PRINTF("%s: missing %s level after %s switch\n",
prog, what, real_switch); prog, what, real_switch);
return -1; return NULL;
} }
return get_log_level(prog, real_switch, NULL, what, argv[1]); return get_log_level(prog, real_switch, NULL, what, argv[1]);
@ -652,7 +705,7 @@ static int run_from_cmd_line(int argc, char *_argv[],
int was_config_flag = 0, saw_nc_flag = 0; int was_config_flag = 0, saw_nc_flag = 0;
int no_compiled = 0; int no_compiled = 0;
int init_ns = 0, no_init_ns = 0; int init_ns = 0, no_init_ns = 0;
int syslog_level = -1, stderr_level = -1; Scheme_Object *syslog_level = NULL, *stderr_level = NULL;
FinishArgs *fa; FinishArgs *fa;
FinishArgsAtoms *fa_a; FinishArgsAtoms *fa_a;
@ -1177,7 +1230,7 @@ static int run_from_cmd_line(int argc, char *_argv[],
#endif #endif
case 'W': case 'W':
stderr_level = get_arg_log_level(prog, real_switch, "stderr", argc, argv); stderr_level = get_arg_log_level(prog, real_switch, "stderr", argc, argv);
if (stderr_level < 0) if (!stderr_level)
goto show_need_help; goto show_need_help;
--argc; --argc;
argv++; argv++;
@ -1185,7 +1238,7 @@ static int run_from_cmd_line(int argc, char *_argv[],
break; break;
case 'L': case 'L':
syslog_level = get_arg_log_level(prog, real_switch, "syslog", argc, argv); syslog_level = get_arg_log_level(prog, real_switch, "syslog", argc, argv);
if (syslog_level < 0) if (!syslog_level)
goto show_need_help; goto show_need_help;
--argc; --argc;
argv++; argv++;
@ -1257,14 +1310,14 @@ static int run_from_cmd_line(int argc, char *_argv[],
#endif /* DONT_PARSE_COMMAND_LINE */ #endif /* DONT_PARSE_COMMAND_LINE */
#ifdef GETENV_FUNCTION #ifdef GETENV_FUNCTION
if (syslog_level < 0) { if (!syslog_level) {
char *s; char *s;
s = getenv("PLTSYSLOG"); s = getenv("PLTSYSLOG");
if (s) { if (s) {
syslog_level = get_log_level(prog, NULL, "PLTSYSLOG", "syslog", s); syslog_level = get_log_level(prog, NULL, "PLTSYSLOG", "syslog", s);
} }
} }
if (stderr_level < 0) { if (!stderr_level) {
char *s; char *s;
s = getenv("PLTSTDERR"); s = getenv("PLTSTDERR");
if (s) { if (s) {
@ -1276,7 +1329,7 @@ static int run_from_cmd_line(int argc, char *_argv[],
} }
#endif #endif
scheme_set_logging(syslog_level, stderr_level); scheme_set_logging_spec(syslog_level, stderr_level);
#ifndef NO_FILE_SYSTEM_UTILS #ifndef NO_FILE_SYSTEM_UTILS
/* Setup path for "collects" collection directory: */ /* Setup path for "collects" collection directory: */
@ -1471,8 +1524,8 @@ static int run_from_cmd_line(int argc, char *_argv[],
# endif # endif
" -d, --no-delay: Disable on-demand loading of syntax and code\n" " -d, --no-delay: Disable on-demand loading of syntax and code\n"
" -b, --binary : Read stdin and write stdout/stderr in binary mode\n" " -b, --binary : Read stdin and write stdout/stderr in binary mode\n"
" -W <level>, --warn <level> : Set stderr logging to <level>\n" " -W <levels>, --warn <levels> : Set stderr logging to <levels>\n"
" -L <level>, --syslog <level> : Set syslog logging to <level>\n" " -L <levels>, --syslog <levels> : Set syslog logging to <levels>\n"
" Meta options:\n" " Meta options:\n"
" -- : No argument following this switch is used as a switch\n" " -- : No argument following this switch is used as a switch\n"
" -h, --help : Show this information and exits, ignoring other options\n" " -h, --help : Show this information and exits, ignoring other options\n"

View File

@ -1076,7 +1076,7 @@ typedef struct Scheme_Thread {
struct Scheme_Marshal_Tables *current_mt; struct Scheme_Marshal_Tables *current_mt;
Scheme_Object *constant_folding; /* compiler hack */ struct Optimize_Info *constant_folding; /* compiler hack */
Scheme_Object *reading_delayed; /* reader hack */ Scheme_Object *reading_delayed; /* reader hack */
Scheme_Object *(*overflow_k)(void); Scheme_Object *(*overflow_k)(void);
@ -1769,6 +1769,7 @@ MZ_EXTERN void scheme_set_startup_load_on_demand(int);
MZ_EXTERN void scheme_set_ignore_user_paths(int); MZ_EXTERN void scheme_set_ignore_user_paths(int);
MZ_EXTERN void scheme_set_ignore_link_paths(int); MZ_EXTERN void scheme_set_ignore_link_paths(int);
MZ_EXTERN void scheme_set_logging(int syslog_level, int stderr_level); MZ_EXTERN void scheme_set_logging(int syslog_level, int stderr_level);
MZ_EXTERN void scheme_set_logging_spec(Scheme_Object *syslog_level, Scheme_Object *stderr_level);
MZ_EXTERN int scheme_get_allow_set_undefined(); MZ_EXTERN int scheme_get_allow_set_undefined();

View File

@ -273,6 +273,8 @@ typedef struct Thread_Local_Variables {
struct gmp_tmp_stack gmp_tmp_xxx_; struct gmp_tmp_stack gmp_tmp_xxx_;
struct gmp_tmp_stack *gmp_tmp_current_; struct gmp_tmp_stack *gmp_tmp_current_;
struct Scheme_Logger *scheme_main_logger_; struct Scheme_Logger *scheme_main_logger_;
struct Scheme_Logger *scheme_gc_logger_;
struct Scheme_Logger *scheme_future_logger_;
int intdef_counter_; int intdef_counter_;
int builtin_ref_counter_; int builtin_ref_counter_;
int env_uid_counter_; int env_uid_counter_;
@ -620,6 +622,8 @@ XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL;
#define gmp_tmp_xxx XOA (scheme_get_thread_local_variables()->gmp_tmp_xxx_) #define gmp_tmp_xxx XOA (scheme_get_thread_local_variables()->gmp_tmp_xxx_)
#define gmp_tmp_current XOA (scheme_get_thread_local_variables()->gmp_tmp_current_) #define gmp_tmp_current XOA (scheme_get_thread_local_variables()->gmp_tmp_current_)
#define scheme_main_logger XOA (scheme_get_thread_local_variables()->scheme_main_logger_) #define scheme_main_logger XOA (scheme_get_thread_local_variables()->scheme_main_logger_)
#define scheme_gc_logger XOA (scheme_get_thread_local_variables()->scheme_gc_logger_)
#define scheme_future_logger XOA (scheme_get_thread_local_variables()->scheme_future_logger_)
#define intdef_counter XOA (scheme_get_thread_local_variables()->intdef_counter_) #define intdef_counter XOA (scheme_get_thread_local_variables()->intdef_counter_)
#define builtin_ref_counter XOA (scheme_get_thread_local_variables()->builtin_ref_counter_) #define builtin_ref_counter XOA (scheme_get_thread_local_variables()->builtin_ref_counter_)
#define env_uid_counter XOA (scheme_get_thread_local_variables()->env_uid_counter_) #define env_uid_counter XOA (scheme_get_thread_local_variables()->env_uid_counter_)

View File

@ -3568,7 +3568,7 @@ void scheme_bind_syntaxes(const char *where, Scheme_Object *names, Scheme_Object
a = scheme_compile_expr_lift_to_let(a, eenv, &mrec, 0); a = scheme_compile_expr_lift_to_let(a, eenv, &mrec, 0);
oi = scheme_optimize_info_create(eenv->prefix); oi = scheme_optimize_info_create(eenv->prefix, 1);
if (!(rec[drec].comp_flags & COMP_CAN_INLINE)) if (!(rec[drec].comp_flags & COMP_CAN_INLINE))
scheme_optimize_info_never_inline(oi); scheme_optimize_info_never_inline(oi);
a = scheme_optimize_expr(a, oi, 0); a = scheme_optimize_expr(a, oi, 0);
@ -4004,7 +4004,7 @@ int scheme_get_eval_type(Scheme_Object *obj)
return SCHEME_EVAL_GENERAL; return SCHEME_EVAL_GENERAL;
} }
Scheme_Object *scheme_try_apply(Scheme_Object *f, Scheme_Object *args, Scheme_Object *context) Scheme_Object *scheme_try_apply(Scheme_Object *f, Scheme_Object *args, Optimize_Info *info)
/* Apply `f' to `args' and ignore failues --- used for constant /* Apply `f' to `args' and ignore failues --- used for constant
folding attempts */ folding attempts */
{ {
@ -4013,7 +4013,7 @@ Scheme_Object *scheme_try_apply(Scheme_Object *f, Scheme_Object *args, Scheme_Ob
mz_jmp_buf *savebuf, newbuf; mz_jmp_buf *savebuf, newbuf;
scheme_current_thread->reading_delayed = NULL; scheme_current_thread->reading_delayed = NULL;
scheme_current_thread->constant_folding = (context ? context : scheme_true); scheme_current_thread->constant_folding = (info ? info : (Optimize_Info *)scheme_false);
savebuf = scheme_current_thread->error_buf; savebuf = scheme_current_thread->error_buf;
scheme_current_thread->error_buf = &newbuf; scheme_current_thread->error_buf = &newbuf;
@ -4048,7 +4048,7 @@ static int foldable_body(Scheme_Object *f)
return (SCHEME_TYPE(d->code) > _scheme_values_types_); return (SCHEME_TYPE(d->code) > _scheme_values_types_);
} }
Scheme_Object *scheme_make_application(Scheme_Object *v) Scheme_Object *scheme_make_application(Scheme_Object *v, Optimize_Info *info)
{ {
Scheme_Object *o; Scheme_Object *o;
int i, nv; int i, nv;
@ -4080,7 +4080,7 @@ Scheme_Object *scheme_make_application(Scheme_Object *v)
== SCHEME_PRIM_OPT_FOLDING)) == SCHEME_PRIM_OPT_FOLDING))
|| (SAME_TYPE(SCHEME_TYPE(f), scheme_closure_type) || (SAME_TYPE(SCHEME_TYPE(f), scheme_closure_type)
&& (foldable_body(f)))) { && (foldable_body(f)))) {
f = scheme_try_apply(f, SCHEME_CDR(v), scheme_false); f = scheme_try_apply(f, SCHEME_CDR(v), info);
if (f) if (f)
return f; return f;
@ -4246,7 +4246,7 @@ static Scheme_Object *compile_application(Scheme_Object *form, Scheme_Comp_Env *
scheme_compile_rec_done_local(rec, drec); scheme_compile_rec_done_local(rec, drec);
form = scheme_inner_compile_list(form, scheme_no_defines(env), rec, drec, 1); form = scheme_inner_compile_list(form, scheme_no_defines(env), rec, drec, 1);
result = scheme_make_application(form); result = scheme_make_application(form, NULL);
return result; return result;
} }

View File

@ -1,14 +1,14 @@
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,50,84,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,51,84,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,14, 0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14,
0,21,0,26,0,30,0,33,0,38,0,51,0,58,0,62,0,67,0,74,0, 0,27,0,34,0,39,0,43,0,46,0,51,0,58,0,62,0,67,0,74,0,
83,0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149, 83,0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,
0,163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1, 0,163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1,
129,1,162,1,221,1,21,2,99,2,155,2,160,2,180,2,73,3,93,3,145, 129,1,162,1,221,1,21,2,99,2,155,2,160,2,180,2,73,3,93,3,145,
3,211,3,100,4,242,4,40,5,51,5,130,5,0,0,92,7,0,0,69,35, 3,211,3,100,4,242,4,40,5,51,5,130,5,0,0,92,7,0,0,69,35,
37,109,105,110,45,115,116,120,29,11,11,11,66,108,101,116,114,101,99,64,108, 37,109,105,110,45,115,116,120,29,11,11,11,72,112,97,114,97,109,101,116,101,
101,116,42,63,97,110,100,62,111,114,64,119,104,101,110,72,112,97,114,97,109, 114,105,122,101,66,108,101,116,114,101,99,64,108,101,116,42,63,97,110,100,62,
101,116,101,114,105,122,101,66,100,101,102,105,110,101,63,108,101,116,64,99,111, 111,114,64,119,104,101,110,66,100,101,102,105,110,101,63,108,101,116,64,99,111,
110,100,66,117,110,108,101,115,115,68,104,101,114,101,45,115,116,120,29,11,11, 110,100,66,117,110,108,101,115,115,68,104,101,114,101,45,115,116,120,29,11,11,
11,65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11, 11,65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11,
29,94,2,15,68,35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103, 29,94,2,15,68,35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,
@ -16,28 +16,28 @@
73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97, 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, 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, 121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,
240,190,86,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36, 240,215,86,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,
16,20,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2, 16,20,2,3,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,11,2,2,2,12,2,2, 2,2,8,2,2,2,9,2,2,2,10,2,2,2,11,2,2,2,12,2,2,
97,37,11,8,240,190,86,0,0,93,159,2,16,36,37,16,2,2,13,161,2, 97,37,11,8,240,215,86,0,0,93,159,2,16,36,37,16,2,2,13,161,2,
2,37,2,13,2,2,2,13,96,11,11,8,240,190,86,0,0,16,0,96,38, 2,37,2,13,2,2,2,13,96,11,11,8,240,215,86,0,0,16,0,96,38,
11,8,240,190,86,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2, 11,8,240,215,86,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,
14,2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,163,4,195,249, 14,2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,163,4,195,249,
22,156,4,80,158,39,36,251,22,89,2,18,248,22,104,199,12,249,22,79,2, 22,156,4,80,158,39,36,251,22,89,2,18,248,22,104,199,12,249,22,79,2,
19,248,22,106,201,27,248,22,163,4,195,249,22,156,4,80,158,39,36,251,22, 19,248,22,106,201,27,248,22,163,4,195,249,22,156,4,80,158,39,36,251,22,
89,2,18,248,22,104,199,249,22,79,2,19,248,22,106,201,12,27,248,22,81, 89,2,18,248,22,104,199,249,22,79,2,19,248,22,106,201,12,27,248,22,81,
248,22,163,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248, 248,22,163,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248,
22,81,194,248,22,80,193,249,22,156,4,80,158,39,36,251,22,89,2,18,248, 22,81,194,248,22,80,193,249,22,156,4,80,158,39,36,251,22,89,2,18,248,
22,80,199,249,22,79,2,5,248,22,81,201,11,18,100,10,13,16,6,36,2, 22,80,199,249,22,79,2,6,248,22,81,201,11,18,100,10,13,16,6,36,2,
14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2,20,3, 14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2,20,3,
1,8,101,110,118,49,54,57,54,53,16,4,11,11,2,21,3,1,8,101,110, 1,8,101,110,118,49,55,48,50,53,16,4,11,11,2,21,3,1,8,101,110,
118,49,54,57,54,54,27,248,22,81,248,22,163,4,196,28,248,22,87,193,20, 118,49,55,48,50,54,27,248,22,81,248,22,163,4,196,28,248,22,87,193,20,
14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,80,193,249,22,156,4, 14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,80,193,249,22,156,4,
80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22,89,2,23,248, 80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22,89,2,23,248,
22,80,201,251,22,89,2,18,2,23,2,23,249,22,79,2,6,248,22,81,204, 22,80,201,251,22,89,2,18,2,23,2,23,249,22,79,2,7,248,22,81,204,
18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8, 18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,
29,16,4,11,11,2,20,3,1,8,101,110,118,49,54,57,54,56,16,4,11, 29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,48,50,56,16,4,11,
11,2,21,3,1,8,101,110,118,49,54,57,54,57,248,22,163,4,193,27,248, 11,2,21,3,1,8,101,110,118,49,55,48,50,57,248,22,163,4,193,27,248,
22,163,4,194,249,22,79,248,22,89,248,22,80,196,248,22,81,195,27,248,22, 22,163,4,194,249,22,79,248,22,89,248,22,80,196,248,22,81,195,27,248,22,
81,248,22,163,4,23,197,1,249,22,156,4,80,158,39,36,28,248,22,64,248, 81,248,22,163,4,23,197,1,249,22,156,4,80,158,39,36,28,248,22,64,248,
22,157,4,248,22,80,23,198,2,27,249,22,2,32,0,88,163,8,36,37,43, 22,157,4,248,22,80,23,198,2,27,249,22,2,32,0,88,163,8,36,37,43,
@ -52,7 +52,7 @@
248,22,80,201,248,22,81,198,27,248,22,81,248,22,163,4,196,27,248,22,163, 248,22,80,201,248,22,81,198,27,248,22,81,248,22,163,4,196,27,248,22,163,
4,248,22,80,195,249,22,156,4,80,158,40,36,28,248,22,87,195,250,22,90, 4,248,22,80,195,249,22,156,4,80,158,40,36,28,248,22,87,195,250,22,90,
2,22,9,248,22,81,199,250,22,89,2,10,248,22,89,248,22,80,199,250,22, 2,22,9,248,22,81,199,250,22,89,2,10,248,22,89,248,22,80,199,250,22,
90,2,4,248,22,81,201,248,22,81,202,27,248,22,81,248,22,163,4,23,197, 90,2,5,248,22,81,201,248,22,81,202,27,248,22,81,248,22,163,4,23,197,
1,27,249,22,1,22,93,249,22,2,22,163,4,248,22,163,4,248,22,80,199, 1,27,249,22,1,22,93,249,22,2,22,163,4,248,22,163,4,248,22,80,199,
248,22,183,4,249,22,156,4,80,158,41,36,251,22,89,1,22,119,105,116,104, 248,22,183,4,249,22,156,4,80,158,41,36,251,22,89,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,26,250, 45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,2,26,250,
@ -67,8 +67,8 @@
22,89,2,18,28,249,22,152,9,248,22,157,4,248,22,80,200,64,101,108,115, 22,89,2,18,28,249,22,152,9,248,22,157,4,248,22,80,200,64,101,108,115,
101,10,248,22,80,197,250,22,90,2,22,9,248,22,81,200,249,22,79,2,11, 101,10,248,22,80,197,250,22,90,2,22,9,248,22,81,200,249,22,79,2,11,
248,22,81,202,99,13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8, 248,22,81,202,99,13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,
30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,54,57,57,49,16, 30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,48,53,49,16,
4,11,11,2,21,3,1,8,101,110,118,49,54,57,57,50,18,158,94,10,64, 4,11,11,2,21,3,1,8,101,110,118,49,55,48,53,50,18,158,94,10,64,
118,111,105,100,8,48,27,248,22,81,248,22,163,4,196,249,22,156,4,80,158, 118,111,105,100,8,48,27,248,22,81,248,22,163,4,196,249,22,156,4,80,158,
39,36,28,248,22,64,248,22,157,4,248,22,80,197,250,22,89,2,28,248,22, 39,36,28,248,22,64,248,22,157,4,248,22,80,197,250,22,89,2,28,248,22,
89,248,22,80,199,248,22,104,198,27,248,22,157,4,248,22,80,197,250,22,89, 89,248,22,80,199,248,22,104,198,27,248,22,157,4,248,22,80,197,250,22,89,
@ -82,16 +82,16 @@
0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,11,16,5, 0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,11,16,5,
11,20,15,16,2,20,14,159,36,36,37,80,158,36,36,36,20,113,159,36,16, 11,20,15,16,2,20,14,159,36,36,37,80,158,36,36,36,20,113,159,36,16,
1,2,13,16,1,33,33,10,16,5,2,12,88,163,8,36,37,53,37,9,223, 1,2,13,16,1,33,33,10,16,5,2,12,88,163,8,36,37,53,37,9,223,
0,33,34,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,7,88,163, 0,33,34,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,8,88,163,
8,36,37,53,37,9,223,0,33,35,36,20,113,159,36,16,1,2,13,16,0, 8,36,37,53,37,9,223,0,33,35,36,20,113,159,36,16,1,2,13,16,0,
11,16,5,2,5,88,163,8,36,37,53,37,9,223,0,33,36,36,20,113,159, 11,16,5,2,6,88,163,8,36,37,53,37,9,223,0,33,36,36,20,113,159,
36,16,1,2,13,16,1,33,37,11,16,5,2,6,88,163,8,36,37,56,37, 36,16,1,2,13,16,1,33,37,11,16,5,2,7,88,163,8,36,37,56,37,
9,223,0,33,38,36,20,113,159,36,16,1,2,13,16,1,33,39,11,16,5, 9,223,0,33,38,36,20,113,159,36,16,1,2,13,16,1,33,39,11,16,5,
2,10,88,163,8,36,37,58,37,9,223,0,33,42,36,20,113,159,36,16,1, 2,10,88,163,8,36,37,58,37,9,223,0,33,42,36,20,113,159,36,16,1,
2,13,16,0,11,16,5,2,3,88,163,8,36,37,53,37,9,223,0,33,44, 2,13,16,0,11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,44,
36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,4,88,163,8,36,37, 36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,5,88,163,8,36,37,
54,37,9,223,0,33,45,36,20,113,159,36,16,1,2,13,16,0,11,16,5, 54,37,9,223,0,33,45,36,20,113,159,36,16,1,2,13,16,0,11,16,5,
2,8,88,163,8,36,37,56,37,9,223,0,33,46,36,20,113,159,36,16,1, 2,3,88,163,8,36,37,56,37,9,223,0,33,46,36,20,113,159,36,16,1,
2,13,16,0,11,16,5,2,11,88,163,8,36,37,58,37,9,223,0,33,47, 2,13,16,0,11,16,5,2,11,88,163,8,36,37,58,37,9,223,0,33,47,
36,20,113,159,36,16,1,2,13,16,1,33,49,11,16,5,2,9,88,163,8, 36,20,113,159,36,16,1,2,13,16,1,33,49,11,16,5,2,9,88,163,8,
36,37,54,37,9,223,0,33,50,36,20,113,159,36,16,1,2,13,16,0,11, 36,37,54,37,9,223,0,33,50,36,20,113,159,36,16,1,2,13,16,0,11,
@ -99,7 +99,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 2029); EVAL_ONE_SIZED_STR((char *)expr, 2029);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,50,84,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,51,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,115,0,0,0,1,0,0,8,0,21, 0,0,0,0,0,0,0,0,0,0,0,115,0,0,0,1,0,0,8,0,21,
0,26,0,43,0,65,0,94,0,109,0,127,0,139,0,155,0,169,0,191,0, 0,26,0,43,0,65,0,94,0,109,0,127,0,139,0,155,0,169,0,191,0,
207,0,224,0,246,0,1,1,7,1,16,1,23,1,30,1,42,1,58,1,82, 207,0,224,0,246,0,1,1,7,1,16,1,23,1,30,1,42,1,58,1,82,
@ -151,177 +151,177 @@
105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,6,11, 105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,6,11,
11,80,76,84,67,79,76,76,69,67,84,83,69,97,100,100,111,110,45,100,105, 11,80,76,84,67,79,76,76,69,67,84,83,69,97,100,100,111,110,45,100,105,
114,6,8,8,99,111,108,108,101,99,116,115,27,20,13,159,80,159,37,52,37, 114,6,8,8,99,111,108,108,101,99,116,115,27,20,13,159,80,159,37,52,37,
254,80,159,44,53,37,249,22,33,11,80,159,46,52,37,22,158,14,10,22,165, 254,80,159,44,53,37,249,22,33,11,80,159,46,52,37,22,159,14,10,22,166,
14,10,22,166,14,10,248,22,139,6,23,196,2,28,248,22,137,7,23,194,2, 14,10,22,167,14,10,248,22,139,6,23,196,2,28,248,22,137,7,23,194,2,
12,86,94,248,22,160,9,23,194,1,27,20,13,159,80,159,38,52,37,254,80, 12,86,94,248,22,160,9,23,194,1,27,20,13,159,80,159,38,52,37,254,80,
159,45,53,37,249,22,33,11,80,159,47,52,37,22,158,14,10,22,165,14,10, 159,45,53,37,249,22,33,11,80,159,47,52,37,22,159,14,10,22,166,14,10,
22,166,14,10,248,22,139,6,23,197,2,28,248,22,137,7,23,194,2,12,86, 22,167,14,10,248,22,139,6,23,197,2,28,248,22,137,7,23,194,2,12,86,
94,248,22,160,9,23,194,1,27,20,13,159,80,159,39,52,37,254,80,159,46, 94,248,22,160,9,23,194,1,27,20,13,159,80,159,39,52,37,254,80,159,46,
53,37,249,22,33,11,80,159,48,52,37,22,158,14,10,22,165,14,10,22,166, 53,37,249,22,33,11,80,159,48,52,37,22,159,14,10,22,166,14,10,22,167,
14,10,248,22,139,6,23,198,2,28,248,22,137,7,23,194,2,12,86,94,248, 14,10,248,22,139,6,23,198,2,28,248,22,137,7,23,194,2,12,86,94,248,
22,160,9,23,194,1,248,80,159,40,8,32,39,197,28,248,22,87,23,195,2, 22,160,9,23,194,1,248,80,159,40,8,32,39,197,28,248,22,87,23,195,2,
9,27,248,22,80,23,196,2,27,28,248,22,144,15,23,195,2,23,194,1,28, 9,27,248,22,80,23,196,2,27,28,248,22,145,15,23,195,2,23,194,1,28,
248,22,143,15,23,195,2,249,22,145,15,23,196,1,250,80,159,43,39,39,248, 248,22,144,15,23,195,2,249,22,146,15,23,196,1,250,80,159,43,39,39,248,
22,160,15,2,32,11,10,250,80,159,41,39,39,248,22,160,15,2,32,23,197, 22,161,15,2,32,11,10,250,80,159,41,39,39,248,22,161,15,2,32,23,197,
1,10,28,23,193,2,249,22,79,248,22,147,15,249,22,145,15,23,198,1,247, 1,10,28,23,193,2,249,22,79,248,22,148,15,249,22,146,15,23,198,1,247,
22,161,15,27,248,22,81,23,200,1,28,248,22,87,23,194,2,9,27,248,22, 22,162,15,27,248,22,81,23,200,1,28,248,22,87,23,194,2,9,27,248,22,
80,23,195,2,27,28,248,22,144,15,23,195,2,23,194,1,28,248,22,143,15, 80,23,195,2,27,28,248,22,145,15,23,195,2,23,194,1,28,248,22,144,15,
23,195,2,249,22,145,15,23,196,1,250,80,159,48,39,39,248,22,160,15,2, 23,195,2,249,22,146,15,23,196,1,250,80,159,48,39,39,248,22,161,15,2,
32,11,10,250,80,159,46,39,39,248,22,160,15,2,32,23,197,1,10,28,23, 32,11,10,250,80,159,46,39,39,248,22,161,15,2,32,23,197,1,10,28,23,
193,2,249,22,79,248,22,147,15,249,22,145,15,23,198,1,247,22,161,15,248, 193,2,249,22,79,248,22,148,15,249,22,146,15,23,198,1,247,22,162,15,248,
80,159,46,8,31,39,248,22,81,23,199,1,86,94,23,193,1,248,80,159,44, 80,159,46,8,31,39,248,22,81,23,199,1,86,94,23,193,1,248,80,159,44,
8,31,39,248,22,81,23,197,1,86,94,23,193,1,27,248,22,81,23,198,1, 8,31,39,248,22,81,23,197,1,86,94,23,193,1,27,248,22,81,23,198,1,
28,248,22,87,23,194,2,9,27,248,22,80,23,195,2,27,28,248,22,144,15, 28,248,22,87,23,194,2,9,27,248,22,80,23,195,2,27,28,248,22,145,15,
23,195,2,23,194,1,28,248,22,143,15,23,195,2,249,22,145,15,23,196,1, 23,195,2,23,194,1,28,248,22,144,15,23,195,2,249,22,146,15,23,196,1,
250,80,159,46,39,39,248,22,160,15,2,32,11,10,250,80,159,44,39,39,248, 250,80,159,46,39,39,248,22,161,15,2,32,11,10,250,80,159,44,39,39,248,
22,160,15,2,32,23,197,1,10,28,23,193,2,249,22,79,248,22,147,15,249, 22,161,15,2,32,23,197,1,10,28,23,193,2,249,22,79,248,22,148,15,249,
22,145,15,23,198,1,247,22,161,15,248,80,159,44,8,31,39,248,22,81,23, 22,146,15,23,198,1,247,22,162,15,248,80,159,44,8,31,39,248,22,81,23,
199,1,248,80,159,42,8,31,39,248,22,81,196,28,248,22,87,23,195,2,9, 199,1,248,80,159,42,8,31,39,248,22,81,196,28,248,22,87,23,195,2,9,
27,248,22,80,23,196,2,27,28,248,22,144,15,23,195,2,23,194,1,28,248, 27,248,22,80,23,196,2,27,28,248,22,145,15,23,195,2,23,194,1,28,248,
22,143,15,23,195,2,249,22,145,15,23,196,1,250,80,159,43,39,39,248,22, 22,144,15,23,195,2,249,22,146,15,23,196,1,250,80,159,43,39,39,248,22,
160,15,2,32,11,10,250,80,159,41,39,39,248,22,160,15,2,32,23,197,1, 161,15,2,32,11,10,250,80,159,41,39,39,248,22,161,15,2,32,23,197,1,
10,28,23,193,2,249,22,79,248,22,147,15,249,22,145,15,23,198,1,247,22, 10,28,23,193,2,249,22,79,248,22,148,15,249,22,146,15,23,198,1,247,22,
161,15,248,80,159,41,8,30,39,248,22,81,23,200,1,248,80,159,39,8,30, 162,15,248,80,159,41,8,30,39,248,22,81,23,200,1,248,80,159,39,8,30,
39,248,22,81,197,28,248,22,87,23,195,2,9,27,248,22,80,23,196,2,27, 39,248,22,81,197,28,248,22,87,23,195,2,9,27,248,22,80,23,196,2,27,
28,248,22,144,15,23,195,2,23,194,1,28,248,22,143,15,23,195,2,249,22, 28,248,22,145,15,23,195,2,23,194,1,28,248,22,144,15,23,195,2,249,22,
145,15,23,196,1,250,80,159,43,39,39,248,22,160,15,2,32,11,10,250,80, 146,15,23,196,1,250,80,159,43,39,39,248,22,161,15,2,32,11,10,250,80,
159,41,39,39,248,22,160,15,2,32,23,197,1,10,28,23,193,2,249,22,79, 159,41,39,39,248,22,161,15,2,32,23,197,1,10,28,23,193,2,249,22,79,
248,22,147,15,249,22,145,15,23,198,1,247,22,161,15,248,80,159,41,8,29, 248,22,148,15,249,22,146,15,23,198,1,247,22,162,15,248,80,159,41,8,29,
39,248,22,81,23,200,1,248,80,159,39,8,29,39,248,22,81,197,27,248,22, 39,248,22,81,23,200,1,248,80,159,39,8,29,39,248,22,81,197,27,248,22,
184,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,142,7,23, 185,14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,142,7,23,
195,2,27,248,22,142,15,195,28,192,192,248,22,143,15,195,11,86,94,28,28, 195,2,27,248,22,143,15,195,28,192,192,248,22,144,15,195,11,86,94,28,28,
248,22,185,14,23,195,2,10,28,248,22,184,14,23,195,2,10,28,248,22,142, 248,22,186,14,23,195,2,10,28,248,22,185,14,23,195,2,10,28,248,22,142,
7,23,195,2,28,248,22,142,15,23,195,2,10,248,22,143,15,23,195,2,11, 7,23,195,2,28,248,22,143,15,23,195,2,10,248,22,144,15,23,195,2,11,
12,250,22,189,9,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115, 12,250,22,189,9,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,
101,2,33,23,197,2,28,28,248,22,185,14,23,195,2,249,22,152,9,248,22, 101,2,33,23,197,2,28,28,248,22,186,14,23,195,2,249,22,152,9,248,22,
186,14,23,197,2,2,34,249,22,152,9,247,22,164,8,2,34,27,28,248,22, 187,14,23,197,2,2,34,249,22,152,9,247,22,164,8,2,34,27,28,248,22,
142,7,23,196,2,23,195,2,248,22,154,8,248,22,189,14,23,197,2,28,249, 142,7,23,196,2,23,195,2,248,22,154,8,248,22,190,14,23,197,2,28,249,
22,176,15,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93, 22,177,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,142,7,195,248,22,128,15,195,194,27, 91,92,92,93,34,23,195,2,28,248,22,142,7,195,248,22,129,15,195,194,27,
248,22,181,7,23,195,1,249,22,129,15,248,22,157,8,250,22,184,15,0,6, 248,22,181,7,23,195,1,249,22,130,15,248,22,157,8,250,22,185,15,0,6,
35,114,120,34,47,34,28,249,22,176,15,0,22,35,114,120,34,91,47,92,92, 35,114,120,34,47,34,28,249,22,177,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, 93,91,46,32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,
22,184,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42, 22,185,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,34,28,248,22, 41,36,34,23,202,1,6,2,2,92,49,80,159,44,37,38,2,34,28,248,22,
142,7,194,248,22,128,15,194,193,32,58,88,163,8,36,39,53,11,70,102,111, 142,7,194,248,22,129,15,194,193,32,58,88,163,8,36,39,53,11,70,102,111,
117,110,100,45,101,120,101,99,222,33,61,32,59,88,163,8,36,40,58,11,64, 117,110,100,45,101,120,101,99,222,33,61,32,59,88,163,8,36,40,58,11,64,
110,101,120,116,222,33,60,27,248,22,146,15,23,196,2,28,249,22,154,9,23, 110,101,120,116,222,33,60,27,248,22,147,15,23,196,2,28,249,22,154,9,23,
195,2,23,197,1,11,28,248,22,142,15,23,194,2,27,249,22,138,15,23,197, 195,2,23,197,1,11,28,248,22,143,15,23,194,2,27,249,22,139,15,23,197,
1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36,11,248,22,141,15, 1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36,11,248,22,142,15,
23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,146,15, 23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,147,15,
23,199,2,28,249,22,154,9,23,195,2,23,200,2,11,28,248,22,142,15,23, 23,199,2,28,249,22,154,9,23,195,2,23,200,2,11,28,248,22,143,15,23,
194,2,250,2,58,23,205,2,23,206,2,249,22,138,15,23,200,2,23,198,1, 194,2,250,2,58,23,205,2,23,206,2,249,22,139,15,23,200,2,23,198,1,
250,2,58,23,205,2,23,206,2,23,196,1,11,28,23,193,2,192,86,94,23, 250,2,58,23,205,2,23,206,2,23,196,1,11,28,23,193,2,192,86,94,23,
193,1,27,28,248,22,184,14,23,196,2,27,249,22,138,15,23,198,2,23,205, 193,1,27,28,248,22,185,14,23,196,2,27,249,22,139,15,23,198,2,23,205,
2,28,28,248,22,133,15,193,10,248,22,132,15,193,192,11,11,28,23,193,2, 2,28,28,248,22,134,15,193,10,248,22,133,15,193,192,11,11,28,23,193,2,
192,86,94,23,193,1,28,23,203,2,11,27,248,22,146,15,23,200,2,28,249, 192,86,94,23,193,1,28,23,203,2,11,27,248,22,147,15,23,200,2,28,249,
22,154,9,23,195,2,23,201,1,11,28,248,22,142,15,23,194,2,250,2,58, 22,154,9,23,195,2,23,201,1,11,28,248,22,143,15,23,194,2,250,2,58,
23,206,1,23,207,1,249,22,138,15,23,201,1,23,198,1,250,2,58,205,206, 23,206,1,23,207,1,249,22,139,15,23,201,1,23,198,1,250,2,58,205,206,
195,192,86,94,23,194,1,28,23,196,2,90,159,39,11,89,161,39,36,11,248, 195,192,86,94,23,194,1,28,23,196,2,90,159,39,11,89,161,39,36,11,248,
22,141,15,23,197,2,86,95,23,195,1,23,194,1,27,28,23,201,2,27,248, 22,142,15,23,197,2,86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,
22,146,15,23,199,2,28,249,22,154,9,23,195,2,23,200,2,11,28,248,22, 22,147,15,23,199,2,28,249,22,154,9,23,195,2,23,200,2,11,28,248,22,
142,15,23,194,2,250,2,58,23,204,2,23,205,2,249,22,138,15,23,200,2, 143,15,23,194,2,250,2,58,23,204,2,23,205,2,249,22,139,15,23,200,2,
23,198,1,250,2,58,23,204,2,23,205,2,23,196,1,11,28,23,193,2,192, 23,198,1,250,2,58,23,204,2,23,205,2,23,196,1,11,28,23,193,2,192,
86,94,23,193,1,27,28,248,22,184,14,23,196,2,27,249,22,138,15,23,198, 86,94,23,193,1,27,28,248,22,185,14,23,196,2,27,249,22,139,15,23,198,
2,23,204,2,28,28,248,22,133,15,193,10,248,22,132,15,193,192,11,11,28, 2,23,204,2,28,28,248,22,134,15,193,10,248,22,133,15,193,192,11,11,28,
23,193,2,192,86,94,23,193,1,28,23,202,2,11,27,248,22,146,15,23,200, 23,193,2,192,86,94,23,193,1,28,23,202,2,11,27,248,22,147,15,23,200,
2,28,249,22,154,9,23,195,2,23,201,1,11,28,248,22,142,15,23,194,2, 2,28,249,22,154,9,23,195,2,23,201,1,11,28,248,22,143,15,23,194,2,
250,2,58,23,205,1,23,206,1,249,22,138,15,23,201,1,23,198,1,250,2, 250,2,58,23,205,1,23,206,1,249,22,139,15,23,201,1,23,198,1,250,2,
58,204,205,195,192,28,23,193,2,90,159,39,11,89,161,39,36,11,248,22,141, 58,204,205,195,192,28,23,193,2,90,159,39,11,89,161,39,36,11,248,22,142,
15,23,199,2,86,95,23,195,1,23,194,1,27,28,23,198,2,251,2,59,23, 15,23,199,2,86,95,23,195,1,23,194,1,27,28,23,198,2,251,2,59,23,
198,2,23,203,2,23,201,2,23,202,2,11,28,23,193,2,192,86,94,23,193, 198,2,23,203,2,23,201,2,23,202,2,11,28,23,193,2,192,86,94,23,193,
1,27,28,248,22,184,14,195,27,249,22,138,15,197,200,28,28,248,22,133,15, 1,27,28,248,22,185,14,195,27,249,22,139,15,197,200,28,28,248,22,134,15,
193,10,248,22,132,15,193,192,11,11,28,192,192,28,198,11,251,2,59,198,203, 193,10,248,22,133,15,193,192,11,11,28,192,192,28,198,11,251,2,59,198,203,
201,202,194,32,62,88,163,8,36,40,58,11,2,31,222,33,63,28,248,22,87, 201,202,194,32,62,88,163,8,36,40,58,11,2,31,222,33,63,28,248,22,87,
23,197,2,11,27,248,22,145,15,248,22,80,23,199,2,27,249,22,138,15,23, 23,197,2,11,27,248,22,146,15,248,22,80,23,199,2,27,249,22,139,15,23,
196,1,23,197,2,28,248,22,132,15,23,194,2,250,2,58,198,199,195,86,94, 196,1,23,197,2,28,248,22,133,15,23,194,2,250,2,58,198,199,195,86,94,
23,193,1,27,248,22,81,23,200,1,28,248,22,87,23,194,2,11,27,248,22, 23,193,1,27,248,22,81,23,200,1,28,248,22,87,23,194,2,11,27,248,22,
145,15,248,22,80,23,196,2,27,249,22,138,15,23,196,1,23,200,2,28,248, 146,15,248,22,80,23,196,2,27,249,22,139,15,23,196,1,23,200,2,28,248,
22,132,15,23,194,2,250,2,58,201,202,195,86,94,23,193,1,27,248,22,81, 22,133,15,23,194,2,250,2,58,201,202,195,86,94,23,193,1,27,248,22,81,
23,197,1,28,248,22,87,23,194,2,11,27,248,22,145,15,248,22,80,195,27, 23,197,1,28,248,22,87,23,194,2,11,27,248,22,146,15,248,22,80,195,27,
249,22,138,15,23,196,1,202,28,248,22,132,15,193,250,2,58,204,205,195,251, 249,22,139,15,23,196,1,202,28,248,22,133,15,193,250,2,58,204,205,195,251,
2,62,204,205,206,248,22,81,199,86,95,28,28,248,22,184,14,23,195,2,10, 2,62,204,205,206,248,22,81,199,86,95,28,28,248,22,185,14,23,195,2,10,
28,248,22,142,7,23,195,2,28,248,22,142,15,23,195,2,10,248,22,143,15, 28,248,22,142,7,23,195,2,28,248,22,143,15,23,195,2,10,248,22,144,15,
23,195,2,11,12,250,22,189,9,2,5,2,35,23,197,2,28,28,23,195,2, 23,195,2,11,12,250,22,189,9,2,5,2,35,23,197,2,28,28,23,195,2,
28,28,248,22,184,14,23,196,2,10,28,248,22,142,7,23,196,2,28,248,22, 28,28,248,22,185,14,23,196,2,10,28,248,22,142,7,23,196,2,28,248,22,
142,15,23,196,2,10,248,22,143,15,23,196,2,11,248,22,142,15,23,196,2, 143,15,23,196,2,10,248,22,144,15,23,196,2,11,248,22,143,15,23,196,2,
11,10,12,250,22,189,9,2,5,6,45,45,40,111,114,47,99,32,35,102,32, 11,10,12,250,22,189,9,2,5,6,45,45,40,111,114,47,99,32,35,102,32,
40,97,110,100,47,99,32,112,97,116,104,45,115,116,114,105,110,103,63,32,114, 40,97,110,100,47,99,32,112,97,116,104,45,115,116,114,105,110,103,63,32,114,
101,108,97,116,105,118,101,45,112,97,116,104,63,41,41,23,198,2,28,28,248, 101,108,97,116,105,118,101,45,112,97,116,104,63,41,41,23,198,2,28,28,248,
22,142,15,23,195,2,90,159,39,11,89,161,39,36,11,248,22,141,15,23,198, 22,143,15,23,195,2,90,159,39,11,89,161,39,36,11,248,22,142,15,23,198,
2,249,22,152,9,194,2,36,11,27,248,22,162,8,6,4,4,80,65,84,72, 2,249,22,152,9,194,2,36,11,27,248,22,162,8,6,4,4,80,65,84,72,
27,28,23,194,2,249,80,158,40,40,23,196,1,9,86,94,23,194,1,9,27, 27,28,23,194,2,249,80,158,40,40,23,196,1,9,86,94,23,194,1,9,27,
28,249,22,152,9,247,22,164,8,2,34,249,22,79,248,22,129,15,5,1,46, 28,249,22,152,9,247,22,164,8,2,34,249,22,79,248,22,130,15,5,1,46,
23,196,1,23,194,1,28,248,22,87,23,194,2,11,27,248,22,145,15,248,22, 23,196,1,23,194,1,28,248,22,87,23,194,2,11,27,248,22,146,15,248,22,
80,23,196,2,27,249,22,138,15,23,196,1,23,201,2,28,248,22,132,15,23, 80,23,196,2,27,249,22,139,15,23,196,1,23,201,2,28,248,22,133,15,23,
194,2,250,2,58,202,203,195,86,94,23,193,1,27,248,22,81,23,197,1,28, 194,2,250,2,58,202,203,195,86,94,23,193,1,27,248,22,81,23,197,1,28,
248,22,87,23,194,2,11,27,248,22,145,15,248,22,80,23,196,2,27,249,22, 248,22,87,23,194,2,11,27,248,22,146,15,248,22,80,23,196,2,27,249,22,
138,15,23,196,1,23,204,2,28,248,22,132,15,23,194,2,250,2,58,205,206, 139,15,23,196,1,23,204,2,28,248,22,133,15,23,194,2,250,2,58,205,206,
195,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11, 195,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,
27,248,22,145,15,248,22,80,195,27,249,22,138,15,23,196,1,206,28,248,22, 27,248,22,146,15,248,22,80,195,27,249,22,139,15,23,196,1,206,28,248,22,
132,15,193,250,2,58,23,16,23,17,195,251,2,62,23,16,23,17,23,18,248, 133,15,193,250,2,58,23,16,23,17,195,251,2,62,23,16,23,17,23,18,248,
22,81,199,27,248,22,145,15,23,196,1,28,248,22,132,15,193,250,2,58,198, 22,81,199,27,248,22,146,15,23,196,1,28,248,22,133,15,193,250,2,58,198,
199,195,11,250,80,159,39,39,39,196,197,11,250,80,159,39,39,39,196,11,11, 199,195,11,250,80,159,39,39,39,196,197,11,250,80,159,39,39,39,196,11,11,
32,67,88,163,8,36,39,57,11,2,31,222,33,69,0,8,35,114,120,35,34, 32,67,88,163,8,36,39,57,11,2,31,222,33,69,0,8,35,114,120,35,34,
92,34,34,27,249,22,172,15,23,197,2,23,198,2,28,23,193,2,86,94,23, 92,34,34,27,249,22,173,15,23,197,2,23,198,2,28,23,193,2,86,94,23,
196,1,27,248,22,104,23,195,2,27,27,248,22,113,23,197,1,27,249,22,172, 196,1,27,248,22,104,23,195,2,27,27,248,22,113,23,197,1,27,249,22,173,
15,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,104,23, 15,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,104,23,
195,2,27,250,2,67,23,203,2,23,204,1,248,22,113,23,199,1,28,249,22, 195,2,27,250,2,67,23,203,2,23,204,1,248,22,113,23,199,1,28,249,22,
139,8,23,196,2,2,37,249,22,93,23,202,2,194,249,22,79,248,22,129,15, 139,8,23,196,2,2,37,249,22,93,23,202,2,194,249,22,79,248,22,130,15,
28,249,22,152,9,247,22,164,8,2,34,250,22,184,15,2,68,23,200,1,2, 28,249,22,152,9,247,22,164,8,2,34,250,22,185,15,2,68,23,200,1,2,
37,23,197,1,194,86,95,23,199,1,23,193,1,28,249,22,139,8,23,196,2, 37,23,197,1,194,86,95,23,199,1,23,193,1,28,249,22,139,8,23,196,2,
2,37,249,22,93,23,200,2,9,249,22,79,248,22,129,15,28,249,22,152,9, 2,37,249,22,93,23,200,2,9,249,22,79,248,22,130,15,28,249,22,152,9,
247,22,164,8,2,34,250,22,184,15,2,68,23,200,1,2,37,23,197,1,9, 247,22,164,8,2,34,250,22,185,15,2,68,23,200,1,2,37,23,197,1,9,
28,249,22,139,8,23,196,2,2,37,249,22,93,197,194,86,94,23,196,1,249, 28,249,22,139,8,23,196,2,2,37,249,22,93,197,194,86,94,23,196,1,249,
22,79,248,22,129,15,28,249,22,152,9,247,22,164,8,2,34,250,22,184,15, 22,79,248,22,130,15,28,249,22,152,9,247,22,164,8,2,34,250,22,185,15,
2,68,23,200,1,2,37,23,197,1,194,86,94,23,193,1,28,249,22,139,8, 2,68,23,200,1,2,37,23,197,1,194,86,94,23,193,1,28,249,22,139,8,
23,198,2,2,37,249,22,93,195,9,86,94,23,194,1,249,22,79,248,22,129, 23,198,2,2,37,249,22,93,195,9,86,94,23,194,1,249,22,79,248,22,130,
15,28,249,22,152,9,247,22,164,8,2,34,250,22,184,15,2,68,23,202,1, 15,28,249,22,152,9,247,22,164,8,2,34,250,22,185,15,2,68,23,202,1,
2,37,23,199,1,9,86,95,28,28,248,22,131,8,194,10,248,22,142,7,194, 2,37,23,199,1,9,86,95,28,28,248,22,131,8,194,10,248,22,142,7,194,
12,250,22,189,9,2,6,6,21,21,40,111,114,47,99,32,98,121,116,101,115, 12,250,22,189,9,2,6,6,21,21,40,111,114,47,99,32,98,121,116,101,115,
63,32,115,116,114,105,110,103,63,41,196,28,28,248,22,88,195,249,22,4,22, 63,32,115,116,114,105,110,103,63,41,196,28,28,248,22,88,195,249,22,4,22,
184,14,196,11,12,250,22,189,9,2,6,6,14,14,40,108,105,115,116,111,102, 185,14,196,11,12,250,22,189,9,2,6,6,14,14,40,108,105,115,116,111,102,
32,112,97,116,104,63,41,197,250,2,67,197,195,28,248,22,142,7,197,248,22, 32,112,97,116,104,63,41,197,250,2,67,197,195,28,248,22,142,7,197,248,22,
156,8,197,196,86,94,28,28,248,22,184,14,194,10,28,248,22,142,7,194,28, 156,8,197,196,86,94,28,28,248,22,185,14,194,10,28,248,22,142,7,194,28,
248,22,142,15,194,10,248,22,143,15,194,11,12,250,22,189,9,195,2,35,196, 248,22,143,15,194,10,248,22,144,15,194,11,12,250,22,189,9,195,2,35,196,
28,248,22,142,15,194,12,251,22,191,9,196,2,38,2,39,197,86,94,28,28, 28,248,22,143,15,194,12,251,22,191,9,196,2,38,2,39,197,86,94,28,28,
248,22,184,14,194,10,28,248,22,142,7,194,28,248,22,142,15,194,10,248,22, 248,22,185,14,194,10,28,248,22,142,7,194,28,248,22,143,15,194,10,248,22,
143,15,194,11,12,250,22,189,9,195,2,35,196,28,248,22,142,15,194,12,251, 144,15,194,11,12,250,22,189,9,195,2,35,196,28,248,22,143,15,194,12,251,
22,191,9,196,2,38,2,39,197,86,94,86,94,28,28,248,22,184,14,23,195, 22,191,9,196,2,38,2,39,197,86,94,86,94,28,28,248,22,185,14,23,195,
2,10,28,248,22,142,7,23,195,2,28,248,22,142,15,23,195,2,10,248,22, 2,10,28,248,22,142,7,23,195,2,28,248,22,143,15,23,195,2,10,248,22,
143,15,23,195,2,11,12,250,22,189,9,195,2,35,23,197,2,28,248,22,142, 144,15,23,195,2,11,12,250,22,189,9,195,2,35,23,197,2,28,248,22,143,
15,23,195,2,12,251,22,191,9,196,2,38,2,39,23,198,1,249,22,3,88, 15,23,195,2,12,251,22,191,9,196,2,38,2,39,23,198,1,249,22,3,88,
163,8,36,37,47,11,9,223,2,33,72,196,28,28,248,22,0,194,249,22,50, 163,8,36,37,47,11,9,223,2,33,72,196,28,28,248,22,0,194,249,22,50,
195,37,11,12,250,22,189,9,195,2,40,196,86,94,28,28,248,22,184,14,193, 195,37,11,12,250,22,189,9,195,2,40,196,86,94,28,28,248,22,185,14,193,
10,28,248,22,142,7,193,28,248,22,142,15,193,10,248,22,143,15,193,11,12, 10,28,248,22,142,7,193,28,248,22,143,15,193,10,248,22,144,15,193,11,12,
250,22,189,9,2,10,2,35,195,28,248,22,142,15,193,12,251,22,191,9,2, 250,22,189,9,2,10,2,35,195,28,248,22,143,15,193,12,251,22,191,9,2,
10,2,38,2,39,196,86,95,86,94,86,94,28,28,248,22,184,14,195,10,28, 10,2,38,2,39,196,86,95,86,94,86,94,28,28,248,22,185,14,195,10,28,
248,22,142,7,195,28,248,22,142,15,195,10,248,22,143,15,195,11,12,250,22, 248,22,142,7,195,28,248,22,143,15,195,10,248,22,144,15,195,11,12,250,22,
189,9,2,10,2,35,197,28,248,22,142,15,195,12,251,22,191,9,2,10,2, 189,9,2,10,2,35,197,28,248,22,143,15,195,12,251,22,191,9,2,10,2,
38,2,39,198,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,75,197, 38,2,39,198,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,75,197,
28,28,248,22,0,194,249,22,50,195,37,11,12,250,22,189,9,2,10,2,40, 28,28,248,22,0,194,249,22,50,195,37,11,12,250,22,189,9,2,10,2,40,
196,251,80,158,40,45,197,198,199,11,86,94,28,28,248,22,184,14,193,10,28, 196,251,80,158,40,45,197,198,199,11,86,94,28,28,248,22,185,14,193,10,28,
248,22,142,7,193,28,248,22,142,15,193,10,248,22,143,15,193,11,12,250,22, 248,22,142,7,193,28,248,22,143,15,193,10,248,22,144,15,193,11,12,250,22,
189,9,2,12,2,35,195,28,248,22,142,15,193,12,251,22,191,9,2,12,2, 189,9,2,12,2,35,195,28,248,22,143,15,193,12,251,22,191,9,2,12,2,
38,2,39,196,86,96,86,94,28,28,248,22,184,14,195,10,28,248,22,142,7, 38,2,39,196,86,96,86,94,28,28,248,22,185,14,195,10,28,248,22,142,7,
195,28,248,22,142,15,195,10,248,22,143,15,195,11,12,250,22,189,9,2,12, 195,28,248,22,143,15,195,10,248,22,144,15,195,11,12,250,22,189,9,2,12,
2,35,197,28,248,22,142,15,195,12,251,22,191,9,2,12,2,38,2,39,198, 2,35,197,28,248,22,143,15,195,12,251,22,191,9,2,12,2,38,2,39,198,
86,94,86,94,28,28,248,22,184,14,196,10,28,248,22,142,7,196,28,248,22, 86,94,86,94,28,28,248,22,185,14,196,10,28,248,22,142,7,196,28,248,22,
142,15,196,10,248,22,143,15,196,11,12,250,22,189,9,2,12,2,35,198,28, 143,15,196,10,248,22,144,15,196,11,12,250,22,189,9,2,12,2,35,198,28,
248,22,142,15,196,12,251,22,191,9,2,12,2,38,2,39,199,249,22,3,32, 248,22,143,15,196,12,251,22,191,9,2,12,2,38,2,39,199,249,22,3,32,
0,88,163,8,36,37,46,11,9,222,33,77,198,28,28,248,22,0,194,249,22, 0,88,163,8,36,37,46,11,9,222,33,77,198,28,28,248,22,0,194,249,22,
50,195,37,11,12,250,22,189,9,2,12,2,40,196,251,80,158,40,45,197,199, 50,195,37,11,12,250,22,189,9,2,12,2,40,196,251,80,158,40,45,197,199,
200,198,0,6,45,105,110,102,46,48,27,248,22,160,15,2,41,27,28,248,22, 200,198,0,6,45,105,110,102,46,48,27,248,22,161,15,2,41,27,28,248,22,
143,15,23,195,2,193,20,13,159,80,159,38,52,37,250,80,159,41,53,37,249, 144,15,23,195,2,193,20,13,159,80,159,38,52,37,250,80,159,41,53,37,249,
22,33,11,80,159,43,52,37,22,161,15,248,22,160,15,68,111,114,105,103,45, 22,33,11,80,159,43,52,37,22,162,15,248,22,161,15,68,111,114,105,103,45,
100,105,114,27,248,22,160,15,2,32,250,80,159,42,39,39,23,196,1,23,198, 100,105,114,27,248,22,161,15,2,32,250,80,159,42,39,39,23,196,1,23,198,
1,11,28,192,250,22,138,15,195,6,6,6,99,111,110,102,105,103,6,10,10, 1,11,28,192,250,22,139,15,195,6,6,6,99,111,110,102,105,103,6,10,10,
108,105,110,107,115,46,114,107,116,100,11,86,94,27,247,22,148,10,28,249,22, 108,105,110,107,115,46,114,107,116,100,11,86,94,27,247,22,148,10,28,249,22,
140,10,23,195,2,2,42,251,22,144,10,23,197,1,2,42,250,22,190,7,2, 140,10,23,195,2,2,42,251,22,144,10,23,197,1,2,42,250,22,190,7,2,
43,28,23,202,1,80,159,46,47,38,80,159,46,50,38,248,22,184,11,23,205, 43,28,23,202,1,80,159,46,47,38,80,159,46,50,38,248,22,185,11,23,205,
1,247,22,29,12,248,193,247,22,140,2,2,79,86,95,27,247,22,148,10,28, 1,247,22,29,12,248,193,247,22,140,2,2,79,86,95,27,247,22,148,10,28,
249,22,140,10,23,195,2,2,42,251,22,144,10,23,197,1,2,42,250,22,190, 249,22,140,10,23,195,2,2,42,251,22,144,10,23,197,1,2,42,250,22,190,
7,2,43,28,202,80,159,47,47,38,80,159,47,50,38,248,22,184,11,23,206, 7,2,43,28,202,80,159,47,47,38,80,159,47,50,38,248,22,185,11,23,206,
1,247,22,29,12,28,192,28,194,86,94,20,18,159,11,80,158,39,48,247,22, 1,247,22,29,12,28,192,28,194,86,94,20,18,159,11,80,158,39,48,247,22,
140,2,20,18,159,11,80,158,39,49,192,86,94,20,18,159,11,80,158,39,54, 140,2,20,18,159,11,80,158,39,49,192,86,94,20,18,159,11,80,158,39,54,
247,22,140,2,20,18,159,11,80,158,39,55,192,12,248,194,247,22,140,2,20, 247,22,140,2,20,18,159,11,80,158,39,55,192,12,248,194,247,22,140,2,20,
@ -331,32 +331,32 @@
193,28,248,22,88,23,194,2,28,28,249,22,191,3,38,248,22,92,23,196,2, 193,28,248,22,88,23,194,2,28,28,249,22,191,3,38,248,22,92,23,196,2,
10,249,22,191,3,39,248,22,92,23,196,2,28,28,248,22,142,7,248,22,80, 10,249,22,191,3,39,248,22,92,23,196,2,28,28,248,22,142,7,248,22,80,
23,195,2,10,249,22,152,9,64,114,111,111,116,248,22,80,23,196,2,28,27, 23,195,2,10,249,22,152,9,64,114,111,111,116,248,22,80,23,196,2,28,27,
248,22,104,194,28,248,22,184,14,23,194,2,10,28,248,22,142,7,23,194,2, 248,22,104,194,28,248,22,185,14,23,194,2,10,28,248,22,142,7,23,194,2,
28,248,22,142,15,23,194,2,10,248,22,143,15,23,194,1,11,27,248,22,87, 28,248,22,143,15,23,194,2,10,248,22,144,15,23,194,1,11,27,248,22,87,
248,22,106,195,28,192,192,248,22,185,15,248,22,113,195,11,11,11,11,250,22, 248,22,106,195,28,192,192,248,22,186,15,248,22,113,195,11,11,11,11,250,22,
158,2,196,197,249,22,79,197,200,28,28,248,22,87,248,22,106,23,197,2,10, 158,2,196,197,249,22,79,197,200,28,28,248,22,87,248,22,106,23,197,2,10,
249,22,176,15,248,22,113,23,198,2,247,22,160,8,27,248,22,147,15,249,22, 249,22,177,15,248,22,113,23,198,2,247,22,160,8,27,248,22,148,15,249,22,
145,15,248,22,104,23,200,2,23,198,1,28,248,22,64,248,22,80,23,198,2, 146,15,248,22,104,23,200,2,23,198,1,28,248,22,64,248,22,80,23,198,2,
86,94,23,196,1,86,94,28,250,22,160,2,196,11,11,12,250,22,158,2,196, 86,94,23,196,1,86,94,28,250,22,160,2,196,11,11,12,250,22,158,2,196,
11,9,249,22,164,2,195,88,163,8,36,38,50,11,9,224,3,2,33,87,27, 11,9,249,22,164,2,195,88,163,8,36,38,50,11,9,224,3,2,33,87,27,
248,22,67,248,22,80,23,199,1,250,22,158,2,23,198,2,23,196,2,249,22, 248,22,67,248,22,80,23,199,1,250,22,158,2,23,198,2,23,196,2,249,22,
79,248,22,131,2,23,200,1,250,22,160,2,23,203,1,23,201,1,9,12,250, 79,248,22,131,2,23,200,1,250,22,160,2,23,203,1,23,201,1,9,12,250,
22,158,2,195,196,248,22,94,198,20,13,159,80,159,37,57,37,88,163,36,37, 22,158,2,195,196,248,22,94,198,20,13,159,80,159,37,57,37,88,163,36,37,
54,8,240,0,72,0,0,9,225,1,0,2,33,81,27,250,22,155,15,28,23, 54,8,240,0,72,0,0,9,225,1,0,2,33,81,27,250,22,156,15,28,23,
197,2,80,159,41,47,38,80,159,41,50,38,11,32,0,88,163,8,36,36,41, 197,2,80,159,41,47,38,80,159,41,50,38,11,32,0,88,163,8,36,36,41,
11,9,222,33,82,28,249,22,129,4,23,195,2,28,23,196,2,80,158,40,49, 11,9,222,33,82,28,249,22,129,4,23,195,2,28,23,196,2,80,158,40,49,
80,158,40,55,20,13,159,80,159,38,57,37,20,20,94,88,163,36,37,55,8, 80,158,40,55,20,13,159,80,159,38,57,37,20,20,94,88,163,36,37,55,8,
240,0,120,12,0,9,226,2,1,3,0,33,83,23,196,1,20,13,159,80,159, 240,0,120,12,0,9,226,2,1,3,0,33,83,23,196,1,20,13,159,80,159,
38,52,37,26,29,80,159,8,31,53,37,249,22,33,11,80,159,8,33,52,37, 38,52,37,26,29,80,159,8,31,53,37,249,22,33,11,80,159,8,33,52,37,
22,154,14,10,22,155,14,10,22,156,14,10,22,159,14,10,22,158,14,10,22, 22,155,14,10,22,156,14,10,22,157,14,10,22,160,14,10,22,159,14,10,22,
160,14,10,22,157,14,10,22,161,14,10,22,162,14,10,22,163,14,10,22,164, 161,14,10,22,158,14,10,22,162,14,10,22,163,14,10,22,164,14,10,22,165,
14,10,22,165,14,10,22,166,14,11,22,152,14,11,27,249,22,182,5,28,196, 14,10,22,166,14,10,22,167,14,11,22,153,14,11,27,249,22,182,5,28,196,
80,159,41,47,38,80,159,41,50,38,66,98,105,110,97,114,121,27,250,22,46, 80,159,41,47,38,80,159,41,50,38,66,98,105,110,97,114,121,27,250,22,46,
22,37,88,163,8,36,36,44,11,9,223,4,33,84,20,20,94,88,163,36,36, 22,37,88,163,8,36,36,44,11,9,223,4,33,84,20,20,94,88,163,36,36,
43,11,9,223,4,33,85,23,197,1,86,94,28,28,248,22,88,23,194,2,249, 43,11,9,223,4,33,85,23,197,1,86,94,28,28,248,22,88,23,194,2,249,
22,4,32,0,88,163,8,36,37,45,11,9,222,33,86,23,195,2,11,12,248, 22,4,32,0,88,163,8,36,37,45,11,9,222,33,86,23,195,2,11,12,248,
22,185,9,6,18,18,105,108,108,45,102,111,114,109,101,100,32,99,111,110,116, 22,185,9,6,18,18,105,108,108,45,102,111,114,109,101,100,32,99,111,110,116,
101,110,116,27,247,22,140,2,27,90,159,39,11,89,161,39,36,11,248,22,141, 101,110,116,27,247,22,140,2,27,90,159,39,11,89,161,39,36,11,248,22,142,
15,28,201,80,159,46,47,38,80,159,46,50,38,192,86,96,249,22,3,20,20, 15,28,201,80,159,46,47,38,80,159,46,50,38,192,86,96,249,22,3,20,20,
94,88,163,8,36,37,54,11,9,224,2,3,33,88,23,195,1,23,197,1,249, 94,88,163,8,36,37,54,11,9,224,2,3,33,88,23,195,1,23,197,1,249,
22,164,2,195,88,163,8,36,38,48,11,9,223,3,33,89,28,197,86,94,20, 22,164,2,195,88,163,8,36,38,48,11,9,223,3,33,89,28,197,86,94,20,
@ -364,28 +364,28 @@
159,11,80,158,42,54,193,20,18,159,11,80,158,42,55,196,193,28,193,80,158, 159,11,80,158,42,54,193,20,18,159,11,80,158,42,55,196,193,28,193,80,158,
38,48,80,158,38,54,248,22,8,88,163,8,32,37,8,40,8,240,0,120,47, 38,48,80,158,38,54,248,22,8,88,163,8,32,37,8,40,8,240,0,120,47,
0,9,224,1,2,33,90,0,7,35,114,120,34,47,43,34,28,248,22,142,7, 0,9,224,1,2,33,90,0,7,35,114,120,34,47,43,34,28,248,22,142,7,
23,195,2,27,249,22,174,15,2,92,196,28,192,28,249,22,191,3,248,22,103, 23,195,2,27,249,22,175,15,2,92,196,28,192,28,249,22,191,3,248,22,103,
195,248,22,181,3,248,22,145,7,198,249,22,7,250,22,164,7,199,36,248,22, 195,248,22,181,3,248,22,145,7,198,249,22,7,250,22,164,7,199,36,248,22,
103,198,197,249,22,7,250,22,164,7,199,36,248,22,103,198,249,22,79,249,22, 103,198,197,249,22,7,250,22,164,7,199,36,248,22,103,198,249,22,79,249,22,
164,7,200,248,22,105,199,199,249,22,7,196,197,90,159,39,11,89,161,39,36, 164,7,200,248,22,105,199,199,249,22,7,196,197,90,159,39,11,89,161,39,36,
11,248,22,141,15,23,198,1,86,94,23,195,1,28,249,22,152,9,23,195,2, 11,248,22,142,15,23,198,1,86,94,23,195,1,28,249,22,152,9,23,195,2,
2,36,249,22,7,195,199,27,249,22,79,23,197,1,23,201,1,28,248,22,142, 2,36,249,22,7,195,199,27,249,22,79,23,197,1,23,201,1,28,248,22,142,
7,23,195,2,27,249,22,174,15,2,92,196,28,192,28,249,22,191,3,248,22, 7,23,195,2,27,249,22,175,15,2,92,196,28,192,28,249,22,191,3,248,22,
103,195,248,22,181,3,248,22,145,7,198,249,22,7,250,22,164,7,199,36,248, 103,195,248,22,181,3,248,22,145,7,198,249,22,7,250,22,164,7,199,36,248,
22,103,198,195,249,22,7,250,22,164,7,199,36,248,22,103,198,249,22,79,249, 22,103,198,195,249,22,7,250,22,164,7,199,36,248,22,103,198,249,22,79,249,
22,164,7,200,248,22,105,199,197,249,22,7,196,195,90,159,39,11,89,161,39, 22,164,7,200,248,22,105,199,197,249,22,7,196,195,90,159,39,11,89,161,39,
36,11,248,22,141,15,23,198,1,28,249,22,152,9,194,2,36,249,22,7,195, 36,11,248,22,142,15,23,198,1,28,249,22,152,9,194,2,36,249,22,7,195,
197,249,80,159,45,58,39,194,249,22,79,197,199,32,94,88,163,36,43,8,27, 197,249,80,159,45,58,39,194,249,22,79,197,199,32,94,88,163,36,43,8,27,
11,65,99,108,111,111,112,222,33,103,32,95,88,163,8,36,37,47,11,2,31, 11,65,99,108,111,111,112,222,33,103,32,95,88,163,8,36,37,47,11,2,31,
222,33,98,32,96,88,163,36,37,43,11,69,116,111,45,115,116,114,105,110,103, 222,33,98,32,96,88,163,36,37,43,11,69,116,111,45,115,116,114,105,110,103,
222,33,97,28,248,22,184,14,193,248,22,188,14,193,192,28,248,22,87,248,22, 222,33,97,28,248,22,185,14,193,248,22,189,14,193,192,28,248,22,87,248,22,
81,23,195,2,248,22,89,248,2,96,248,22,80,23,196,1,250,22,90,248,2, 81,23,195,2,248,22,89,248,2,96,248,22,80,23,196,1,250,22,90,248,2,
96,248,22,80,23,198,2,2,45,248,2,95,248,22,81,23,198,1,249,22,190, 96,248,22,80,23,198,2,2,45,248,2,95,248,22,81,23,198,1,249,22,190,
7,2,46,194,32,100,88,163,36,38,48,11,66,102,105,108,116,101,114,222,33, 7,2,46,194,32,100,88,163,36,38,48,11,66,102,105,108,116,101,114,222,33,
101,28,248,22,87,23,195,2,9,28,248,23,194,2,248,22,80,23,196,2,249, 101,28,248,22,87,23,195,2,9,28,248,23,194,2,248,22,80,23,196,2,249,
22,79,248,22,80,23,197,2,249,2,100,23,197,1,248,22,81,23,199,1,249, 22,79,248,22,80,23,197,2,249,2,100,23,197,1,248,22,81,23,199,1,249,
2,100,194,248,22,81,196,249,22,190,7,2,46,248,22,134,2,23,196,1,28, 2,100,194,248,22,81,196,249,22,190,7,2,46,248,22,134,2,23,196,1,28,
248,22,87,23,199,2,86,94,23,198,1,28,23,199,2,28,196,249,22,138,15, 248,22,87,23,199,2,86,94,23,198,1,28,23,199,2,28,196,249,22,139,15,
200,198,198,27,28,248,22,87,23,197,2,2,44,249,22,1,22,165,7,248,2, 200,198,198,27,28,248,22,87,23,197,2,2,44,249,22,1,22,165,7,248,2,
95,23,199,2,248,23,198,1,251,22,190,7,6,70,70,99,111,108,108,101,99, 95,23,199,2,248,23,198,1,251,22,190,7,6,70,70,99,111,108,108,101,99,
116,105,111,110,32,110,111,116,32,102,111,117,110,100,10,32,32,99,111,108,108, 116,105,111,110,32,110,111,116,32,102,111,117,110,100,10,32,32,99,111,108,108,
@ -393,78 +393,78 @@
99,116,105,111,110,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,126, 99,116,105,111,110,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,126,
97,28,248,22,87,23,202,1,248,2,96,23,201,1,250,22,165,7,248,2,96, 97,28,248,22,87,23,202,1,248,2,96,23,201,1,250,22,165,7,248,2,96,
23,204,1,2,45,23,201,2,249,22,1,22,165,7,249,22,2,32,0,88,163, 23,204,1,2,45,23,201,2,249,22,1,22,165,7,249,22,2,32,0,88,163,
8,36,37,44,11,9,222,33,99,249,2,100,22,184,14,23,205,2,28,249,22, 8,36,37,44,11,9,222,33,99,249,2,100,22,185,14,23,205,2,28,249,22,
5,22,133,2,23,201,2,250,22,190,7,6,49,49,10,32,32,32,115,117,98, 5,22,133,2,23,201,2,250,22,190,7,6,49,49,10,32,32,32,115,117,98,
45,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32, 45,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32,
112,97,114,101,110,116,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97, 112,97,114,101,110,116,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,
23,201,1,249,22,1,22,165,7,249,22,2,32,0,88,163,8,36,37,45,11, 23,201,1,249,22,1,22,165,7,249,22,2,32,0,88,163,8,36,37,45,11,
9,222,33,102,249,2,100,22,133,2,23,208,1,86,95,23,199,1,23,198,1, 9,222,33,102,249,2,100,22,133,2,23,208,1,86,95,23,199,1,23,198,1,
2,44,27,248,22,80,23,200,2,27,28,248,22,184,14,23,195,2,249,22,138, 2,44,27,248,22,80,23,200,2,27,28,248,22,185,14,23,195,2,249,22,139,
15,23,196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,184,14,248, 15,23,196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,185,14,248,
22,80,23,202,2,248,22,133,15,23,194,2,10,27,250,22,1,22,138,15,23, 22,80,23,202,2,248,22,134,15,23,194,2,10,27,250,22,1,22,139,15,23,
197,1,23,201,2,28,28,248,22,87,23,199,2,10,248,22,133,15,23,194,2, 197,1,23,201,2,28,28,248,22,87,23,199,2,10,248,22,134,15,23,194,2,
28,23,200,2,28,28,248,22,132,15,249,22,138,15,195,202,10,27,28,248,22, 28,23,200,2,28,28,248,22,133,15,249,22,139,15,195,202,10,27,28,248,22,
184,14,201,248,22,188,14,201,200,27,248,22,145,7,23,195,2,27,28,249,22, 185,14,201,248,22,189,14,201,200,27,248,22,145,7,23,195,2,27,28,249,22,
131,4,23,196,2,40,28,249,22,148,7,6,4,4,46,114,107,116,249,22,164, 131,4,23,196,2,40,28,249,22,148,7,6,4,4,46,114,107,116,249,22,164,
7,23,199,2,249,22,183,3,23,200,2,40,249,22,165,7,250,22,164,7,23, 7,23,199,2,249,22,183,3,23,200,2,40,249,22,165,7,250,22,164,7,23,
200,1,36,249,22,183,3,23,201,1,40,6,3,3,46,115,115,86,95,23,195, 200,1,36,249,22,183,3,23,201,1,40,6,3,3,46,115,115,86,95,23,195,
1,23,194,1,11,11,28,23,193,2,248,22,132,15,249,22,138,15,198,23,196, 1,23,194,1,11,11,28,23,193,2,248,22,133,15,249,22,139,15,198,23,196,
1,11,28,199,249,22,138,15,194,201,192,254,2,94,202,203,204,205,206,248,22, 1,11,28,199,249,22,139,15,194,201,192,254,2,94,202,203,204,205,206,248,22,
81,23,16,28,23,16,23,16,199,28,199,249,22,138,15,194,201,192,254,2,94, 81,23,16,28,23,16,23,16,199,28,199,249,22,139,15,194,201,192,254,2,94,
202,203,204,205,206,248,22,81,23,16,23,16,254,2,94,201,202,203,204,205,248, 202,203,204,205,206,248,22,81,23,16,23,16,254,2,94,201,202,203,204,205,248,
22,81,23,15,23,15,90,159,38,11,89,161,38,36,11,249,80,159,40,58,39, 22,81,23,15,23,15,90,159,38,11,89,161,38,36,11,249,80,159,40,58,39,
23,199,1,23,200,1,27,248,22,67,28,248,22,184,14,195,248,22,188,14,195, 23,199,1,23,200,1,27,248,22,67,28,248,22,185,14,195,248,22,189,14,195,
194,27,247,22,165,15,27,250,22,93,28,23,197,2,28,247,22,164,15,27,248, 194,27,247,22,166,15,27,250,22,93,28,23,197,2,28,247,22,165,15,27,248,
80,159,46,56,39,10,27,250,22,160,2,23,197,2,23,203,2,11,28,23,193, 80,159,46,56,39,10,27,250,22,160,2,23,197,2,23,203,2,11,28,23,193,
2,192,86,94,23,193,1,250,22,160,2,23,197,1,11,9,9,9,28,23,197, 2,192,86,94,23,193,1,250,22,160,2,23,197,1,11,9,9,9,28,23,197,
1,28,80,159,44,50,38,27,248,80,159,46,56,39,11,27,250,22,160,2,23, 1,28,80,159,44,50,38,27,248,80,159,46,56,39,11,27,250,22,160,2,23,
197,2,23,203,1,11,28,23,193,2,192,86,94,23,193,1,250,22,160,2,23, 197,2,23,203,1,11,28,23,193,2,192,86,94,23,193,1,250,22,160,2,23,
197,1,11,9,86,94,23,198,1,9,9,247,22,162,15,254,2,94,199,202,203, 197,1,11,9,86,94,23,198,1,9,9,247,22,163,15,254,2,94,199,202,203,
205,23,16,199,11,86,95,28,28,248,22,185,14,23,194,2,10,28,248,22,184, 205,23,16,199,11,86,95,28,28,248,22,186,14,23,194,2,10,28,248,22,185,
14,23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,142,15,23,194,2, 14,23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,143,15,23,194,2,
10,248,22,143,15,23,194,2,11,12,252,22,189,9,23,200,2,2,33,36,23, 10,248,22,144,15,23,194,2,11,12,252,22,189,9,23,200,2,2,33,36,23,
198,2,23,199,2,28,28,248,22,142,7,23,195,2,10,248,22,131,8,23,195, 198,2,23,199,2,28,28,248,22,142,7,23,195,2,10,248,22,131,8,23,195,
2,86,94,23,194,1,12,252,22,189,9,23,200,2,2,47,37,23,198,2,23, 2,86,94,23,194,1,12,252,22,189,9,23,200,2,2,47,37,23,198,2,23,
199,1,90,159,39,11,89,161,39,36,11,248,22,141,15,23,197,2,86,94,23, 199,1,90,159,39,11,89,161,39,36,11,248,22,142,15,23,197,2,86,94,23,
195,1,86,94,28,192,12,250,22,128,10,23,201,1,2,48,23,199,1,249,22, 195,1,86,94,28,192,12,250,22,128,10,23,201,1,2,48,23,199,1,249,22,
7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,185,14,23, 7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,186,14,23,
196,2,10,28,248,22,184,14,23,196,2,10,28,248,22,142,7,23,196,2,28, 196,2,10,28,248,22,185,14,23,196,2,10,28,248,22,142,7,23,196,2,28,
248,22,142,15,23,196,2,10,248,22,143,15,23,196,2,11,12,252,22,189,9, 248,22,143,15,23,196,2,10,248,22,144,15,23,196,2,11,12,252,22,189,9,
2,26,2,33,36,23,200,2,23,201,2,28,28,248,22,142,7,23,197,2,10, 2,26,2,33,36,23,200,2,23,201,2,28,28,248,22,142,7,23,197,2,10,
248,22,131,8,23,197,2,12,252,22,189,9,2,26,2,47,37,23,200,2,23, 248,22,131,8,23,197,2,12,252,22,189,9,2,26,2,47,37,23,200,2,23,
201,2,90,159,39,11,89,161,39,36,11,248,22,141,15,23,199,2,86,94,23, 201,2,90,159,39,11,89,161,39,36,11,248,22,142,15,23,199,2,86,94,23,
195,1,86,94,28,192,12,250,22,128,10,2,26,2,48,23,201,2,249,22,7, 195,1,86,94,28,192,12,250,22,128,10,2,26,2,48,23,201,2,249,22,7,
194,195,27,249,22,130,15,250,22,183,15,0,20,35,114,120,35,34,40,63,58, 194,195,27,249,22,131,15,250,22,184,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,190,14,23,201,1,28,248, 91,46,93,91,94,46,93,42,124,41,36,34,248,22,191,14,23,201,1,28,248,
22,142,7,23,203,2,249,22,157,8,23,204,1,8,63,23,202,1,28,248,22, 22,142,7,23,203,2,249,22,157,8,23,204,1,8,63,23,202,1,28,248,22,
185,14,23,199,2,248,22,186,14,23,199,1,86,94,23,198,1,247,22,187,14, 186,14,23,199,2,248,22,187,14,23,199,1,86,94,23,198,1,247,22,188,14,
28,248,22,184,14,194,249,22,138,15,195,194,192,90,159,38,11,89,161,38,36, 28,248,22,185,14,194,249,22,139,15,195,194,192,90,159,38,11,89,161,38,36,
11,86,95,28,28,248,22,185,14,23,196,2,10,28,248,22,184,14,23,196,2, 11,86,95,28,28,248,22,186,14,23,196,2,10,28,248,22,185,14,23,196,2,
10,28,248,22,142,7,23,196,2,28,248,22,142,15,23,196,2,10,248,22,143, 10,28,248,22,142,7,23,196,2,28,248,22,143,15,23,196,2,10,248,22,144,
15,23,196,2,11,12,252,22,189,9,2,27,2,33,36,23,200,2,23,201,2, 15,23,196,2,11,12,252,22,189,9,2,27,2,33,36,23,200,2,23,201,2,
28,28,248,22,142,7,23,197,2,10,248,22,131,8,23,197,2,12,252,22,189, 28,28,248,22,142,7,23,197,2,10,248,22,131,8,23,197,2,12,252,22,189,
9,2,27,2,47,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11, 9,2,27,2,47,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,
248,22,141,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,128,10, 248,22,142,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,128,10,
2,27,2,48,23,201,2,249,22,7,194,195,27,249,22,130,15,249,22,143,8, 2,27,2,48,23,201,2,249,22,7,194,195,27,249,22,131,15,249,22,143,8,
250,22,184,15,0,9,35,114,120,35,34,91,46,93,34,248,22,190,14,23,203, 250,22,185,15,0,9,35,114,120,35,34,91,46,93,34,248,22,191,14,23,203,
1,6,1,1,95,28,248,22,142,7,23,202,2,249,22,157,8,23,203,1,8, 1,6,1,1,95,28,248,22,142,7,23,202,2,249,22,157,8,23,203,1,8,
63,23,201,1,28,248,22,185,14,23,199,2,248,22,186,14,23,199,1,86,94, 63,23,201,1,28,248,22,186,14,23,199,2,248,22,187,14,23,199,1,86,94,
23,198,1,247,22,187,14,28,248,22,184,14,194,249,22,138,15,195,194,192,249, 23,198,1,247,22,188,14,28,248,22,185,14,194,249,22,139,15,195,194,192,249,
247,22,171,5,194,11,249,247,22,171,5,194,11,27,247,22,164,15,249,80,159, 247,22,171,5,194,11,249,247,22,171,5,194,11,27,247,22,165,15,249,80,159,
39,40,38,28,23,195,2,27,248,22,162,8,2,49,28,192,192,2,44,2,44, 39,40,38,28,23,195,2,27,248,22,162,8,2,49,28,192,192,2,44,2,44,
27,28,23,196,1,250,22,138,15,248,22,160,15,2,50,247,22,160,8,2,51, 27,28,23,196,1,250,22,139,15,248,22,161,15,2,50,247,22,160,8,2,51,
11,27,248,80,159,42,8,29,39,250,22,93,9,248,22,89,248,22,160,15,2, 11,27,248,80,159,42,8,29,39,250,22,93,9,248,22,89,248,22,161,15,2,
41,9,28,193,249,22,79,195,194,192,27,247,22,164,15,249,80,159,39,40,38, 41,9,28,193,249,22,79,195,194,192,27,247,22,165,15,249,80,159,39,40,38,
28,23,195,2,27,248,22,162,8,2,49,28,192,192,2,44,2,44,27,28,23, 28,23,195,2,27,248,22,162,8,2,49,28,192,192,2,44,2,44,27,28,23,
196,1,250,22,138,15,248,22,160,15,2,50,247,22,160,8,2,51,11,27,248, 196,1,250,22,139,15,248,22,161,15,2,50,247,22,160,8,2,51,11,27,248,
80,159,42,8,30,39,250,22,93,23,203,1,248,22,89,248,22,160,15,2,41, 80,159,42,8,30,39,250,22,93,23,203,1,248,22,89,248,22,161,15,2,41,
9,28,193,249,22,79,195,194,192,27,247,22,164,15,249,80,159,39,40,38,28, 9,28,193,249,22,79,195,194,192,27,247,22,165,15,249,80,159,39,40,38,28,
23,195,2,27,248,22,162,8,2,49,28,192,192,2,44,2,44,27,28,23,196, 23,195,2,27,248,22,162,8,2,49,28,192,192,2,44,2,44,27,28,23,196,
1,250,22,138,15,248,22,160,15,2,50,247,22,160,8,2,51,11,27,248,80, 1,250,22,139,15,248,22,161,15,2,50,247,22,160,8,2,51,11,27,248,80,
159,42,8,31,39,250,22,93,23,203,1,248,22,89,248,22,160,15,2,41,23, 159,42,8,31,39,250,22,93,23,203,1,248,22,89,248,22,161,15,2,41,23,
204,1,28,193,249,22,79,195,194,192,86,94,249,22,130,7,247,22,167,5,195, 204,1,28,193,249,22,79,195,194,192,86,94,249,22,130,7,247,22,167,5,195,
248,22,154,6,249,22,135,4,36,249,22,183,3,197,198,27,28,23,197,2,86, 248,22,154,6,249,22,135,4,36,249,22,183,3,197,198,27,28,23,197,2,86,
95,23,196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,160,15,2, 95,23,196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,161,15,2,
32,27,250,80,159,42,39,39,23,197,1,11,11,27,248,22,138,4,23,199,1, 32,27,250,80,159,42,39,39,23,197,1,11,11,27,248,22,138,4,23,199,1,
27,28,23,194,2,23,194,1,86,94,23,194,1,36,27,248,22,138,4,23,202, 27,28,23,194,2,23,194,1,86,94,23,194,1,36,27,248,22,138,4,23,202,
1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,134,6,23,199, 1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,134,6,23,199,
@ -496,7 +496,7 @@
16,2,88,163,36,37,54,38,2,4,223,0,33,57,80,159,36,38,37,20,15, 16,2,88,163,36,37,54,38,2,4,223,0,33,57,80,159,36,38,37,20,15,
16,2,20,25,96,2,5,88,163,8,36,39,8,25,52,9,223,0,33,64,88, 16,2,20,25,96,2,5,88,163,8,36,39,8,25,52,9,223,0,33,64,88,
163,36,38,47,44,9,223,0,33,65,88,163,36,37,46,44,9,223,0,33,66, 163,36,38,47,44,9,223,0,33,65,88,163,36,37,46,44,9,223,0,33,66,
80,159,36,39,37,20,15,16,2,27,248,22,168,15,248,22,156,8,27,28,249, 80,159,36,39,37,20,15,16,2,27,248,22,169,15,248,22,156,8,27,28,249,
22,152,9,247,22,164,8,2,34,6,1,1,59,6,1,1,58,250,22,190,7, 22,152,9,247,22,164,8,2,34,6,1,1,59,6,1,1,58,250,22,190,7,
6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23, 6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,
196,1,88,163,8,36,38,48,11,2,6,223,0,33,70,80,159,36,40,37,20, 196,1,88,163,8,36,38,48,11,2,6,223,0,33,70,80,159,36,40,37,20,
@ -505,7 +505,7 @@
36,42,37,20,15,16,2,32,0,88,163,8,36,38,46,11,2,9,222,33,74, 36,42,37,20,15,16,2,32,0,88,163,8,36,38,46,11,2,9,222,33,74,
80,159,36,43,37,20,15,16,2,88,163,45,39,49,8,128,8,2,10,223,0, 80,159,36,43,37,20,15,16,2,88,163,45,39,49,8,128,8,2,10,223,0,
33,76,80,159,36,44,37,20,15,16,2,88,163,45,40,50,8,128,8,2,12, 33,76,80,159,36,44,37,20,15,16,2,88,163,45,40,50,8,128,8,2,12,
223,0,33,78,80,159,36,46,37,20,15,16,2,248,22,160,15,70,108,105,110, 223,0,33,78,80,159,36,46,37,20,15,16,2,248,22,161,15,70,108,105,110,
107,115,45,102,105,108,101,80,159,36,47,37,20,15,16,2,247,22,140,2,80, 107,115,45,102,105,108,101,80,159,36,47,37,20,15,16,2,247,22,140,2,80,
158,36,48,20,15,16,2,2,79,80,158,36,49,20,15,16,2,248,80,159,37, 158,36,48,20,15,16,2,2,79,80,158,36,49,20,15,16,2,248,80,159,37,
51,37,88,163,36,36,49,8,240,8,0,3,0,9,223,1,33,80,80,159,36, 51,37,88,163,36,36,49,8,240,8,0,3,0,9,223,1,33,80,80,159,36,
@ -529,7 +529,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 8952); EVAL_ONE_SIZED_STR((char *)expr, 8952);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,50,84,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,51,84,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,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, 0,57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0,0,
179,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23, 179,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,
@ -547,8 +547,8 @@
5,2,6,38,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,16,5, 5,2,6,38,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,12, 11,11,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,41,41,37,12,
11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36, 11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,
36,16,2,20,15,16,6,253,22,135,11,2,3,11,38,36,11,248,22,89,249, 36,16,2,20,15,16,6,253,22,136,11,2,3,11,38,36,11,248,22,89,249,
22,79,22,186,10,88,163,36,37,45,44,9,223,9,33,9,80,159,36,36,37, 22,79,22,187,10,88,163,36,37,45,44,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,20, 80,159,36,37,37,80,159,36,38,37,80,159,36,39,37,80,159,36,40,37,20,
15,16,3,249,22,7,88,163,36,37,45,44,9,223,2,33,10,88,163,36,37, 15,16,3,249,22,7,88,163,36,37,45,44,9,223,2,33,10,88,163,36,37,
45,44,9,223,2,33,11,80,159,36,41,37,80,159,36,42,37,93,29,94,65, 45,44,9,223,2,33,11,80,159,36,41,37,80,159,36,42,37,93,29,94,65,
@ -556,7 +556,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 502); EVAL_ONE_SIZED_STR((char *)expr, 502);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,50,84,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,51,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,1,0,0,7,0,18, 0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,1,0,0,7,0,18,
0,45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0, 0,45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,
187,0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,63,1,94,1,101, 187,0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,63,1,94,1,101,
@ -590,33 +590,33 @@
109,111,100,6,2,2,46,46,6,1,1,46,64,102,105,108,101,66,112,108,97, 109,111,100,6,2,2,46,46,6,1,1,46,64,102,105,108,101,66,112,108,97,
110,101,116,6,8,8,109,97,105,110,46,114,107,116,6,4,4,46,114,107,116, 110,101,116,6,8,8,109,97,105,110,46,114,107,116,6,4,4,46,114,107,116,
67,105,103,110,111,114,101,100,249,22,14,195,80,159,38,50,38,249,80,159,38, 67,105,103,110,111,114,101,100,249,22,14,195,80,159,38,50,38,249,80,159,38,
53,39,195,10,90,159,39,11,89,161,39,36,11,248,22,141,15,197,86,95,23, 53,39,195,10,90,159,39,11,89,161,39,36,11,248,22,142,15,197,86,95,23,
195,1,23,193,1,28,249,22,172,15,0,11,35,114,120,34,91,46,93,115,115, 195,1,23,193,1,28,249,22,173,15,0,11,35,114,120,34,91,46,93,115,115,
36,34,248,22,189,14,23,197,1,249,80,159,41,57,39,198,2,26,196,27,28, 36,34,248,22,190,14,23,197,1,249,80,159,41,57,39,198,2,26,196,27,28,
23,195,2,28,249,22,152,9,23,197,2,80,158,39,51,86,94,23,195,1,80, 23,195,2,28,249,22,152,9,23,197,2,80,158,39,51,86,94,23,195,1,80,
158,37,52,27,248,22,148,5,23,197,2,27,28,248,22,77,23,195,2,248,22, 158,37,52,27,248,22,148,5,23,197,2,27,28,248,22,77,23,195,2,248,22,
80,23,195,1,23,194,1,28,248,22,184,14,23,194,2,90,159,39,11,89,161, 80,23,195,1,23,194,1,28,248,22,185,14,23,194,2,90,159,39,11,89,161,
39,36,11,248,22,141,15,23,197,1,86,95,20,18,159,11,80,158,42,51,199, 39,36,11,248,22,142,15,23,197,1,86,95,20,18,159,11,80,158,42,51,199,
20,18,159,11,80,158,42,52,192,192,11,11,28,23,193,2,192,86,94,23,193, 20,18,159,11,80,158,42,52,192,192,11,11,28,23,193,2,192,86,94,23,193,
1,27,247,22,172,5,28,192,192,247,22,161,15,28,24,194,2,12,20,13,159, 1,27,247,22,172,5,28,192,192,247,22,162,15,28,24,194,2,12,20,13,159,
80,159,36,56,37,80,158,36,54,89,161,37,37,10,249,22,190,4,21,94,2, 80,159,36,56,37,80,158,36,54,89,161,37,37,10,249,22,190,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, 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, 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,250,22,138,15,23,197,1,23,199,1, 101,45,114,101,115,111,108,118,101,114,12,250,22,139,15,23,197,1,23,199,1,
249,80,159,43,42,39,23,198,1,2,30,250,22,138,15,23,197,1,23,199,1, 249,80,159,43,42,39,23,198,1,2,30,250,22,139,15,23,197,1,23,199,1,
249,80,159,43,42,39,23,198,1,2,30,252,22,138,15,23,199,1,23,201,1, 249,80,159,43,42,39,23,198,1,2,30,252,22,139,15,23,199,1,23,201,1,
2,31,247,22,165,8,249,80,159,45,42,39,23,200,1,80,159,45,36,38,252, 2,31,247,22,165,8,249,80,159,45,42,39,23,200,1,80,159,45,36,38,252,
22,138,15,23,199,1,23,201,1,2,31,247,22,165,8,249,80,159,45,42,39, 22,139,15,23,199,1,23,201,1,2,31,247,22,165,8,249,80,159,45,42,39,
23,200,1,80,159,45,36,38,27,252,22,138,15,23,200,1,23,202,1,2,31, 23,200,1,80,159,45,36,38,27,252,22,139,15,23,200,1,23,202,1,2,31,
247,22,165,8,249,80,159,46,42,39,23,201,1,80,159,46,36,38,27,250,22, 247,22,165,8,249,80,159,46,42,39,23,201,1,80,159,46,36,38,27,250,22,
155,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79, 156,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,
195,194,11,27,252,22,138,15,23,200,1,23,202,1,2,31,247,22,165,8,249, 195,194,11,27,252,22,139,15,23,200,1,23,202,1,2,31,247,22,165,8,249,
80,159,46,42,39,23,201,1,80,159,46,36,38,27,250,22,155,15,196,11,32, 80,159,46,42,39,23,201,1,80,159,46,36,38,27,250,22,156,15,196,11,32,
0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195,194,11,27,250, 0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195,194,11,27,250,
22,138,15,23,198,1,23,200,1,249,80,159,44,42,39,23,199,1,2,30,27, 22,139,15,23,198,1,23,200,1,249,80,159,44,42,39,23,199,1,2,30,27,
250,22,155,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249, 250,22,156,15,196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,
22,79,195,194,11,27,250,22,138,15,23,198,1,23,200,1,249,80,159,44,42, 22,79,195,194,11,27,250,22,139,15,23,198,1,23,200,1,249,80,159,44,42,
39,23,199,1,2,30,27,250,22,155,15,196,11,32,0,88,163,8,36,36,41, 39,23,199,1,2,30,27,250,22,156,15,196,11,32,0,88,163,8,36,36,41,
11,9,222,11,28,192,249,22,79,195,194,11,86,95,28,248,80,159,37,40,39, 11,9,222,11,28,192,249,22,79,195,194,11,86,95,28,248,80,159,37,40,39,
23,195,2,12,250,22,189,9,2,28,6,12,12,112,97,116,104,45,115,116,114, 23,195,2,12,250,22,189,9,2,28,6,12,12,112,97,116,104,45,115,116,114,
105,110,103,63,23,197,2,28,28,23,195,2,28,248,22,64,23,196,2,10,28, 105,110,103,63,23,197,2,28,28,23,195,2,28,248,22,64,23,196,2,10,28,
@ -627,30 +627,30 @@
111,110,115,47,99,32,40,111,114,47,99,32,35,102,32,115,121,109,98,111,108, 111,110,115,47,99,32,40,111,114,47,99,32,35,102,32,115,121,109,98,111,108,
63,41,32,40,110,111,110,45,101,109,112,116,121,45,108,105,115,116,111,102,32, 63,41,32,40,110,111,110,45,101,109,112,116,121,45,108,105,115,116,111,102,32,
115,121,109,98,111,108,63,41,41,41,23,197,2,27,28,23,196,2,247,22,188, 115,121,109,98,111,108,63,41,41,41,23,197,2,27,28,23,196,2,247,22,188,
4,11,27,28,23,194,2,250,22,160,2,80,158,41,41,248,22,133,16,247,22, 4,11,27,28,23,194,2,250,22,160,2,80,158,41,41,248,22,134,16,247,22,
159,13,11,11,27,28,23,194,2,250,22,160,2,248,22,81,23,198,2,23,198, 160,13,11,11,27,28,23,194,2,250,22,160,2,248,22,81,23,198,2,23,198,
2,11,11,28,23,193,2,86,96,23,197,1,23,195,1,23,194,1,20,13,159, 2,11,11,28,23,193,2,86,96,23,197,1,23,195,1,23,194,1,20,13,159,
80,159,39,38,37,250,80,159,42,39,37,249,22,33,11,80,159,44,38,37,22, 80,159,39,38,37,250,80,159,42,39,37,249,22,33,11,80,159,44,38,37,22,
189,4,248,22,104,196,27,248,22,113,194,20,13,159,80,159,40,38,37,250,80, 189,4,248,22,104,196,27,248,22,113,194,20,13,159,80,159,40,38,37,250,80,
159,43,39,37,249,22,33,11,80,159,45,38,37,22,172,5,28,248,22,184,14, 159,43,39,37,249,22,33,11,80,159,45,38,37,22,172,5,28,248,22,185,14,
23,197,2,23,196,1,86,94,23,196,1,247,22,161,15,249,247,22,170,5,248, 23,197,2,23,196,1,86,94,23,196,1,247,22,162,15,249,247,22,170,5,248,
22,80,196,200,86,94,23,193,1,90,159,46,11,89,161,37,36,11,28,248,22, 22,80,196,200,86,94,23,193,1,90,159,46,11,89,161,37,36,11,28,248,22,
144,15,23,208,2,23,207,2,27,247,22,172,5,28,23,193,2,249,22,145,15, 145,15,23,208,2,23,207,2,27,247,22,172,5,28,23,193,2,249,22,146,15,
23,210,2,23,195,1,23,208,2,89,161,39,37,11,248,22,141,15,23,208,1, 23,210,2,23,195,1,23,208,2,89,161,39,37,11,248,22,142,15,23,208,1,
86,94,23,196,1,89,161,38,40,11,28,23,208,2,27,248,22,189,14,23,197, 86,94,23,196,1,89,161,38,40,11,28,23,208,2,27,248,22,190,14,23,197,
2,27,248,22,136,8,23,195,2,28,28,249,22,131,4,23,195,2,40,249,22, 2,27,248,22,136,8,23,195,2,28,28,249,22,131,4,23,195,2,40,249,22,
139,8,2,26,249,22,142,8,23,198,2,249,22,183,3,23,199,2,40,11,249, 139,8,2,26,249,22,142,8,23,198,2,249,22,183,3,23,199,2,40,11,249,
22,7,23,199,2,248,22,129,15,249,22,143,8,250,22,142,8,23,202,1,36, 22,7,23,199,2,248,22,130,15,249,22,143,8,250,22,142,8,23,202,1,36,
249,22,183,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249, 249,22,183,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,
22,7,23,197,2,11,89,161,37,42,11,28,249,22,152,9,23,199,2,23,197, 22,7,23,197,2,11,89,161,37,42,11,28,249,22,152,9,23,199,2,23,197,
2,23,193,2,249,22,138,15,23,196,2,23,199,2,89,161,37,43,11,28,23, 2,23,193,2,249,22,139,15,23,196,2,23,199,2,89,161,37,43,11,28,23,
198,2,28,249,22,152,9,23,200,2,23,197,1,23,193,1,86,94,23,193,1, 198,2,28,249,22,152,9,23,200,2,23,197,1,23,193,1,86,94,23,193,1,
249,22,138,15,23,196,2,23,200,2,86,94,23,195,1,11,89,161,37,44,11, 249,22,139,15,23,196,2,23,200,2,86,94,23,195,1,11,89,161,37,44,11,
28,249,22,152,9,23,196,2,68,114,101,108,97,116,105,118,101,86,94,23,194, 28,249,22,152,9,23,196,2,68,114,101,108,97,116,105,118,101,86,94,23,194,
1,2,29,23,194,1,89,161,37,45,11,247,22,163,15,27,250,22,155,15,23, 1,2,29,23,194,1,89,161,37,45,11,247,22,164,15,27,250,22,156,15,23,
203,2,11,32,0,88,163,8,36,36,41,11,9,222,11,27,28,23,194,2,249, 203,2,11,32,0,88,163,8,36,36,41,11,9,222,11,27,28,23,194,2,249,
22,79,23,203,2,23,196,1,86,94,23,194,1,11,27,28,23,203,2,28,23, 22,79,23,203,2,23,196,1,86,94,23,194,1,11,27,28,23,203,2,28,23,
194,2,11,27,250,22,155,15,23,207,2,11,32,0,88,163,8,36,36,41,11, 194,2,11,27,250,22,156,15,23,207,2,11,32,0,88,163,8,36,36,41,11,
9,222,11,28,192,249,22,79,23,206,2,194,11,11,27,28,23,195,2,23,195, 9,222,11,28,192,249,22,79,23,206,2,194,11,11,27,28,23,195,2,23,195,
2,23,194,2,27,88,163,36,37,50,8,64,62,122,111,225,18,13,9,33,47, 2,23,194,2,27,88,163,36,37,50,8,64,62,122,111,225,18,13,9,33,47,
27,88,163,36,37,50,8,64,66,97,108,116,45,122,111,225,19,14,11,33,48, 27,88,163,36,37,50,8,64,66,97,108,116,45,122,111,225,19,14,11,33,48,
@ -666,8 +666,8 @@
194,1,20,13,159,80,159,8,24,38,37,250,80,159,8,27,39,37,249,22,33, 194,1,20,13,159,80,159,8,24,38,37,250,80,159,8,27,39,37,249,22,33,
11,80,159,8,29,38,37,22,189,4,11,20,13,159,80,159,8,24,38,37,250, 11,80,159,8,29,38,37,22,189,4,11,20,13,159,80,159,8,24,38,37,250,
80,159,8,27,39,37,249,22,33,11,80,159,8,29,38,37,22,172,5,28,248, 80,159,8,27,39,37,249,22,33,11,80,159,8,29,38,37,22,172,5,28,248,
22,184,14,23,216,2,23,215,1,86,94,23,215,1,247,22,161,15,249,247,22, 22,185,14,23,216,2,23,215,1,86,94,23,215,1,247,22,162,15,249,247,22,
167,15,248,22,80,195,23,28,86,94,23,193,1,27,28,23,195,2,28,23,197, 168,15,248,22,80,195,23,28,86,94,23,193,1,27,28,23,195,2,28,23,197,
1,27,249,22,5,88,163,8,36,37,53,8,65,9,225,28,23,20,33,52,23, 1,27,249,22,5,88,163,8,36,37,53,8,65,9,225,28,23,20,33,52,23,
217,2,27,28,23,204,2,11,193,28,192,192,28,193,28,203,28,249,22,131,4, 217,2,27,28,23,204,2,11,193,28,192,192,28,193,28,203,28,249,22,131,4,
248,22,81,196,248,22,81,206,193,11,11,11,11,86,94,23,197,1,11,28,23, 248,22,81,196,248,22,81,206,193,11,11,11,11,86,94,23,197,1,11,28,23,
@ -675,8 +675,8 @@
1,23,201,1,23,200,1,23,199,1,23,196,1,23,195,1,20,13,159,80,159, 1,23,201,1,23,200,1,23,199,1,23,196,1,23,195,1,20,13,159,80,159,
8,25,38,37,250,80,159,8,28,39,37,249,22,33,11,80,159,8,30,38,37, 8,25,38,37,250,80,159,8,28,39,37,249,22,33,11,80,159,8,30,38,37,
22,189,4,23,215,1,20,13,159,80,159,8,25,38,37,250,80,159,8,28,39, 22,189,4,23,215,1,20,13,159,80,159,8,25,38,37,250,80,159,8,28,39,
37,249,22,33,11,80,159,8,30,38,37,22,172,5,28,248,22,184,14,23,217, 37,249,22,33,11,80,159,8,30,38,37,22,172,5,28,248,22,185,14,23,217,
2,23,216,1,86,94,23,216,1,247,22,161,15,249,247,22,167,15,248,22,80, 2,23,216,1,86,94,23,216,1,247,22,162,15,249,247,22,168,15,248,22,80,
195,23,29,86,94,23,193,1,27,28,23,197,2,28,23,201,1,27,249,22,5, 195,23,29,86,94,23,193,1,27,28,23,197,2,28,23,201,1,27,249,22,5,
20,20,94,88,163,8,36,37,51,8,64,9,225,29,24,20,33,53,23,213,1, 20,20,94,88,163,8,36,37,51,8,64,9,225,29,24,20,33,53,23,213,1,
23,218,2,27,28,23,204,2,11,193,28,192,192,28,193,28,23,204,2,28,249, 23,218,2,27,28,23,204,2,11,193,28,192,192,28,193,28,23,204,2,28,249,
@ -687,8 +687,8 @@
22,89,23,199,1,11,23,221,2,12,20,13,159,80,159,8,26,38,37,250,80, 22,89,23,199,1,11,23,221,2,12,20,13,159,80,159,8,26,38,37,250,80,
159,8,29,39,37,249,22,33,11,80,159,8,31,38,37,22,189,4,11,20,13, 159,8,29,39,37,249,22,33,11,80,159,8,31,38,37,22,189,4,11,20,13,
159,80,159,8,26,38,37,250,80,159,8,29,39,37,249,22,33,11,80,159,8, 159,80,159,8,26,38,37,250,80,159,8,29,39,37,249,22,33,11,80,159,8,
31,38,37,22,172,5,28,248,22,184,14,23,218,2,23,217,1,86,94,23,217, 31,38,37,22,172,5,28,248,22,185,14,23,218,2,23,217,1,86,94,23,217,
1,247,22,161,15,249,247,22,170,5,248,22,80,195,23,30,86,94,23,193,1, 1,247,22,162,15,249,247,22,170,5,248,22,80,195,23,30,86,94,23,193,1,
27,28,23,197,1,28,23,201,1,27,249,22,5,20,20,94,88,163,8,36,37, 27,28,23,197,1,28,23,201,1,27,249,22,5,20,20,94,88,163,8,36,37,
51,8,64,9,225,30,25,22,33,54,23,215,1,23,219,1,27,28,23,205,2, 51,8,64,9,225,30,25,22,33,54,23,215,1,23,219,1,27,28,23,205,2,
11,193,28,192,192,28,193,28,204,28,249,22,131,4,248,22,81,196,248,22,81, 11,193,28,192,192,28,193,28,204,28,249,22,131,4,248,22,81,196,248,22,81,
@ -698,16 +698,16 @@
23,221,2,23,222,2,12,20,13,159,80,159,8,27,38,37,250,80,159,8,30, 23,221,2,23,222,2,12,20,13,159,80,159,8,27,38,37,250,80,159,8,30,
39,37,249,22,33,11,80,159,8,32,38,37,22,189,4,23,217,1,20,13,159, 39,37,249,22,33,11,80,159,8,32,38,37,22,189,4,23,217,1,20,13,159,
80,159,8,27,38,37,250,80,159,8,30,39,37,249,22,33,11,80,159,8,32, 80,159,8,27,38,37,250,80,159,8,30,39,37,249,22,33,11,80,159,8,32,
38,37,22,172,5,28,248,22,184,14,23,219,2,23,218,1,86,94,23,218,1, 38,37,22,172,5,28,248,22,185,14,23,219,2,23,218,1,86,94,23,218,1,
247,22,161,15,249,247,22,170,5,248,22,80,195,23,31,86,94,23,193,1,28, 247,22,162,15,249,247,22,170,5,248,22,80,195,23,31,86,94,23,193,1,28,
28,248,22,77,23,223,2,248,22,80,23,223,2,10,27,28,23,199,2,86,94, 28,248,22,77,23,223,2,248,22,80,23,223,2,10,27,28,23,199,2,86,94,
23,215,1,23,214,1,86,94,23,214,1,23,215,1,28,28,248,22,77,23,224, 23,215,1,23,214,1,86,94,23,214,1,23,215,1,28,28,248,22,77,23,224,
32,0,0,0,2,248,22,150,9,248,22,132,15,23,195,2,11,12,20,13,159, 32,0,0,0,2,248,22,150,9,248,22,133,15,23,195,2,11,12,20,13,159,
80,159,8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33, 80,159,8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33,
38,37,22,189,4,28,23,33,28,23,202,1,11,195,86,94,23,202,1,11,20, 38,37,22,189,4,28,23,33,28,23,202,1,11,195,86,94,23,202,1,11,20,
13,159,80,159,8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159, 13,159,80,159,8,28,38,37,250,80,159,8,31,39,37,249,22,33,11,80,159,
8,33,38,37,22,172,5,28,248,22,184,14,23,220,2,23,219,1,86,94,23, 8,33,38,37,22,172,5,28,248,22,185,14,23,220,2,23,219,1,86,94,23,
219,1,247,22,161,15,249,247,22,170,5,194,23,32,12,28,193,250,22,158,2, 219,1,247,22,162,15,249,247,22,170,5,194,23,32,12,28,193,250,22,158,2,
248,22,81,197,195,250,22,89,200,201,202,12,27,249,22,172,8,80,159,39,46, 248,22,81,197,195,250,22,89,200,201,202,12,27,249,22,172,8,80,159,39,46,
38,249,22,190,3,248,22,186,3,248,22,173,2,200,8,128,8,27,28,193,248, 38,249,22,190,3,248,22,186,3,248,22,173,2,200,8,128,8,27,28,193,248,
22,176,2,194,11,28,192,27,249,22,102,198,195,28,192,248,22,81,193,11,11, 22,176,2,194,11,28,192,27,249,22,102,198,195,28,192,248,22,81,193,11,11,
@ -715,12 +715,12 @@
8,80,159,40,46,38,195,27,28,193,248,22,176,2,194,11,250,22,173,8,80, 8,80,159,40,46,38,195,27,28,193,248,22,176,2,194,11,250,22,173,8,80,
159,42,46,38,197,248,22,175,2,249,22,79,249,22,79,204,205,28,198,198,9, 159,42,46,38,197,248,22,175,2,249,22,79,249,22,79,204,205,28,198,198,9,
0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,60, 0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,60,
88,163,8,36,37,59,11,2,32,222,33,61,27,249,22,172,15,2,59,23,196, 88,163,8,36,37,59,11,2,32,222,33,61,27,249,22,173,15,2,59,23,196,
2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248, 2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248,
22,113,23,197,1,27,249,22,172,15,2,59,23,196,2,28,23,193,2,86,94, 22,113,23,197,1,27,249,22,173,15,2,59,23,196,2,28,23,193,2,86,94,
23,194,1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249, 23,194,1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,
22,172,15,2,59,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248, 22,173,15,2,59,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,
22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,172,15,2,59,23,196, 22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,173,15,2,59,23,196,
2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2, 2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,248,2,
60,248,22,113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22, 60,248,22,113,23,197,1,248,22,89,194,248,22,89,194,248,22,89,194,248,22,
89,194,32,62,88,163,36,37,55,11,2,32,222,33,63,28,248,22,87,248,22, 89,194,32,62,88,163,36,37,55,11,2,32,222,33,63,28,248,22,87,248,22,
@ -730,12 +730,12 @@
22,81,23,195,2,249,22,7,9,248,22,80,195,90,159,38,11,89,161,38,36, 22,81,23,195,2,249,22,7,9,248,22,80,195,90,159,38,11,89,161,38,36,
11,248,2,62,248,22,81,196,249,22,7,249,22,79,248,22,80,199,196,195,249, 11,248,2,62,248,22,81,196,249,22,7,249,22,79,248,22,80,199,196,195,249,
22,7,249,22,79,248,22,80,199,196,195,249,22,7,249,22,79,248,22,80,199, 22,7,249,22,79,248,22,80,199,196,195,249,22,7,249,22,79,248,22,80,199,
196,195,27,27,249,22,172,15,2,59,23,197,2,28,23,193,2,86,94,23,195, 196,195,27,27,249,22,173,15,2,59,23,197,2,28,23,193,2,86,94,23,195,
1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,172, 1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,173,
15,2,59,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104, 15,2,59,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,
23,196,2,27,248,22,113,23,197,1,27,249,22,172,15,2,59,23,196,2,28, 23,196,2,27,248,22,113,23,197,1,27,249,22,173,15,2,59,23,196,2,28,
23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248,22,113, 23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248,22,113,
23,197,1,27,249,22,172,15,2,59,23,196,2,28,23,193,2,86,94,23,194, 23,197,1,27,249,22,173,15,2,59,23,196,2,28,23,193,2,86,94,23,194,
1,249,22,79,248,22,104,23,196,2,248,2,60,248,22,113,23,197,1,248,22, 1,249,22,79,248,22,104,23,196,2,248,2,60,248,22,113,23,197,1,248,22,
89,194,248,22,89,194,248,22,89,194,248,22,89,195,28,23,195,1,192,28,248, 89,194,248,22,89,194,248,22,89,194,248,22,89,195,28,23,195,1,192,28,248,
22,87,248,22,81,23,195,2,249,22,7,9,248,22,80,195,27,248,22,81,194, 22,87,248,22,81,23,195,2,249,22,7,9,248,22,80,195,27,248,22,81,194,
@ -746,16 +746,16 @@
201,196,195,249,22,7,249,22,79,248,22,80,202,196,195,249,22,7,249,22,79, 201,196,195,249,22,7,249,22,79,248,22,80,202,196,195,249,22,7,249,22,79,
248,22,80,200,196,195,86,96,28,248,22,146,5,23,196,2,12,250,22,189,9, 248,22,80,200,196,195,86,96,28,248,22,146,5,23,196,2,12,250,22,189,9,
2,22,6,21,21,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45, 2,22,6,21,21,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,
112,97,116,104,63,23,198,2,28,28,23,196,2,248,22,160,13,23,197,2,10, 112,97,116,104,63,23,198,2,28,28,23,196,2,248,22,161,13,23,197,2,10,
12,250,22,189,9,2,22,6,20,20,40,111,114,47,99,32,35,102,32,110,97, 12,250,22,189,9,2,22,6,20,20,40,111,114,47,99,32,35,102,32,110,97,
109,101,115,112,97,99,101,63,41,23,199,2,28,24,193,2,248,24,194,1,23, 109,101,115,112,97,99,101,63,41,23,199,2,28,24,193,2,248,24,194,1,23,
196,2,86,94,23,193,1,12,27,250,22,160,2,80,159,41,41,38,248,22,133, 196,2,86,94,23,193,1,12,27,250,22,160,2,80,159,41,41,38,248,22,134,
16,247,22,159,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249, 16,247,22,160,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,
22,79,247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,159,43,41,38, 22,79,247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,159,43,41,38,
248,22,133,16,247,22,159,13,195,192,86,94,250,22,158,2,248,22,80,23,197, 248,22,134,16,247,22,160,13,195,192,86,94,250,22,158,2,248,22,80,23,197,
2,23,200,2,68,100,101,99,108,97,114,101,100,28,23,198,2,27,28,248,22, 2,23,200,2,68,100,101,99,108,97,114,101,100,28,23,198,2,27,28,248,22,
77,248,22,148,5,23,200,2,248,22,147,5,248,22,80,248,22,148,5,23,201, 77,248,22,148,5,23,200,2,248,22,147,5,248,22,80,248,22,148,5,23,201,
1,23,198,1,27,250,22,160,2,80,159,44,41,38,248,22,133,16,23,204,1, 1,23,198,1,27,250,22,160,2,80,159,44,41,38,248,22,134,16,23,204,1,
11,28,23,193,2,27,250,22,160,2,248,22,81,23,198,1,197,11,28,192,250, 11,28,23,193,2,27,250,22,160,2,248,22,81,23,198,1,197,11,28,192,250,
22,158,2,248,22,81,199,197,195,12,12,12,251,211,197,198,199,10,32,67,88, 22,158,2,248,22,81,199,197,195,12,12,12,251,211,197,198,199,10,32,67,88,
163,36,38,47,11,76,102,108,97,116,116,101,110,45,115,117,98,45,112,97,116, 163,36,38,47,11,76,102,108,97,116,116,101,110,45,115,117,98,45,112,97,116,
@ -765,7 +765,7 @@
23,195,1,250,22,185,9,2,22,6,37,37,116,111,111,32,109,97,110,121,32, 23,195,1,250,22,185,9,2,22,6,37,37,116,111,111,32,109,97,110,121,32,
34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101,32,112,97, 34,46,46,34,115,32,105,110,32,115,117,98,109,111,100,117,108,101,32,112,97,
116,104,58,32,126,46,115,250,22,90,2,34,28,249,22,154,9,23,201,2,2, 116,104,58,32,126,46,115,250,22,90,2,34,28,249,22,154,9,23,201,2,2,
36,198,28,248,22,184,14,199,198,249,22,89,28,248,22,64,201,2,4,2,37, 36,198,28,248,22,185,14,199,198,249,22,89,28,248,22,64,201,2,4,2,37,
200,199,251,2,68,196,197,248,22,81,199,248,22,81,200,251,2,68,196,197,249, 200,199,251,2,68,196,197,248,22,81,199,248,22,81,200,251,2,68,196,197,249,
22,79,248,22,80,202,200,248,22,81,200,251,2,68,196,197,9,197,27,249,22, 22,79,248,22,80,202,200,248,22,81,200,251,2,68,196,197,9,197,27,249,22,
165,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45, 165,7,6,31,31,115,116,97,110,100,97,114,100,45,109,111,100,117,108,101,45,
@ -777,16 +777,16 @@
198,39,249,22,165,7,250,22,164,7,198,36,249,22,183,3,199,39,2,40,193, 198,39,249,22,165,7,250,22,164,7,198,36,249,22,183,3,199,39,2,40,193,
193,0,8,35,114,120,34,91,46,93,34,32,76,88,163,8,36,37,47,11,2, 193,0,8,35,114,120,34,91,46,93,34,32,76,88,163,8,36,37,47,11,2,
32,222,33,77,28,248,22,87,23,194,2,9,250,22,90,6,4,4,10,32,32, 32,222,33,77,28,248,22,87,23,194,2,9,250,22,90,6,4,4,10,32,32,
32,248,22,188,14,248,22,105,23,198,2,248,2,76,248,22,81,23,198,1,28, 32,248,22,189,14,248,22,105,23,198,2,248,2,76,248,22,81,23,198,1,28,
249,22,154,9,248,22,81,23,200,2,23,197,1,28,249,22,152,9,248,22,80, 249,22,154,9,248,22,81,23,200,2,23,197,1,28,249,22,152,9,248,22,80,
23,200,1,23,196,1,251,22,185,9,2,22,6,41,41,99,121,99,108,101,32, 23,200,1,23,196,1,251,22,185,9,2,22,6,41,41,99,121,99,108,101,32,
105,110,32,108,111,97,100,105,110,103,10,32,32,97,116,32,112,97,116,104,58, 105,110,32,108,111,97,100,105,110,103,10,32,32,97,116,32,112,97,116,104,58,
32,126,97,10,32,32,112,97,116,104,115,58,126,97,23,200,1,249,22,1,22, 32,126,97,10,32,32,112,97,116,104,115,58,126,97,23,200,1,249,22,1,22,
165,7,248,2,76,248,22,94,23,201,1,12,12,247,192,20,13,159,80,159,43, 165,7,248,2,76,248,22,94,23,201,1,12,12,247,192,20,13,159,80,159,43,
49,38,249,22,79,249,22,79,248,22,133,16,247,22,159,13,23,201,1,23,195, 49,38,249,22,79,249,22,79,248,22,134,16,247,22,160,13,23,201,1,23,195,
1,20,13,159,80,159,43,38,37,250,80,159,46,39,37,249,22,33,11,80,159, 1,20,13,159,80,159,43,38,37,250,80,159,46,39,37,249,22,33,11,80,159,
48,38,37,22,188,4,23,198,2,249,247,22,171,5,23,200,1,27,248,22,67, 48,38,37,22,188,4,23,198,2,249,247,22,171,5,23,200,1,27,248,22,67,
248,22,188,14,23,201,1,28,23,202,2,28,250,22,160,2,248,22,80,23,201, 248,22,189,14,23,201,1,28,23,202,2,28,250,22,160,2,248,22,80,23,201,
1,23,201,1,11,249,22,79,11,203,249,22,79,194,203,192,86,94,28,248,22, 1,23,201,1,11,249,22,79,11,203,249,22,79,194,203,192,86,94,28,248,22,
156,5,23,196,2,12,28,23,197,2,250,22,187,9,11,6,15,15,98,97,100, 156,5,23,196,2,12,28,23,197,2,250,22,187,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,189,9,2,22, 32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250,22,189,9,2,22,
@ -826,7 +826,7 @@
249,2,67,2,36,28,249,22,154,9,248,22,104,23,204,2,2,35,248,22,81, 249,2,67,2,36,28,249,22,154,9,248,22,104,23,204,2,2,35,248,22,81,
23,202,1,248,22,106,23,202,1,28,248,22,77,193,248,22,81,193,11,11,11, 23,202,1,248,22,106,23,202,1,28,248,22,77,193,248,22,81,193,11,11,11,
27,28,248,22,64,23,196,2,27,248,80,159,43,47,39,249,22,79,23,199,2, 27,28,248,22,64,23,196,2,27,248,80,159,43,47,39,249,22,79,23,199,2,
247,22,162,15,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38, 247,22,163,15,28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,
36,11,249,80,159,46,53,39,248,22,70,23,201,2,11,27,28,248,22,87,23, 36,11,249,80,159,46,53,39,248,22,70,23,201,2,11,27,28,248,22,87,23,
195,2,2,39,249,22,165,7,23,197,2,2,40,251,80,159,49,58,39,23,204, 195,2,2,39,249,22,165,7,23,197,2,2,40,251,80,159,49,58,39,23,204,
1,28,248,22,87,23,199,2,23,199,1,86,94,23,199,1,248,22,80,23,199, 1,28,248,22,87,23,199,2,23,199,1,86,94,23,199,1,248,22,80,23,199,
@ -834,45 +834,45 @@
197,1,28,248,22,142,7,23,196,2,86,94,23,196,1,27,248,80,159,43,8, 197,1,28,248,22,142,7,23,196,2,86,94,23,196,1,27,248,80,159,43,8,
28,39,23,202,2,27,248,80,159,44,47,39,249,22,79,23,200,2,23,197,2, 28,39,23,202,2,27,248,80,159,44,47,39,249,22,79,23,200,2,23,197,2,
28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,36,11,249,80, 28,23,193,2,192,86,94,23,193,1,90,159,38,11,89,161,38,36,11,249,80,
159,47,53,39,23,201,2,11,250,22,1,22,138,15,23,199,1,249,22,93,249, 159,47,53,39,23,201,2,11,250,22,1,22,139,15,23,199,1,249,22,93,249,
22,2,32,0,88,163,8,36,37,44,11,9,222,33,72,23,200,1,248,22,89, 22,2,32,0,88,163,8,36,37,44,11,9,222,33,72,23,200,1,248,22,89,
248,2,73,23,201,1,28,248,22,184,14,23,196,2,86,94,23,196,1,248,80, 248,2,73,23,201,1,28,248,22,185,14,23,196,2,86,94,23,196,1,248,80,
159,42,8,29,39,248,22,147,15,28,248,22,144,15,23,198,2,23,197,2,249, 159,42,8,29,39,248,22,148,15,28,248,22,145,15,23,198,2,23,197,2,249,
22,145,15,23,199,2,248,80,159,46,8,28,39,23,205,2,28,249,22,152,9, 22,146,15,23,199,2,248,80,159,46,8,28,39,23,205,2,28,249,22,152,9,
248,22,80,23,198,2,2,27,27,248,80,159,43,47,39,249,22,79,23,199,2, 248,22,80,23,198,2,2,27,27,248,80,159,43,47,39,249,22,79,23,199,2,
247,22,162,15,28,23,193,2,192,86,94,23,193,1,90,159,39,11,89,161,38, 247,22,163,15,28,23,193,2,192,86,94,23,193,1,90,159,39,11,89,161,38,
36,11,249,80,159,47,53,39,248,22,104,23,202,2,11,89,161,37,38,11,28, 36,11,249,80,159,47,53,39,248,22,104,23,202,2,11,89,161,37,38,11,28,
248,22,87,248,22,106,23,201,2,28,248,22,87,23,194,2,249,22,176,15,2, 248,22,87,248,22,106,23,201,2,28,248,22,87,23,194,2,249,22,177,15,2,
75,23,196,2,11,10,27,28,23,196,2,248,2,73,23,196,2,28,248,22,87, 75,23,196,2,11,10,27,28,23,196,2,248,2,73,23,196,2,28,248,22,87,
23,195,2,2,39,28,249,22,176,15,2,75,23,197,2,248,2,73,23,196,2, 23,195,2,2,39,28,249,22,177,15,2,75,23,197,2,248,2,73,23,196,2,
249,22,165,7,23,197,2,2,40,27,28,23,197,1,86,94,23,196,1,249,22, 249,22,165,7,23,197,2,2,40,27,28,23,197,1,86,94,23,196,1,249,22,
93,28,248,22,87,248,22,106,23,205,2,21,93,6,5,5,109,122,108,105,98, 93,28,248,22,87,248,22,106,23,205,2,21,93,6,5,5,109,122,108,105,98,
249,22,1,22,93,249,22,2,80,159,53,8,30,39,248,22,106,23,208,2,23, 249,22,1,22,93,249,22,2,80,159,53,8,30,39,248,22,106,23,208,2,23,
197,1,28,248,22,87,23,196,2,86,94,23,195,1,248,22,89,23,197,1,86, 197,1,28,248,22,87,23,196,2,86,94,23,195,1,248,22,89,23,197,1,86,
94,23,196,1,23,195,1,251,80,159,51,58,39,23,206,1,248,22,80,23,198, 94,23,196,1,23,195,1,251,80,159,51,58,39,23,206,1,248,22,80,23,198,
2,248,22,81,23,198,1,23,198,1,28,249,22,152,9,248,22,80,23,198,2, 2,248,22,81,23,198,1,23,198,1,28,249,22,152,9,248,22,80,23,198,2,
2,37,248,80,159,42,8,29,39,248,22,147,15,249,22,145,15,248,22,149,15, 2,37,248,80,159,42,8,29,39,248,22,148,15,249,22,146,15,248,22,150,15,
248,22,104,23,201,2,248,80,159,46,8,28,39,23,205,2,12,86,94,28,28, 248,22,104,23,201,2,248,80,159,46,8,28,39,23,205,2,12,86,94,28,28,
248,22,184,14,23,194,2,10,248,22,167,8,23,194,2,86,94,23,201,1,12, 248,22,185,14,23,194,2,10,248,22,167,8,23,194,2,86,94,23,201,1,12,
28,23,201,2,250,22,187,9,67,114,101,113,117,105,114,101,249,22,190,7,6, 28,23,201,2,250,22,187,9,67,114,101,113,117,105,114,101,249,22,190,7,6,
17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23, 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,80,23,199,2,6,0,0,23,204,1,86,94,23,201,1,250,22, 198,2,248,22,80,23,199,2,6,0,0,23,204,1,86,94,23,201,1,250,22,
189,9,2,22,2,33,23,198,2,27,28,248,22,167,8,23,195,2,249,22,172, 189,9,2,22,2,33,23,198,2,27,28,248,22,167,8,23,195,2,249,22,172,
8,23,196,2,36,249,22,147,15,248,22,148,15,23,197,2,11,27,28,248,22, 8,23,196,2,36,249,22,148,15,248,22,149,15,23,197,2,11,27,28,248,22,
167,8,23,196,2,249,22,172,8,23,197,2,37,248,80,159,44,59,39,23,195, 167,8,23,196,2,249,22,172,8,23,197,2,37,248,80,159,44,59,39,23,195,
2,90,159,39,11,89,161,39,36,11,28,248,22,167,8,23,199,2,250,22,7, 2,90,159,39,11,89,161,39,36,11,28,248,22,167,8,23,199,2,250,22,7,
2,41,249,22,172,8,23,203,2,38,2,41,248,22,141,15,23,198,2,86,95, 2,41,249,22,172,8,23,203,2,38,2,41,248,22,142,15,23,198,2,86,95,
23,195,1,23,193,1,27,28,248,22,167,8,23,200,2,249,22,172,8,23,201, 23,195,1,23,193,1,27,28,248,22,167,8,23,200,2,249,22,172,8,23,201,
2,39,249,80,159,49,57,39,23,197,2,5,0,27,28,248,22,167,8,23,201, 2,39,249,80,159,49,57,39,23,197,2,5,0,27,28,248,22,167,8,23,201,
2,249,22,172,8,23,202,2,40,248,22,147,5,23,200,2,27,250,22,160,2, 2,249,22,172,8,23,202,2,40,248,22,147,5,23,200,2,27,250,22,160,2,
80,159,52,41,38,248,22,133,16,247,22,159,13,11,27,28,23,194,2,23,194, 80,159,52,41,38,248,22,134,16,247,22,160,13,11,27,28,23,194,2,23,194,
1,86,94,23,194,1,27,249,22,79,247,22,140,2,247,22,140,2,86,94,250, 1,86,94,23,194,1,27,249,22,79,247,22,140,2,247,22,140,2,86,94,250,
22,158,2,80,159,54,41,38,248,22,133,16,247,22,159,13,195,192,27,28,23, 22,158,2,80,159,54,41,38,248,22,134,16,247,22,160,13,195,192,27,28,23,
204,2,248,22,147,5,249,22,79,248,22,148,5,23,200,2,23,207,2,23,196, 204,2,248,22,147,5,249,22,79,248,22,148,5,23,200,2,23,207,2,23,196,
2,86,95,28,23,212,1,27,250,22,160,2,248,22,80,23,199,2,196,11,28, 2,86,95,28,23,212,1,27,250,22,160,2,248,22,80,23,199,2,196,11,28,
23,193,1,12,27,27,28,248,22,17,80,159,55,50,38,80,159,54,50,38,247, 23,193,1,12,27,27,28,248,22,17,80,159,55,50,38,80,159,54,50,38,247,
22,19,251,22,33,11,80,159,58,49,38,9,23,197,1,27,248,22,133,16,247, 22,19,251,22,33,11,80,159,58,49,38,9,23,197,1,27,248,22,134,16,247,
22,159,13,86,94,249,22,3,20,20,94,88,163,8,36,37,54,11,9,226,14, 22,160,13,86,94,249,22,3,20,20,94,88,163,8,36,37,54,11,9,226,14,
13,2,3,33,78,23,195,1,23,196,2,248,28,248,22,17,80,159,56,50,38, 13,2,3,33,78,23,195,1,23,196,2,248,28,248,22,17,80,159,56,50,38,
32,0,88,163,36,37,42,11,9,222,33,79,80,159,55,8,31,39,20,20,96, 32,0,88,163,36,37,42,11,9,222,33,79,80,159,55,8,31,39,20,20,96,
88,163,36,36,56,8,140,128,9,230,19,15,13,12,8,7,5,2,33,80,23, 88,163,36,36,56,8,140,128,9,230,19,15,13,12,8,7,5,2,33,80,23,
@ -880,11 +880,11 @@
22,142,7,23,206,2,10,28,248,22,64,23,206,2,10,28,248,22,77,23,206, 22,142,7,23,206,2,10,28,248,22,64,23,206,2,10,28,248,22,77,23,206,
2,249,22,152,9,248,22,80,23,208,2,2,27,11,249,80,159,53,48,39,28, 2,249,22,152,9,248,22,80,23,208,2,2,27,11,249,80,159,53,48,39,28,
248,22,142,7,23,208,2,249,22,79,23,209,1,248,80,159,56,8,28,39,23, 248,22,142,7,23,208,2,249,22,79,23,209,1,248,80,159,56,8,28,39,23,
215,1,86,94,23,212,1,249,22,79,23,209,1,247,22,162,15,252,22,169,8, 215,1,86,94,23,212,1,249,22,79,23,209,1,247,22,163,15,252,22,169,8,
23,209,1,23,208,1,23,206,1,23,204,1,23,203,1,12,192,86,96,20,18, 23,209,1,23,208,1,23,206,1,23,204,1,23,203,1,12,192,86,96,20,18,
159,11,80,158,36,54,248,80,159,37,8,26,37,249,22,33,11,80,159,39,56, 159,11,80,158,36,54,248,80,159,37,8,26,37,249,22,33,11,80,159,39,56,
37,248,22,187,4,80,159,37,55,38,248,22,171,5,80,159,37,37,39,248,22, 37,248,22,187,4,80,159,37,55,38,248,22,171,5,80,159,37,37,39,248,22,
153,14,80,159,37,44,39,20,18,159,11,80,158,36,54,248,80,159,37,8,26, 154,14,80,159,37,44,39,20,18,159,11,80,158,36,54,248,80,159,37,8,26,
37,249,22,33,11,80,159,39,56,37,20,18,159,11,80,158,36,54,248,80,159, 37,249,22,33,11,80,159,39,56,37,20,18,159,11,80,158,36,54,248,80,159,
37,8,26,37,249,22,33,11,80,159,39,56,37,159,36,20,113,159,36,16,1, 37,8,26,37,249,22,33,11,80,159,39,56,37,159,36,20,113,159,36,16,1,
11,16,0,20,26,144,9,2,1,2,1,29,11,11,11,9,9,11,11,11,10, 11,16,0,20,26,144,9,2,1,2,1,29,11,11,11,9,9,11,11,11,10,
@ -937,7 +937,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 7928); EVAL_ONE_SIZED_STR((char *)expr, 7928);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,50,84,0,0,0,0,0,0,0,0,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,48,46,50,51,84,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,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,98,1, 0,29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,98,1,
0,0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2, 0,0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,
@ -945,7 +945,7 @@
111,114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2, 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, 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, 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,190, 11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,215,
88,0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2, 88,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, 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,113,159,36,16,1,11,16,0,20,26,144,9,2,1, 36,36,16,0,159,36,20,113,159,36,16,1,11,16,0,20,26,144,9,2,1,

View File

@ -280,6 +280,8 @@ Scheme_Env *scheme_engine_instance_init()
#endif #endif
make_kernel_env(); make_kernel_env();
scheme_init_logging_once();
#if defined(MZ_PLACES_WAITPID) #if defined(MZ_PLACES_WAITPID)
scheme_places_start_child_signal_handler(); scheme_places_start_child_signal_handler();
#endif #endif

View File

@ -55,9 +55,11 @@ void scheme_set_exit(Scheme_Exit_Proc p) { scheme_exit = p; }
HOOK_SHARED_OK void (*scheme_console_output)(char *str, intptr_t len); HOOK_SHARED_OK void (*scheme_console_output)(char *str, intptr_t len);
void scheme_set_console_output(scheme_console_output_t p) { scheme_console_output = p; } void scheme_set_console_output(scheme_console_output_t p) { scheme_console_output = p; }
SHARED_OK static int init_syslog_level = INIT_SYSLOG_LEVEL; SHARED_OK static Scheme_Object *init_syslog_level = NULL;
SHARED_OK static int init_stderr_level = SCHEME_LOG_ERROR; SHARED_OK static Scheme_Object *init_stderr_level = NULL;
THREAD_LOCAL_DECL(static Scheme_Logger *scheme_main_logger); THREAD_LOCAL_DECL(static Scheme_Logger *scheme_main_logger);
THREAD_LOCAL_DECL(static Scheme_Logger *scheme_gc_logger);
THREAD_LOCAL_DECL(static Scheme_Logger *scheme_future_logger);
/* readonly globals */ /* readonly globals */
READ_ONLY const char *scheme_compile_stx_string = "compile"; READ_ONLY const char *scheme_compile_stx_string = "compile";
@ -66,6 +68,7 @@ READ_ONLY const char *scheme_application_stx_string = "application";
READ_ONLY const char *scheme_set_stx_string = "set!"; READ_ONLY const char *scheme_set_stx_string = "set!";
READ_ONLY const char *scheme_var_ref_string = "#%variable-reference"; READ_ONLY const char *scheme_var_ref_string = "#%variable-reference";
READ_ONLY const char *scheme_begin_stx_string = "begin"; READ_ONLY const char *scheme_begin_stx_string = "begin";
ROSYM static Scheme_Object *none_symbol;
ROSYM static Scheme_Object *fatal_symbol; ROSYM static Scheme_Object *fatal_symbol;
ROSYM static Scheme_Object *error_symbol; ROSYM static Scheme_Object *error_symbol;
ROSYM static Scheme_Object *warning_symbol; ROSYM static Scheme_Object *warning_symbol;
@ -125,7 +128,6 @@ static int log_reader_get(Scheme_Object *ch, Scheme_Schedule_Info *sinfo);
static Scheme_Object *do_raise(Scheme_Object *arg, int need_debug, int barrier); static Scheme_Object *do_raise(Scheme_Object *arg, int need_debug, int barrier);
static Scheme_Object *nested_exn_handler(void *old_exn, int argc, Scheme_Object *argv[]); static Scheme_Object *nested_exn_handler(void *old_exn, int argc, Scheme_Object *argv[]);
static Scheme_Logger *make_a_logger(Scheme_Logger *parent, Scheme_Object *name);
static void update_want_level(Scheme_Logger *logger); static void update_want_level(Scheme_Logger *logger);
static Scheme_Object *check_arity_property_value_ok(int argc, Scheme_Object *argv[]); static Scheme_Object *check_arity_property_value_ok(int argc, Scheme_Object *argv[]);
@ -136,9 +138,42 @@ static char *init_buf(intptr_t *len, intptr_t *blen);
void scheme_set_logging(int syslog_level, int stderr_level) void scheme_set_logging(int syslog_level, int stderr_level)
{ {
if (syslog_level > -1) if (syslog_level > -1)
init_syslog_level = syslog_level; init_syslog_level = scheme_make_integer(syslog_level);
if (stderr_level > -1) if (stderr_level > -1)
init_stderr_level = scheme_make_integer(stderr_level);
}
void scheme_set_logging_spec(Scheme_Object *syslog_level, Scheme_Object *stderr_level)
{
/* A spec is (list* <int> <byte-string> .... <int>) */
if (syslog_level) {
REGISTER_SO(init_syslog_level);
init_syslog_level = syslog_level;
}
if (stderr_level) {
REGISTER_SO(init_stderr_level);
init_stderr_level = stderr_level; init_stderr_level = stderr_level;
}
}
void scheme_init_logging_once(void)
{
/* Convert specs to use symbols */
int j;
Scheme_Object *l, *s;
for (j = 0; j < 2; j++) {
l = (j ? init_stderr_level : init_syslog_level);
if (l) {
while (!SCHEME_INTP(l)) {
l = SCHEME_CDR(l);
s = scheme_intern_exact_symbol(SCHEME_BYTE_STR_VAL(SCHEME_CAR(l)),
SCHEME_BYTE_STRLEN_VAL(SCHEME_CAR(l)));
SCHEME_CAR(l) = s;
l = SCHEME_CDR(l);
}
}
}
} }
typedef struct { typedef struct {
@ -656,7 +691,7 @@ void scheme_init_error(Scheme_Env *env)
GLOBAL_NONCM_PRIM("log-level?", log_level_p, 2, 2, env); GLOBAL_NONCM_PRIM("log-level?", log_level_p, 2, 2, env);
GLOBAL_NONCM_PRIM("log-max-level", log_max_level, 1, 1, env); GLOBAL_NONCM_PRIM("log-max-level", log_max_level, 1, 1, env);
GLOBAL_NONCM_PRIM("make-logger", make_logger, 0, 2, env); GLOBAL_NONCM_PRIM("make-logger", make_logger, 0, 2, env);
GLOBAL_NONCM_PRIM("make-log-receiver", make_log_reader, 2, 2, env); GLOBAL_NONCM_PRIM("make-log-receiver", make_log_reader, 2, -1, env);
GLOBAL_PRIM_W_ARITY("log-message", log_message, 4, 4, env); GLOBAL_PRIM_W_ARITY("log-message", log_message, 4, 4, env);
GLOBAL_FOLDING_PRIM("logger?", logger_p, 1, 1, 1, env); GLOBAL_FOLDING_PRIM("logger?", logger_p, 1, 1, 1, env);
@ -679,11 +714,13 @@ void scheme_init_error(Scheme_Env *env)
REGISTER_SO(def_err_val_proc); REGISTER_SO(def_err_val_proc);
def_err_val_proc = scheme_make_prim_w_arity(def_error_value_string_proc, "default-error-value->string-handler", 2, 2); def_err_val_proc = scheme_make_prim_w_arity(def_error_value_string_proc, "default-error-value->string-handler", 2, 2);
REGISTER_SO(none_symbol);
REGISTER_SO(fatal_symbol); REGISTER_SO(fatal_symbol);
REGISTER_SO(error_symbol); REGISTER_SO(error_symbol);
REGISTER_SO(warning_symbol); REGISTER_SO(warning_symbol);
REGISTER_SO(info_symbol); REGISTER_SO(info_symbol);
REGISTER_SO(debug_symbol); REGISTER_SO(debug_symbol);
none_symbol = scheme_intern_symbol("none");
fatal_symbol = scheme_intern_symbol("fatal"); fatal_symbol = scheme_intern_symbol("fatal");
error_symbol = scheme_intern_symbol("error"); error_symbol = scheme_intern_symbol("error");
warning_symbol = scheme_intern_symbol("warning"); warning_symbol = scheme_intern_symbol("warning");
@ -708,15 +745,29 @@ void scheme_init_error(Scheme_Env *env)
void scheme_init_logger() void scheme_init_logger()
{ {
REGISTER_SO(scheme_main_logger); REGISTER_SO(scheme_main_logger);
scheme_main_logger = make_a_logger(NULL, NULL); scheme_main_logger = scheme_make_logger(NULL, NULL);
scheme_main_logger->syslog_level = init_syslog_level; scheme_main_logger->syslog_level = init_syslog_level;
scheme_main_logger->stderr_level = init_stderr_level; scheme_main_logger->stderr_level = init_stderr_level;
REGISTER_SO(scheme_gc_logger);
scheme_gc_logger = scheme_make_logger(scheme_main_logger, scheme_intern_symbol("GC"));
REGISTER_SO(scheme_future_logger);
scheme_future_logger = scheme_make_logger(scheme_main_logger, scheme_intern_symbol("future"));
} }
Scheme_Logger *scheme_get_main_logger() { Scheme_Logger *scheme_get_main_logger() {
return scheme_main_logger; return scheme_main_logger;
} }
Scheme_Logger *scheme_get_gc_logger() {
return scheme_gc_logger;
}
Scheme_Logger *scheme_get_future_logger() {
return scheme_future_logger;
}
void scheme_init_error_config(void) void scheme_init_error_config(void)
{ {
scheme_set_root_param(MZCONFIG_EXIT_HANDLER, scheme_def_exit_proc); scheme_set_root_param(MZCONFIG_EXIT_HANDLER, scheme_def_exit_proc);
@ -733,12 +784,12 @@ static void
call_error(char *buffer, int len, Scheme_Object *exn) call_error(char *buffer, int len, Scheme_Object *exn)
{ {
if (scheme_current_thread->constant_folding) { if (scheme_current_thread->constant_folding) {
if (SCHEME_TRUEP(scheme_current_thread->constant_folding)) if (scheme_current_thread->constant_folding != (Optimize_Info *)scheme_false)
scheme_log(NULL, scheme_log(scheme_optimize_info_logger(scheme_current_thread->constant_folding),
SCHEME_LOG_WARNING, SCHEME_LOG_WARNING,
0, 0,
"optimizer constant-fold attempt failed%s: %s", "constant-fold attempt failed%s: %s",
scheme_optimize_context_to_string(scheme_current_thread->constant_folding), scheme_optimize_info_context(scheme_current_thread->constant_folding),
buffer); buffer);
if (SCHEME_CHAPERONE_STRUCTP(exn) if (SCHEME_CHAPERONE_STRUCTP(exn)
&& scheme_is_struct_instance(exn_table[MZEXN_BREAK].type, exn)) { && scheme_is_struct_instance(exn_table[MZEXN_BREAK].type, exn)) {
@ -3238,27 +3289,35 @@ static Scheme_Object *default_yield_handler(int argc, Scheme_Object **argv)
/***********************************************************************/ /***********************************************************************/
static int extract_spec_level(Scheme_Object *level_spec, Scheme_Object *name)
{
if (!level_spec) return 0;
while (1) {
if (SCHEME_INTP(level_spec))
return SCHEME_INT_VAL(level_spec);
else if (name && SAME_OBJ(SCHEME_CADR(level_spec), name))
return SCHEME_INT_VAL(SCHEME_CAR(level_spec));
level_spec = SCHEME_CDR(SCHEME_CDR(level_spec));
}
}
void update_want_level(Scheme_Logger *logger) void update_want_level(Scheme_Logger *logger)
{ {
Scheme_Log_Reader *lr; Scheme_Log_Reader *lr;
Scheme_Object *stack = NULL, *queue, *b, *prev; Scheme_Object *stack = NULL, *queue, *b, *prev;
Scheme_Logger *parent = logger; Scheme_Logger *parent = logger;
int want_level; int want_level, level;
while (parent) { while (parent) {
stack = scheme_make_raw_pair((Scheme_Object *)parent, stack); stack = scheme_make_raw_pair((Scheme_Object *)parent, stack);
if (parent->local_timestamp < *parent->timestamp)
parent = parent->parent; parent = parent->parent;
else
parent = NULL;
} }
want_level = 0; want_level = 0;
while (stack) { while (stack) {
parent = (Scheme_Logger *)SCHEME_CAR(stack); parent = (Scheme_Logger *)SCHEME_CAR(stack);
if (parent->local_timestamp < *parent->timestamp) {
queue = parent->readers; queue = parent->readers;
prev = NULL; prev = NULL;
while (queue) { while (queue) {
@ -3266,8 +3325,9 @@ void update_want_level(Scheme_Logger *logger)
b = SCHEME_CAR(b); b = SCHEME_CAR(b);
lr = (Scheme_Log_Reader *)SCHEME_BOX_VAL(b); lr = (Scheme_Log_Reader *)SCHEME_BOX_VAL(b);
if (lr) { if (lr) {
if (lr->want_level > want_level) level = extract_spec_level(lr->level, logger->name);
want_level = lr->want_level; if (level > want_level)
want_level = level;
prev = queue; prev = queue;
} else { } else {
if (prev) if (prev)
@ -3278,19 +3338,18 @@ void update_want_level(Scheme_Logger *logger)
queue = SCHEME_CDR(queue); queue = SCHEME_CDR(queue);
} }
if (parent->syslog_level > want_level) level = extract_spec_level(parent->syslog_level, logger->name);
want_level = parent->syslog_level; if (level > want_level)
if (parent->stderr_level > want_level) want_level = level;
want_level = parent->stderr_level; level = extract_spec_level(parent->stderr_level, logger->name);
if (level > want_level)
parent->want_level = want_level; want_level = level;
parent->local_timestamp = *parent->timestamp;
} else {
want_level = parent->want_level;
}
stack = SCHEME_CDR(stack); stack = SCHEME_CDR(stack);
} }
logger->want_level = want_level;
logger->local_timestamp = *logger->timestamp;
} }
#ifdef USE_WINDOWS_EVENT_LOG #ifdef USE_WINDOWS_EVENT_LOG
@ -3320,13 +3379,13 @@ void scheme_log_message(Scheme_Logger *logger, int level, char *buffer, intptr_t
if (logger->local_timestamp < *logger->timestamp) if (logger->local_timestamp < *logger->timestamp)
update_want_level(logger); update_want_level(logger);
orig_logger = logger;
while (logger) {
if (logger->want_level < level) if (logger->want_level < level)
return; return;
if (logger->syslog_level >= level) { orig_logger = logger;
while (logger) {
if (extract_spec_level(logger->syslog_level, orig_logger->name) >= level) {
#ifdef USE_C_SYSLOG #ifdef USE_C_SYSLOG
int pri; int pri;
switch (level) { switch (level) {
@ -3418,7 +3477,7 @@ void scheme_log_message(Scheme_Logger *logger, int level, char *buffer, intptr_t
} }
#endif #endif
} }
if (logger->stderr_level >= level) { if (extract_spec_level(logger->stderr_level, orig_logger->name) >= level) {
if (orig_logger->name) { if (orig_logger->name) {
intptr_t slen; intptr_t slen;
slen = SCHEME_SYM_LEN(orig_logger->name); slen = SCHEME_SYM_LEN(orig_logger->name);
@ -3435,7 +3494,7 @@ void scheme_log_message(Scheme_Logger *logger, int level, char *buffer, intptr_t
b = SCHEME_CAR(b); b = SCHEME_CAR(b);
lr = (Scheme_Log_Reader *)SCHEME_BOX_VAL(b); lr = (Scheme_Log_Reader *)SCHEME_BOX_VAL(b);
if (lr) { if (lr) {
if (lr->want_level >= level) { if (extract_spec_level(lr->level, orig_logger->name) >= level) {
if (!msg) { if (!msg) {
Scheme_Object *v; Scheme_Object *v;
msg = scheme_make_vector(3, NULL); msg = scheme_make_vector(3, NULL);
@ -3563,13 +3622,15 @@ void scheme_glib_log_message(const char *log_domain,
scheme_log_message(scheme_main_logger, level, together, len2, scheme_false); scheme_log_message(scheme_main_logger, level, together, len2, scheme_false);
} }
static int extract_level(const char *who, int which, int argc, Scheme_Object **argv) static int extract_level(const char *who, int none_ok, int which, int argc, Scheme_Object **argv)
{ {
Scheme_Object *v; Scheme_Object *v;
int level; int level;
v = argv[which]; v = argv[which];
if (SAME_OBJ(v, fatal_symbol)) if (SAME_OBJ(v, none_symbol))
level = 0;
else if (SAME_OBJ(v, fatal_symbol))
level = SCHEME_LOG_FATAL; level = SCHEME_LOG_FATAL;
else if (SAME_OBJ(v, error_symbol)) else if (SAME_OBJ(v, error_symbol))
level = SCHEME_LOG_ERROR; level = SCHEME_LOG_ERROR;
@ -3580,7 +3641,11 @@ static int extract_level(const char *who, int which, int argc, Scheme_Object **a
else if (SAME_OBJ(v, debug_symbol)) else if (SAME_OBJ(v, debug_symbol))
level = SCHEME_LOG_DEBUG; level = SCHEME_LOG_DEBUG;
else { else {
scheme_wrong_contract(who, "(or/c 'fatal 'error 'warning 'info 'debug)", which, argc, argv); scheme_wrong_contract(who,
(none_ok
? "(or/c 'none 'fatal 'error 'warning 'info 'debug)"
: "(or/c 'fatal 'error 'warning 'info 'debug)"),
which, argc, argv);
return 0; return 0;
} }
@ -3598,7 +3663,7 @@ log_message(int argc, Scheme_Object *argv[])
scheme_wrong_contract("log-message", "logger?", 0, argc, argv); scheme_wrong_contract("log-message", "logger?", 0, argc, argv);
logger = (Scheme_Logger *)argv[0]; logger = (Scheme_Logger *)argv[0];
level = extract_level("log-message", 1, argc, argv); level = extract_level("log-message", 0, 1, argc, argv);
bytes = argv[2]; bytes = argv[2];
if (!SCHEME_CHAR_STRINGP(bytes)) if (!SCHEME_CHAR_STRINGP(bytes))
@ -3620,7 +3685,7 @@ log_level_p(int argc, Scheme_Object *argv[])
scheme_wrong_contract("log-level?", "logger?", 0, argc, argv); scheme_wrong_contract("log-level?", "logger?", 0, argc, argv);
logger = (Scheme_Logger *)argv[0]; logger = (Scheme_Logger *)argv[0];
level = extract_level("log-level?", 1, argc, argv); level = extract_level("log-level?", 0, 1, argc, argv);
if (logger->local_timestamp < *logger->timestamp) if (logger->local_timestamp < *logger->timestamp)
update_want_level(logger); update_want_level(logger);
@ -3679,13 +3744,13 @@ make_logger(int argc, Scheme_Object *argv[])
} else } else
parent = NULL; parent = NULL;
return (Scheme_Object *)make_a_logger(parent, return (Scheme_Object *)scheme_make_logger(parent,
(argc (argc
? (SCHEME_FALSEP(argv[0]) ? NULL : argv[0]) ? (SCHEME_FALSEP(argv[0]) ? NULL : argv[0])
: NULL)); : NULL));
} }
static Scheme_Logger *make_a_logger(Scheme_Logger *parent, Scheme_Object *name) Scheme_Logger *scheme_make_logger(Scheme_Logger *parent, Scheme_Object *name)
{ {
Scheme_Logger *logger; Scheme_Logger *logger;
@ -3740,17 +3805,38 @@ make_log_reader(int argc, Scheme_Object *argv[])
Scheme_Logger *logger; Scheme_Logger *logger;
Scheme_Log_Reader *lr; Scheme_Log_Reader *lr;
Scheme_Object *sema, *q; Scheme_Object *sema, *q;
int level; int default_lvl = 0, lvl, i;
Scheme_Object *level = scheme_null, *last = NULL;
if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_logger_type)) if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_logger_type))
scheme_wrong_contract("make-log-receiver", "logger?", 0, argc, argv); scheme_wrong_contract("make-log-receiver", "logger?", 0, argc, argv);
logger = (Scheme_Logger *)argv[0]; logger = (Scheme_Logger *)argv[0];
level = extract_level("make-log-receiver", 1, argc, argv); for (i = 1; i < argc; i += 2) {
lvl = extract_level("make-log-receiver", 1, i, argc, argv);
if ((i+1) < argc) {
if (SCHEME_FALSEP(argv[i+1]))
default_lvl = lvl;
else {
if (!SCHEME_SYMBOLP(argv[i+1]))
scheme_wrong_contract("make-log-receiver", "(or/c symbol? #f)", i+1, argc, argv);
level = scheme_make_pair(argv[i+1], level);
if (!last) last = level;
level = scheme_make_pair(scheme_make_integer(lvl), level);
}
} else {
default_lvl = lvl;
}
}
if (last)
SCHEME_CDR(last) = scheme_make_integer(default_lvl);
else
level = scheme_make_integer(default_lvl);
lr = MALLOC_ONE_TAGGED(Scheme_Log_Reader); lr = MALLOC_ONE_TAGGED(Scheme_Log_Reader);
lr->so.type = scheme_log_reader_type; lr->so.type = scheme_log_reader_type;
lr->want_level = level; lr->level = level;
sema = scheme_make_sema(0); sema = scheme_make_sema(0);
lr->sema = sema; lr->sema = sema;
@ -4023,17 +4109,17 @@ do_raise(Scheme_Object *arg, int need_debug, int eb)
Scheme_Thread *p = scheme_current_thread; Scheme_Thread *p = scheme_current_thread;
if (p->constant_folding) { if (p->constant_folding) {
if (SCHEME_TRUEP(p->constant_folding)) { if (p->constant_folding != (Optimize_Info *)scheme_false) {
const char *msg; const char *msg;
if (need_debug) { if (need_debug) {
msg = scheme_display_to_string(((Scheme_Structure *)arg)->slots[0], NULL); msg = scheme_display_to_string(((Scheme_Structure *)arg)->slots[0], NULL);
} else } else
msg = scheme_print_to_string(arg, NULL); msg = scheme_print_to_string(arg, NULL);
scheme_log(NULL, scheme_log(scheme_optimize_info_logger(p->constant_folding),
SCHEME_LOG_WARNING, SCHEME_LOG_WARNING,
0, 0,
"warning%s: optimizer constant-fold attempt failed: %s", "warning%s: constant-fold attempt failed: %s",
scheme_optimize_context_to_string(p->constant_folding), scheme_optimize_info_context(p->constant_folding),
msg); msg);
} }
if (SCHEME_CHAPERONE_STRUCTP(arg) if (SCHEME_CHAPERONE_STRUCTP(arg)

View File

@ -3953,7 +3953,7 @@ static void *compile_k(void)
break; break;
} }
oi = scheme_optimize_info_create(cenv->prefix); oi = scheme_optimize_info_create(cenv->prefix, 1);
scheme_optimize_info_enforce_const(oi, enforce_consts); scheme_optimize_info_enforce_const(oi, enforce_consts);
if (!(comp_flags & COMP_CAN_INLINE)) if (!(comp_flags & COMP_CAN_INLINE))
scheme_optimize_info_never_inline(oi); scheme_optimize_info_never_inline(oi);

View File

@ -1107,7 +1107,7 @@ static void log_future_event(Scheme_Future_State *fs,
((Scheme_Structure *)data)->slots[5] = user_data; ((Scheme_Structure *)data)->slots[5] = user_data;
scheme_log_w_data(scheme_main_logger, SCHEME_LOG_DEBUG, 0, scheme_log_w_data(scheme_get_future_logger(), SCHEME_LOG_DEBUG, 0,
data, data,
msg_str, msg_str,
fid, fid,
@ -1123,7 +1123,7 @@ static Scheme_Object *mark_future_trace_end(int argc, Scheme_Object **argv)
Scheme_Future_State *fs; Scheme_Future_State *fs;
fs = scheme_future_state; fs = scheme_future_state;
log_future_event(fs, log_future_event(fs,
"future %d, process %d: %s: %s; time: %f", "id %d, process %d: %s: %s; time: %f",
"tracing", "tracing",
-1, -1,
FEVENT_STOP_TRACE, FEVENT_STOP_TRACE,
@ -1137,7 +1137,7 @@ static Scheme_Object *mark_future_trace_end(int argc, Scheme_Object **argv)
static void log_overflow_event(Scheme_Future_State *fs, int which, double timestamp) static void log_overflow_event(Scheme_Future_State *fs, int which, double timestamp)
{ {
log_future_event(fs, log_future_event(fs,
"future ??%-, process %d: %s%s; before time: %f", "id ??%-, process %d: %s%s; before time: %f",
"", "",
which, which,
FEVENT_MISSING, FEVENT_MISSING,
@ -1154,7 +1154,7 @@ static void flush_future_logs(Scheme_Future_State *fs)
Fevent_Buffer *b, *min_b; Fevent_Buffer *b, *min_b;
Scheme_Object *data_val; Scheme_Object *data_val;
if (scheme_log_level_p(scheme_main_logger, SCHEME_LOG_DEBUG)) { if (scheme_log_level_p(scheme_get_future_logger(), SCHEME_LOG_DEBUG)) {
/* Hold lock while swapping buffers: */ /* Hold lock while swapping buffers: */
mzrt_mutex_lock(fs->future_mutex); mzrt_mutex_lock(fs->future_mutex);
for (i = 0; i < fs->thread_pool_size; i++) { for (i = 0; i < fs->thread_pool_size; i++) {
@ -1223,7 +1223,7 @@ static void flush_future_logs(Scheme_Future_State *fs)
data_val = scheme_make_integer(min_b->a[min_b->i].data); data_val = scheme_make_integer(min_b->a[min_b->i].data);
log_future_event(fs, log_future_event(fs,
"future %d, process %d: %s%s; time: %f", "id %d, process %d: %s%s; time: %f",
"", "",
min_which, min_which,
min_b->a[min_b->i].what, min_b->a[min_b->i].what,
@ -2095,7 +2095,7 @@ Scheme_Object *touch(int argc, Scheme_Object *argv[])
Scheme_Object *targid_obj; Scheme_Object *targid_obj;
targid_obj = scheme_make_integer(targ_ft->id); targid_obj = scheme_make_integer(targ_ft->id);
log_future_event(fs, log_future_event(fs,
"future %d, process %d: %s: %s; time: %f", "id %d, process %d: %s: %s; time: %f",
"touch", "touch",
-1, -1,
FEVENT_RTCALL_TOUCH, FEVENT_RTCALL_TOUCH,
@ -3352,7 +3352,7 @@ static void do_invoke_rtcall(Scheme_Future_State *fs, future_t *future)
g_rtcall_count++; g_rtcall_count++;
#endif #endif
if (scheme_log_level_p(scheme_main_logger, SCHEME_LOG_DEBUG)) { if (scheme_log_level_p(scheme_get_future_logger(), SCHEME_LOG_DEBUG)) {
const char *src; const char *src;
Scheme_Object *userdata; Scheme_Object *userdata;
@ -3396,7 +3396,7 @@ static void do_invoke_rtcall(Scheme_Future_State *fs, future_t *future)
} }
log_future_event(fs, log_future_event(fs,
"future %d, process %d: %s: %s; time: %f", "id %d, process %d: %s: %s; time: %f",
src, src,
-1, -1,
(future->rt_prim_is_atomic ? FEVENT_HANDLE_RTCALL_ATOMIC : FEVENT_HANDLE_RTCALL), (future->rt_prim_is_atomic ? FEVENT_HANDLE_RTCALL_ATOMIC : FEVENT_HANDLE_RTCALL),

View File

@ -7995,7 +7995,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *orig_form, Scheme_Comp_Env
o = scheme_get_param(scheme_current_config(), MZCONFIG_USE_JIT); o = scheme_get_param(scheme_current_config(), MZCONFIG_USE_JIT);
use_jit = SCHEME_TRUEP(o); use_jit = SCHEME_TRUEP(o);
oi = scheme_optimize_info_create(env->prefix); oi = scheme_optimize_info_create(env->prefix, 1);
scheme_optimize_info_enforce_const(oi, rec[drec].comp_flags & COMP_ENFORCE_CONSTS); scheme_optimize_info_enforce_const(oi, rec[drec].comp_flags & COMP_ENFORCE_CONSTS);
if (!(rec[drec].comp_flags & COMP_CAN_INLINE)) if (!(rec[drec].comp_flags & COMP_CAN_INLINE))
scheme_optimize_info_never_inline(oi); scheme_optimize_info_never_inline(oi);
@ -8592,7 +8592,7 @@ static Scheme_Object *do_module_begin_at_phase(Scheme_Object *form, Scheme_Comp_
if (!for_stx) if (!for_stx)
lifted_reqs = scheme_append(scheme_frame_get_require_lifts(eenv), lifted_reqs); lifted_reqs = scheme_append(scheme_frame_get_require_lifts(eenv), lifted_reqs);
oi = scheme_optimize_info_create(eenv->prefix); oi = scheme_optimize_info_create(eenv->prefix, 1);
scheme_optimize_info_set_context(oi, (Scheme_Object *)env->genv->module); scheme_optimize_info_set_context(oi, (Scheme_Object *)env->genv->module);
if (!(rec[drec].comp_flags & COMP_CAN_INLINE)) if (!(rec[drec].comp_flags & COMP_CAN_INLINE))
scheme_optimize_info_never_inline(oi); scheme_optimize_info_never_inline(oi);

View File

@ -18,6 +18,7 @@ static int mark_optimize_info_MARK(void *p, struct NewGC *gc) {
gcMARK2(i->transitive_use, gc); gcMARK2(i->transitive_use, gc);
gcMARK2(i->transitive_use_len, gc); gcMARK2(i->transitive_use_len, gc);
gcMARK2(i->context, gc); gcMARK2(i->context, gc);
gcMARK2(i->logger, gc);
return return
gcBYTES_TO_WORDS(sizeof(Optimize_Info)); gcBYTES_TO_WORDS(sizeof(Optimize_Info));
@ -36,6 +37,7 @@ static int mark_optimize_info_FIXUP(void *p, struct NewGC *gc) {
gcFIXUP2(i->transitive_use, gc); gcFIXUP2(i->transitive_use, gc);
gcFIXUP2(i->transitive_use_len, gc); gcFIXUP2(i->transitive_use_len, gc);
gcFIXUP2(i->context, gc); gcFIXUP2(i->context, gc);
gcFIXUP2(i->logger, gc);
return return
gcBYTES_TO_WORDS(sizeof(Optimize_Info)); gcBYTES_TO_WORDS(sizeof(Optimize_Info));

View File

@ -2916,8 +2916,10 @@ static int mark_logger_MARK(void *p, struct NewGC *gc) {
Scheme_Logger *l = (Scheme_Logger *)p; Scheme_Logger *l = (Scheme_Logger *)p;
gcMARK2(l->name, gc); gcMARK2(l->name, gc);
gcMARK2(l->parent, gc); gcMARK2(l->parent, gc);
gcMARK2(l->readers, gc);
gcMARK2(l->timestamp, gc); gcMARK2(l->timestamp, gc);
gcMARK2(l->syslog_level, gc);
gcMARK2(l->stderr_level, gc);
gcMARK2(l->readers, gc);
return return
gcBYTES_TO_WORDS(sizeof(Scheme_Logger)); gcBYTES_TO_WORDS(sizeof(Scheme_Logger));
} }
@ -2926,8 +2928,10 @@ static int mark_logger_FIXUP(void *p, struct NewGC *gc) {
Scheme_Logger *l = (Scheme_Logger *)p; Scheme_Logger *l = (Scheme_Logger *)p;
gcFIXUP2(l->name, gc); gcFIXUP2(l->name, gc);
gcFIXUP2(l->parent, gc); gcFIXUP2(l->parent, gc);
gcFIXUP2(l->readers, gc);
gcFIXUP2(l->timestamp, gc); gcFIXUP2(l->timestamp, gc);
gcFIXUP2(l->syslog_level, gc);
gcFIXUP2(l->stderr_level, gc);
gcFIXUP2(l->readers, gc);
return return
gcBYTES_TO_WORDS(sizeof(Scheme_Logger)); gcBYTES_TO_WORDS(sizeof(Scheme_Logger));
} }
@ -2943,6 +2947,7 @@ static int mark_log_reader_SIZE(void *p, struct NewGC *gc) {
static int mark_log_reader_MARK(void *p, struct NewGC *gc) { static int mark_log_reader_MARK(void *p, struct NewGC *gc) {
Scheme_Log_Reader *lr = (Scheme_Log_Reader *)p; Scheme_Log_Reader *lr = (Scheme_Log_Reader *)p;
gcMARK2(lr->level, gc);
gcMARK2(lr->sema, gc); gcMARK2(lr->sema, gc);
gcMARK2(lr->head, gc); gcMARK2(lr->head, gc);
gcMARK2(lr->tail, gc); gcMARK2(lr->tail, gc);
@ -2952,6 +2957,7 @@ static int mark_log_reader_MARK(void *p, struct NewGC *gc) {
static int mark_log_reader_FIXUP(void *p, struct NewGC *gc) { static int mark_log_reader_FIXUP(void *p, struct NewGC *gc) {
Scheme_Log_Reader *lr = (Scheme_Log_Reader *)p; Scheme_Log_Reader *lr = (Scheme_Log_Reader *)p;
gcFIXUP2(lr->level, gc);
gcFIXUP2(lr->sema, gc); gcFIXUP2(lr->sema, gc);
gcFIXUP2(lr->head, gc); gcFIXUP2(lr->head, gc);
gcFIXUP2(lr->tail, gc); gcFIXUP2(lr->tail, gc);

View File

@ -1173,8 +1173,10 @@ mark_logger {
Scheme_Logger *l = (Scheme_Logger *)p; Scheme_Logger *l = (Scheme_Logger *)p;
gcMARK2(l->name, gc); gcMARK2(l->name, gc);
gcMARK2(l->parent, gc); gcMARK2(l->parent, gc);
gcMARK2(l->readers, gc);
gcMARK2(l->timestamp, gc); gcMARK2(l->timestamp, gc);
gcMARK2(l->syslog_level, gc);
gcMARK2(l->stderr_level, gc);
gcMARK2(l->readers, gc);
size: size:
gcBYTES_TO_WORDS(sizeof(Scheme_Logger)); gcBYTES_TO_WORDS(sizeof(Scheme_Logger));
} }
@ -1182,6 +1184,7 @@ mark_logger {
mark_log_reader { mark_log_reader {
mark: mark:
Scheme_Log_Reader *lr = (Scheme_Log_Reader *)p; Scheme_Log_Reader *lr = (Scheme_Log_Reader *)p;
gcMARK2(lr->level, gc);
gcMARK2(lr->sema, gc); gcMARK2(lr->sema, gc);
gcMARK2(lr->head, gc); gcMARK2(lr->head, gc);
gcMARK2(lr->tail, gc); gcMARK2(lr->tail, gc);
@ -1305,6 +1308,7 @@ mark_optimize_info {
gcMARK2(i->transitive_use, gc); gcMARK2(i->transitive_use, gc);
gcMARK2(i->transitive_use_len, gc); gcMARK2(i->transitive_use_len, gc);
gcMARK2(i->context, gc); gcMARK2(i->context, gc);
gcMARK2(i->logger, gc);
size: size:
gcBYTES_TO_WORDS(sizeof(Optimize_Info)); gcBYTES_TO_WORDS(sizeof(Optimize_Info));

View File

@ -73,6 +73,7 @@ struct Optimize_Info
int *transitive_use_len; int *transitive_use_len;
Scheme_Object *context; /* for logging */ Scheme_Object *context; /* for logging */
Scheme_Logger *logger;
}; };
static char *get_closure_flonum_map(Scheme_Closure_Data *data, int arg_n, int *ok); static char *get_closure_flonum_map(Scheme_Closure_Data *data, int arg_n, int *ok);
@ -192,10 +193,10 @@ static void note_match(int actual, int expected, Optimize_Info *warn_info)
return; return;
if (actual != expected) { if (actual != expected) {
scheme_log(NULL, scheme_log(warn_info->logger,
SCHEME_LOG_WARNING, SCHEME_LOG_WARNING,
0, 0,
"warning%s: optimizer detects %d values produced when %d expected", "warning%s: %d values produced when %d expected",
scheme_optimize_context_to_string(warn_info->context), scheme_optimize_context_to_string(warn_info->context),
actual, expected); actual, expected);
} }
@ -649,7 +650,7 @@ static Scheme_Object *try_optimize_fold(Scheme_Object *f, Scheme_Object *o, Opti
break; break;
} }
return scheme_try_apply(f, args, info->context); return scheme_try_apply(f, args, info);
} }
return NULL; return NULL;
@ -845,7 +846,7 @@ static Scheme_Object *apply_inlined(Scheme_Object *p, Scheme_Closure_Data *data,
l = cons(val, l); l = cons(val, l);
} }
l = cons(scheme_list_proc, l); l = cons(scheme_list_proc, l);
val = scheme_make_application(l); val = scheme_make_application(l, info);
} else if (app) } else if (app)
val = app->args[i + 1]; val = app->args[i + 1];
else if (app3) else if (app3)
@ -1089,10 +1090,10 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a
if (le) { if (le) {
LOG_INLINE(fprintf(stderr, "Inline %d[%d]<=%d@%d %d %s\n", sz, is_leaf, threshold, info->inline_fuel, LOG_INLINE(fprintf(stderr, "Inline %d[%d]<=%d@%d %d %s\n", sz, is_leaf, threshold, info->inline_fuel,
single_use, scheme_write_to_string(data->name ? data->name : scheme_false, NULL))); single_use, scheme_write_to_string(data->name ? data->name : scheme_false, NULL)));
scheme_log(NULL, scheme_log(info->logger,
SCHEME_LOG_DEBUG, SCHEME_LOG_DEBUG,
0, 0,
"mzc optimizer: inlining: involving: %s%s size: %d threshold: %d", "inlining: involving: %s%s size: %d threshold: %d",
scheme_write_to_string(data->name ? data->name : scheme_false, NULL), scheme_write_to_string(data->name ? data->name : scheme_false, NULL),
scheme_optimize_context_to_string(info->context), scheme_optimize_context_to_string(info->context),
sz, sz,
@ -1104,10 +1105,10 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a
return le; return le;
} else { } else {
LOG_INLINE(fprintf(stderr, "No inline %s\n", scheme_write_to_string(data->name ? data->name : scheme_false, NULL))); LOG_INLINE(fprintf(stderr, "No inline %s\n", scheme_write_to_string(data->name ? data->name : scheme_false, NULL)));
scheme_log(NULL, scheme_log(info->logger,
SCHEME_LOG_DEBUG, SCHEME_LOG_DEBUG,
0, 0,
"mzc optimizer: no inlining: involving: %s%s size: %d threshold: %d", "no inlining: involving: %s%s size: %d threshold: %d",
scheme_write_to_string(data->name ? data->name : scheme_false, NULL), scheme_write_to_string(data->name ? data->name : scheme_false, NULL),
scheme_optimize_context_to_string(info->context), scheme_optimize_context_to_string(info->context),
sz, sz,
@ -1117,10 +1118,10 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a
LOG_INLINE(fprintf(stderr, "No fuel %s %d[%d]>%d@%d %d\n", scheme_write_to_string(data->name ? data->name : scheme_false, NULL), LOG_INLINE(fprintf(stderr, "No fuel %s %d[%d]>%d@%d %d\n", scheme_write_to_string(data->name ? data->name : scheme_false, NULL),
sz, is_leaf, threshold, sz, is_leaf, threshold,
info->inline_fuel, info->use_psize)); info->inline_fuel, info->use_psize));
scheme_log(NULL, scheme_log(info->logger,
SCHEME_LOG_DEBUG, SCHEME_LOG_DEBUG,
0, 0,
"mzc optimizer: no inlining, out of fuel: involving: %s%s size: %d threshold: %d", "no inlining, out of fuel: involving: %s%s size: %d threshold: %d",
scheme_write_to_string(data->name ? data->name : scheme_false, NULL), scheme_write_to_string(data->name ? data->name : scheme_false, NULL),
scheme_optimize_context_to_string(info->context), scheme_optimize_context_to_string(info->context),
sz, sz,
@ -1161,7 +1162,7 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a
const char *pname, *context; const char *pname, *context;
pname = scheme_get_proc_name(bad_app, &len, 0); pname = scheme_get_proc_name(bad_app, &len, 0);
context = scheme_optimize_context_to_string(info->context); context = scheme_optimize_context_to_string(info->context);
scheme_log(NULL, scheme_log(info->logger,
SCHEME_LOG_WARNING, SCHEME_LOG_WARNING,
0, 0,
"warning%s: optimizer detects procedure incorrectly applied to %d arguments%s%s", "warning%s: optimizer detects procedure incorrectly applied to %d arguments%s%s",
@ -1329,6 +1330,16 @@ char *scheme_optimize_context_to_string(Scheme_Object *context)
return ""; return "";
} }
char *scheme_optimize_info_context(Optimize_Info *info)
{
return scheme_optimize_context_to_string(info->context);
}
Scheme_Logger *scheme_optimize_info_logger(Optimize_Info *info)
{
return info->logger;
}
static void reset_rator(Scheme_Object *app, Scheme_Object *a) static void reset_rator(Scheme_Object *app, Scheme_Object *a)
{ {
switch (SCHEME_TYPE(app)) { switch (SCHEME_TYPE(app)) {
@ -1592,7 +1603,7 @@ static Scheme_Object *finish_optimize_app(Scheme_Object *o, Optimize_Info *info,
} }
} }
static Scheme_Object *direct_apply(Scheme_Object *expr, Scheme_Object *rator, Scheme_Object *last_rand) static Scheme_Object *direct_apply(Scheme_Object *expr, Scheme_Object *rator, Scheme_Object *last_rand, Optimize_Info *info)
{ {
if (SAME_OBJ(rator, scheme_apply_proc)) { if (SAME_OBJ(rator, scheme_apply_proc)) {
switch(SCHEME_TYPE(last_rand)) { switch(SCHEME_TYPE(last_rand)) {
@ -1658,7 +1669,7 @@ static Scheme_Object *direct_apply(Scheme_Object *expr, Scheme_Object *rator, Sc
break; break;
} }
return scheme_make_application(l); return scheme_make_application(l, info);
} }
} }
@ -1674,7 +1685,7 @@ static Scheme_Object *optimize_application(Scheme_Object *o, Optimize_Info *info
app = (Scheme_App_Rec *)o; app = (Scheme_App_Rec *)o;
/* Check for (apply ... (list ...)) early: */ /* Check for (apply ... (list ...)) early: */
le = direct_apply((Scheme_Object *)app, app->args[0], app->args[app->num_args]); le = direct_apply((Scheme_Object *)app, app->args[0], app->args[app->num_args], info);
if (le) return scheme_optimize_expr(le, info, context); if (le) return scheme_optimize_expr(le, info, context);
le = check_app_let_rator(o, app->args[0], info, app->num_args, context); le = check_app_let_rator(o, app->args[0], info, app->num_args, context);
@ -1705,7 +1716,7 @@ static Scheme_Object *optimize_application(Scheme_Object *o, Optimize_Info *info
} }
/* Check for (apply ... (list ...)) after some optimizations: */ /* Check for (apply ... (list ...)) after some optimizations: */
le = direct_apply((Scheme_Object *)app, app->args[0], app->args[app->num_args]); le = direct_apply((Scheme_Object *)app, app->args[0], app->args[app->num_args], info);
if (le) return finish_optimize_app(le, info, context, rator_flags); if (le) return finish_optimize_app(le, info, context, rator_flags);
/* Convert (hash-ref '#hash... key (lambda () literal)) /* Convert (hash-ref '#hash... key (lambda () literal))
@ -1985,7 +1996,7 @@ static Scheme_Object *optimize_application3(Scheme_Object *o, Optimize_Info *inf
app = (Scheme_App3_Rec *)o; app = (Scheme_App3_Rec *)o;
/* Check for (apply ... (list ...)) early: */ /* Check for (apply ... (list ...)) early: */
le = direct_apply((Scheme_Object *)app, app->rator, app->rand2); le = direct_apply((Scheme_Object *)app, app->rator, app->rand2, info);
if (le) return scheme_optimize_expr(le, info, context); if (le) return scheme_optimize_expr(le, info, context);
le = check_app_let_rator(o, app->rator, info, 2, context); le = check_app_let_rator(o, app->rator, info, 2, context);
@ -2024,7 +2035,7 @@ static Scheme_Object *optimize_application3(Scheme_Object *o, Optimize_Info *inf
app->rand2 = le; app->rand2 = le;
/* Check for (apply ... (list ...)) after some optimizations: */ /* Check for (apply ... (list ...)) after some optimizations: */
le = direct_apply((Scheme_Object *)app, app->rator, app->rand2); le = direct_apply((Scheme_Object *)app, app->rator, app->rand2, info);
if (le) return finish_optimize_app(le, info, context, rator_flags); if (le) return finish_optimize_app(le, info, context, rator_flags);
return finish_optimize_application3(app, info, context, rator_flags); return finish_optimize_application3(app, info, context, rator_flags);
@ -2890,9 +2901,10 @@ static Scheme_Object *do_define_syntaxes_optimize(Scheme_Object *data, Optimize_
val = SCHEME_VEC_ELS(data)[3]; val = SCHEME_VEC_ELS(data)[3];
einfo = scheme_optimize_info_create(info->cp); einfo = scheme_optimize_info_create(info->cp, 0);
if (info->inline_fuel < 0) if (info->inline_fuel < 0)
einfo->inline_fuel = -1; einfo->inline_fuel = -1;
einfo->logger = info->logger;
val = scheme_optimize_expr(val, einfo, 0); val = scheme_optimize_expr(val, einfo, 0);
@ -2914,9 +2926,10 @@ static Scheme_Object *begin_for_syntax_optimize(Scheme_Object *data, Optimize_In
l = SCHEME_VEC_ELS(data)[2]; l = SCHEME_VEC_ELS(data)[2];
while (!SCHEME_NULLP(l)) { while (!SCHEME_NULLP(l)) {
einfo = scheme_optimize_info_create(info->cp); einfo = scheme_optimize_info_create(info->cp, 0);
if (info->inline_fuel < 0) if (info->inline_fuel < 0)
einfo->inline_fuel = -1; einfo->inline_fuel = -1;
einfo->logger = info->logger;
a = SCHEME_CAR(l); a = SCHEME_CAR(l);
a = scheme_optimize_expr(a, einfo, 0); a = scheme_optimize_expr(a, einfo, 0);
@ -5472,7 +5485,7 @@ Scheme_Object *optimize_shift(Scheme_Object *expr, int delta, int after_depth)
/* compile-time env for optimization */ /* compile-time env for optimization */
/*========================================================================*/ /*========================================================================*/
Optimize_Info *scheme_optimize_info_create(Comp_Prefix *cp) Optimize_Info *scheme_optimize_info_create(Comp_Prefix *cp, int get_logger)
{ {
Optimize_Info *info; Optimize_Info *info;
@ -5483,6 +5496,13 @@ Optimize_Info *scheme_optimize_info_create(Comp_Prefix *cp)
info->inline_fuel = 32; info->inline_fuel = 32;
info->cp = cp; info->cp = cp;
if (get_logger) {
Scheme_Logger *logger;
logger = (Scheme_Logger *)scheme_get_param(scheme_current_config(), MZCONFIG_LOGGER);
logger = scheme_make_logger(logger, scheme_intern_symbol("optimizer"));
info->logger = logger;
}
return info; return info;
} }
@ -6026,7 +6046,7 @@ static Optimize_Info *optimize_info_add_frame(Optimize_Info *info, int orig, int
{ {
Optimize_Info *naya; Optimize_Info *naya;
naya = scheme_optimize_info_create(info->cp); naya = scheme_optimize_info_create(info->cp, 0);
naya->flags = (short)flags; naya->flags = (short)flags;
naya->next = info; naya->next = info;
naya->original_frame = orig; naya->original_frame = orig;
@ -6038,6 +6058,7 @@ static Optimize_Info *optimize_info_add_frame(Optimize_Info *info, int orig, int
naya->context = info->context; naya->context = info->context;
naya->vclock = info->vclock; naya->vclock = info->vclock;
naya->use_psize = info->use_psize; naya->use_psize = info->use_psize;
naya->logger = info->logger;
return naya; return naya;
} }

View File

@ -5586,6 +5586,14 @@ static Scheme_Object *compare_bool(int argc, Scheme_Object *argv[])
return gen_compare("regexp-match?", 2, argc, argv, 0, 0, 0); return gen_compare("regexp-match?", 2, argc, argv, 0, 0, 0);
} }
int scheme_regexp_match_p(Scheme_Object *regexp, Scheme_Object *target)
{
Scheme_Object *a[2];
a[0] = regexp;
a[1] = target;
return SCHEME_TRUEP(compare_bool(2, a));
}
static Scheme_Object *compare_peek(int argc, Scheme_Object *argv[]) static Scheme_Object *compare_peek(int argc, Scheme_Object *argv[])
{ {
return gen_compare("regexp-match-peek", 0, argc, argv, 1, 0, 0); return gen_compare("regexp-match-peek", 0, argc, argv, 1, 0, 0);

View File

@ -12,7 +12,7 @@
finally, set EXPECTED_PRIM_COUNT to the right value and finally, set EXPECTED_PRIM_COUNT to the right value and
USE_COMPILED_STARTUP to 1 and `make' again. */ USE_COMPILED_STARTUP to 1 and `make' again. */
#define USE_COMPILED_STARTUP 1 #define USE_COMPILED_STARTUP 0
#define EXPECTED_PRIM_COUNT 1072 #define EXPECTED_PRIM_COUNT 1072
#define EXPECTED_UNSAFE_COUNT 79 #define EXPECTED_UNSAFE_COUNT 79

View File

@ -287,11 +287,14 @@ void scheme_init_gmp_places(void);
void scheme_init_print_global_constants(void); void scheme_init_print_global_constants(void);
void scheme_init_variable_references_constants(void); void scheme_init_variable_references_constants(void);
void scheme_init_logger(void); void scheme_init_logger(void);
void scheme_init_logging_once(void);
void scheme_init_file_places(void); void scheme_init_file_places(void);
void scheme_init_foreign_places(void); void scheme_init_foreign_places(void);
void scheme_init_place_local_symbol_table(void); void scheme_init_place_local_symbol_table(void);
Scheme_Logger *scheme_get_main_logger(void); Scheme_Logger *scheme_get_main_logger(void);
Scheme_Logger *scheme_get_gc_logger(void);
Scheme_Logger *scheme_get_future_logger(void);
void scheme_init_logger_config(void); void scheme_init_logger_config(void);
void register_network_evts(); void register_network_evts();
@ -2701,11 +2704,14 @@ int scheme_resolve_info_use_jit(Resolve_Info *ri);
void scheme_enable_expression_resolve_lifts(Resolve_Info *ri); void scheme_enable_expression_resolve_lifts(Resolve_Info *ri);
Scheme_Object *scheme_merge_expression_resolve_lifts(Scheme_Object *expr, Resolve_Prefix *rp, Resolve_Info *ri); Scheme_Object *scheme_merge_expression_resolve_lifts(Scheme_Object *expr, Resolve_Prefix *rp, Resolve_Info *ri);
Optimize_Info *scheme_optimize_info_create(Comp_Prefix *cp); Optimize_Info *scheme_optimize_info_create(Comp_Prefix *cp, int get_logger);
void scheme_optimize_info_enforce_const(Optimize_Info *, int enforce_const); void scheme_optimize_info_enforce_const(Optimize_Info *, int enforce_const);
void scheme_optimize_info_set_context(Optimize_Info *, Scheme_Object *ctx); void scheme_optimize_info_set_context(Optimize_Info *, Scheme_Object *ctx);
void scheme_optimize_info_never_inline(Optimize_Info *); void scheme_optimize_info_never_inline(Optimize_Info *);
char *scheme_optimize_info_context(Optimize_Info *);
Scheme_Logger *scheme_optimize_info_logger(Optimize_Info *);
Scheme_Object *scheme_toplevel_to_flagged_toplevel(Scheme_Object *tl, int flags); Scheme_Object *scheme_toplevel_to_flagged_toplevel(Scheme_Object *tl, int flags);
int scheme_wants_flonum_arguments(Scheme_Object *rator, int argpos); int scheme_wants_flonum_arguments(Scheme_Object *rator, int argpos);
@ -2879,8 +2885,8 @@ int scheme_is_env_variable_boxed(Scheme_Comp_Env *env, int which);
int scheme_get_eval_type(Scheme_Object *obj); int scheme_get_eval_type(Scheme_Object *obj);
Scheme_Object *scheme_make_application(Scheme_Object *v); Scheme_Object *scheme_make_application(Scheme_Object *v, Optimize_Info *info);
Scheme_Object *scheme_try_apply(Scheme_Object *f, Scheme_Object *args, Scheme_Object *context); Scheme_Object *scheme_try_apply(Scheme_Object *f, Scheme_Object *args, Optimize_Info *info);
Scheme_Object *scheme_get_stop_expander(void); Scheme_Object *scheme_get_stop_expander(void);
@ -3414,17 +3420,20 @@ struct Scheme_Logger {
Scheme_Logger *parent; Scheme_Logger *parent;
int want_level; int want_level;
intptr_t *timestamp, local_timestamp; /* determines when want_level is up-to-date */ intptr_t *timestamp, local_timestamp; /* determines when want_level is up-to-date */
int syslog_level, stderr_level; Scheme_Object *syslog_level; /* (list* <level-int> <name-sym> ... <level-int>) */
Scheme_Object *stderr_level;
Scheme_Object *readers; /* list of (cons (make-weak-box <reader>) <sema>) */ Scheme_Object *readers; /* list of (cons (make-weak-box <reader>) <sema>) */
}; };
typedef struct Scheme_Log_Reader { typedef struct Scheme_Log_Reader {
Scheme_Object so; Scheme_Object so;
int want_level; Scheme_Object *level; /* (list* <level-int> <name-sym> ... <level-int>) */
Scheme_Object *sema; Scheme_Object *sema;
Scheme_Object *head, *tail; Scheme_Object *head, *tail;
} Scheme_Log_Reader; } Scheme_Log_Reader;
Scheme_Logger *scheme_make_logger(Scheme_Logger *parent, Scheme_Object *name);
char *scheme_optimize_context_to_string(Scheme_Object *context); char *scheme_optimize_context_to_string(Scheme_Object *context);
void scheme_write_proc_context(Scheme_Object *port, int print_width, void scheme_write_proc_context(Scheme_Object *port, int print_width,
@ -3743,6 +3752,10 @@ Scheme_Object *scheme_make_regexp(Scheme_Object *str, int byte, int pcre, int *
int scheme_is_pregexp(Scheme_Object *o); int scheme_is_pregexp(Scheme_Object *o);
void scheme_clear_rx_buffers(void); void scheme_clear_rx_buffers(void);
int scheme_regexp_match_p(Scheme_Object *regexp, Scheme_Object *target);
Scheme_Object *scheme_symbol_to_string(Scheme_Object *sym);
#ifdef SCHEME_BIG_ENDIAN #ifdef SCHEME_BIG_ENDIAN
# define MZ_UCS4_NAME "UCS-4BE" # define MZ_UCS4_NAME "UCS-4BE"
#else #else

View File

@ -13,12 +13,12 @@
consistently.) consistently.)
*/ */
#define MZSCHEME_VERSION "5.3.0.22" #define MZSCHEME_VERSION "5.3.0.23"
#define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_X 5
#define MZSCHEME_VERSION_Y 3 #define MZSCHEME_VERSION_Y 3
#define MZSCHEME_VERSION_Z 0 #define MZSCHEME_VERSION_Z 0
#define MZSCHEME_VERSION_W 22 #define MZSCHEME_VERSION_W 23
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)

View File

@ -791,19 +791,13 @@ string_to_unreadable_symbol_prim (int argc, Scheme_Object *argv[])
return scheme_intern_exact_parallel_symbol(bs, blen); return scheme_intern_exact_parallel_symbol(bs, blen);
} }
static Scheme_Object * Scheme_Object *scheme_symbol_to_string(Scheme_Object *sym)
symbol_to_string_prim (int argc, Scheme_Object *argv[])
{ {
Scheme_Object *sym, *str; Scheme_Object *str;
GC_CAN_IGNORE unsigned char *s; GC_CAN_IGNORE unsigned char *s;
GC_CAN_IGNORE mzchar *s2; GC_CAN_IGNORE mzchar *s2;
intptr_t len, i; intptr_t len, i;
sym = argv[0];
if (!SCHEME_SYMBOLP(sym))
scheme_wrong_contract("symbol->string", "symbol?", 0, argc, argv);
s = (unsigned char *)SCHEME_SYM_VAL(sym); s = (unsigned char *)SCHEME_SYM_VAL(sym);
len = SCHEME_SYM_LEN(sym); len = SCHEME_SYM_LEN(sym);
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
@ -828,6 +822,20 @@ symbol_to_string_prim (int argc, Scheme_Object *argv[])
} }
} }
static Scheme_Object *
symbol_to_string_prim (int argc, Scheme_Object *argv[])
{
Scheme_Object *sym;
sym = argv[0];
if (!SCHEME_SYMBOLP(sym))
scheme_wrong_contract("symbol->string", "symbol?", 0, argc, argv);
return scheme_symbol_to_string(sym);
}
static Scheme_Object * static Scheme_Object *
keyword_p_prim (int argc, Scheme_Object *argv[]) keyword_p_prim (int argc, Scheme_Object *argv[])
{ {

View File

@ -8387,13 +8387,13 @@ static void done_with_GC()
#ifndef MZ_PRECISE_GC #ifndef MZ_PRECISE_GC
{ {
Scheme_Logger *logger = scheme_get_main_logger(); Scheme_Logger *logger = scheme_get_gc_logger();
if (logger) { if (logger) {
char buf[64]; char buf[64];
intptr_t buflen; intptr_t buflen;
sprintf(buf, sprintf(buf,
"GC in %" PRIdPTR " msec", "in %" PRIdPTR " msec",
end_this_gc_time - start_this_gc_time); end_this_gc_time - start_this_gc_time);
buflen = strlen(buf); buflen = strlen(buf);
@ -8444,7 +8444,7 @@ static void inform_GC(int master_gc, int major_gc,
intptr_t post_child_places_used) intptr_t post_child_places_used)
{ {
Scheme_Logger *logger; Scheme_Logger *logger;
logger = scheme_get_main_logger(); logger = scheme_get_gc_logger();
if (logger && scheme_log_level_p(logger, SCHEME_LOG_DEBUG)) { if (logger && scheme_log_level_p(logger, SCHEME_LOG_DEBUG)) {
/* Don't use scheme_log(), because it wants to allocate a buffer /* Don't use scheme_log(), because it wants to allocate a buffer
based on the max value-print width, and we may not be at a based on the max value-print width, and we may not be at a
@ -8486,7 +8486,7 @@ static void inform_GC(int master_gc, int major_gc,
delta = pre_used - post_used; delta = pre_used - post_used;
admin_delta = (pre_admin - post_admin) - delta; admin_delta = (pre_admin - post_admin) - delta;
sprintf(buf, sprintf(buf,
"GC[" PLACE_ID_FORMAT "%s] @ %sK(+%sK)[+%sK];" "" PLACE_ID_FORMAT "%s @ %sK(+%sK)[+%sK];"
" free %sK(%s%sK) %" PRIdPTR "ms @ %" PRIdPTR, " free %sK(%s%sK) %" PRIdPTR "ms @ %" PRIdPTR,
#ifdef MZ_USE_PLACES #ifdef MZ_USE_PLACES
scheme_current_place_id, scheme_current_place_id,