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
(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"))
(define-syntax case-test
@ -333,27 +333,6 @@
(printf "cpu time: ~s real time: ~s gc time: ~s\n" cpu user gc)
(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!)
(let* ([not-there (gensym)]
[up (lambda (who mut? set ht key xform default)
@ -405,5 +384,5 @@
with-handlers with-handlers* call-with-exception-handler
set!-values
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!))

View File

@ -103,6 +103,7 @@ code via @racket[trace-futures]), it is much
easier to use the graphical profiler tool provided by
@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
a data value that is an instance of a @racket[future-event]
@tech{prefab} structure:

View File

@ -1,5 +1,7 @@
#lang scribble/doc
@(require "mz.rkt" (for-label racket/cmdline))
@(require "mz.rkt"
scribble/bnf
(for-label racket/cmdline))
@title[#:tag "logging"]{Logging}
@ -33,9 +35,22 @@ through environment variables:
@item{If the @indexed-envvar{PLTSTDERR} environment variable is
defined and is not overridden by a command-line flag, it
determines the level of the @tech{log receiver} that propagates
events to the original error port. The environment variable's value
should be @racket["none"], @racket["fatal"], @racket["error"],
@racket["warning"], @racket["info"], or @racket["debug"].
events to the original error port.
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"].}
@ -82,6 +97,18 @@ Reports @racket[logger]'s name, if any.}
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}
@ -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
event for @racket[log-message] if no receiver is interested in the
information; this shortcut is built into @racket[log-fatal],
@racket[log-error], @racket[log-warning], @racket[log-info], and
@racket[log-debug], however, so it should not be used with those
forms.
@racket[log-error], @racket[log-warning], @racket[log-info],
@racket[log-debug], and forms bound by @racket[define-logger],
however, so it should not be used with those forms.
The result of this function can change if a garbage collection
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
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],
@racketblock[
@ -161,6 +192,18 @@ is equivalent to
(when (log-level? l '@#,racket[_level])
(log-message l '@#,racket[_level] string-expr
(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.}
@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?]{
Creates a @tech{log receiver} to receive events of importance
@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
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
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
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}.
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]
@tech{prefab} structure type with 10 fields as follows, but future
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
is always used.}
@item{@FlagFirst{W} @nonterm{level} or @DFlagFirst{warn}
@nonterm{level} : Sets the logging level for writing events to
@item{@FlagFirst{W} @nonterm{levels} or @DFlagFirst{warn}
@nonterm{levels} : Sets the logging level for writing events to
the original error port. The possible @nonterm{level} values
are the same as for the @envvar{PLTSTDERR} environment
variable. See @secref["logging"] for more information.}
@item{@FlagFirst{L} @nonterm{level} or @DFlagFirst{syslog}
@nonterm{level} : Sets the logging level for writing events to
@item{@FlagFirst{L} @nonterm{levels} or @DFlagFirst{syslog}
@nonterm{levels} : Sets the logging level for writing events to
the system log. The possible @nonterm{level} values
are the same as for the @envvar{PLTSYSLOG} environment
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)

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
Changed a thread's initial prompt to use the default handler
(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?
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;
}
static int get_log_level(char *prog, char *real_switch, const char *envvar, const char *what, char *str)
{
if (!strcmp(str, "none"))
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;
#ifndef MZ_XFORM
# define GC_CAN_IGNORE /**/
#endif
PRINTF("%s: %s level %s%s%s must be one of the following:\n"
" none fatal error warning info or debug\n"
" given: %s\n",
prog, what,
real_switch ? "after " : "in ",
real_switch ? real_switch : envvar,
real_switch ? " switch" : " envrionment variable",
str);
return -1;
static Scheme_Object *get_log_level(char *prog, char *real_switch, const char *envvar, const char *what, GC_CAN_IGNORE char *str)
{
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",
prog, what,
real_switch ? "after " : "in ",
real_switch ? real_switch : envvar,
real_switch ? " switch" : " environment variable",
orig_str);
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) {
PRINTF("%s: missing %s level after %s switch\n",
prog, what, real_switch);
return -1;
return NULL;
}
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 no_compiled = 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;
FinishArgsAtoms *fa_a;
@ -1177,7 +1230,7 @@ static int run_from_cmd_line(int argc, char *_argv[],
#endif
case 'W':
stderr_level = get_arg_log_level(prog, real_switch, "stderr", argc, argv);
if (stderr_level < 0)
if (!stderr_level)
goto show_need_help;
--argc;
argv++;
@ -1185,7 +1238,7 @@ static int run_from_cmd_line(int argc, char *_argv[],
break;
case 'L':
syslog_level = get_arg_log_level(prog, real_switch, "syslog", argc, argv);
if (syslog_level < 0)
if (!syslog_level)
goto show_need_help;
--argc;
argv++;
@ -1257,14 +1310,14 @@ static int run_from_cmd_line(int argc, char *_argv[],
#endif /* DONT_PARSE_COMMAND_LINE */
#ifdef GETENV_FUNCTION
if (syslog_level < 0) {
if (!syslog_level) {
char *s;
s = getenv("PLTSYSLOG");
if (s) {
syslog_level = get_log_level(prog, NULL, "PLTSYSLOG", "syslog", s);
}
}
if (stderr_level < 0) {
if (!stderr_level) {
char *s;
s = getenv("PLTSTDERR");
if (s) {
@ -1276,7 +1329,7 @@ static int run_from_cmd_line(int argc, char *_argv[],
}
#endif
scheme_set_logging(syslog_level, stderr_level);
scheme_set_logging_spec(syslog_level, stderr_level);
#ifndef NO_FILE_SYSTEM_UTILS
/* Setup path for "collects" collection directory: */
@ -1471,8 +1524,8 @@ static int run_from_cmd_line(int argc, char *_argv[],
# endif
" -d, --no-delay: Disable on-demand loading of syntax and code\n"
" -b, --binary : Read stdin and write stdout/stderr in binary mode\n"
" -W <level>, --warn <level> : Set stderr logging to <level>\n"
" -L <level>, --syslog <level> : Set syslog logging to <level>\n"
" -W <levels>, --warn <levels> : Set stderr logging to <levels>\n"
" -L <levels>, --syslog <levels> : Set syslog logging to <levels>\n"
" Meta options:\n"
" -- : No argument following this switch is used as a switch\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;
Scheme_Object *constant_folding; /* compiler hack */
struct Optimize_Info *constant_folding; /* compiler hack */
Scheme_Object *reading_delayed; /* reader hack */
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_link_paths(int);
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();

View File

@ -273,6 +273,8 @@ typedef struct Thread_Local_Variables {
struct gmp_tmp_stack gmp_tmp_xxx_;
struct gmp_tmp_stack *gmp_tmp_current_;
struct Scheme_Logger *scheme_main_logger_;
struct Scheme_Logger *scheme_gc_logger_;
struct Scheme_Logger *scheme_future_logger_;
int intdef_counter_;
int builtin_ref_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_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_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 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_)

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);
oi = scheme_optimize_info_create(eenv->prefix);
oi = scheme_optimize_info_create(eenv->prefix, 1);
if (!(rec[drec].comp_flags & COMP_CAN_INLINE))
scheme_optimize_info_never_inline(oi);
a = scheme_optimize_expr(a, oi, 0);
@ -4004,7 +4004,7 @@ int scheme_get_eval_type(Scheme_Object *obj)
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
folding attempts */
{
@ -4013,7 +4013,7 @@ Scheme_Object *scheme_try_apply(Scheme_Object *f, Scheme_Object *args, Scheme_Ob
mz_jmp_buf *savebuf, newbuf;
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;
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_);
}
Scheme_Object *scheme_make_application(Scheme_Object *v)
Scheme_Object *scheme_make_application(Scheme_Object *v, Optimize_Info *info)
{
Scheme_Object *o;
int i, nv;
@ -4080,7 +4080,7 @@ Scheme_Object *scheme_make_application(Scheme_Object *v)
== SCHEME_PRIM_OPT_FOLDING))
|| (SAME_TYPE(SCHEME_TYPE(f), scheme_closure_type)
&& (foldable_body(f)))) {
f = scheme_try_apply(f, SCHEME_CDR(v), scheme_false);
f = scheme_try_apply(f, SCHEME_CDR(v), info);
if (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);
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;
}

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,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,
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,
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,
101,116,42,63,97,110,100,62,111,114,64,119,104,101,110,72,112,97,114,97,109,
101,116,101,114,105,122,101,66,100,101,102,105,110,101,63,108,101,116,64,99,111,
37,109,105,110,45,115,116,120,29,11,11,11,72,112,97,114,97,109,101,116,101,
114,105,122,101,66,108,101,116,114,101,99,64,108,101,116,42,63,97,110,100,62,
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,
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,
@ -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,
1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,
121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,
240,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,
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,
2,37,2,13,2,2,2,13,96,11,11,8,240,190,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,
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,215,86,0,0,16,0,96,38,
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,
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,
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,
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,
1,8,101,110,118,49,54,57,54,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,
1,8,101,110,118,49,55,48,50,53,16,4,11,11,2,21,3,1,8,101,110,
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,
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,
29,16,4,11,11,2,20,3,1,8,101,110,118,49,54,57,54,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,
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,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,
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,
@ -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,
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,
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,
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,
@ -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,
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,
30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,54,57,57,49,16,
4,11,11,2,21,3,1,8,101,110,118,49,54,57,57,50,18,158,94,10,64,
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,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,
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,
@ -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,
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,
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,
11,16,5,2,5,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,
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,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,
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,
36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,4,88,163,8,36,37,
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,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,
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,
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,
@ -99,7 +99,7 @@
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,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,
@ -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,
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,
254,80,159,44,53,37,249,22,33,11,80,159,46,52,37,22,158,14,10,22,165,
14,10,22,166,14,10,248,22,139,6,23,196,2,28,248,22,137,7,23,194,2,
254,80,159,44,53,37,249,22,33,11,80,159,46,52,37,22,159,14,10,22,166,
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,
159,45,53,37,249,22,33,11,80,159,47,52,37,22,158,14,10,22,165,14,10,
22,166,14,10,248,22,139,6,23,197,2,28,248,22,137,7,23,194,2,12,86,
159,45,53,37,249,22,33,11,80,159,47,52,37,22,159,14,10,22,166,14,10,
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,
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,
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,
248,22,143,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,159,41,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,145,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,
80,23,195,2,27,28,248,22,144,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,48,39,39,248,22,160,15,2,
32,11,10,250,80,159,46,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,145,15,23,198,1,247,22,161,15,248,
9,27,248,22,80,23,196,2,27,28,248,22,145,15,23,195,2,23,194,1,28,
248,22,144,15,23,195,2,249,22,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,161,15,2,32,23,197,
1,10,28,23,193,2,249,22,79,248,22,148,15,249,22,146,15,23,198,1,247,
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,145,15,23,195,2,23,194,1,28,248,22,144,15,
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,161,15,2,32,23,197,1,10,28,23,
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,
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,
23,195,2,23,194,1,28,248,22,143,15,23,195,2,249,22,145,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,
22,160,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,44,8,31,39,248,22,81,23,
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,144,15,23,195,2,249,22,146,15,23,196,1,
250,80,159,46,39,39,248,22,161,15,2,32,11,10,250,80,159,44,39,39,248,
22,161,15,2,32,23,197,1,10,28,23,193,2,249,22,79,248,22,148,15,249,
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,
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,145,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,
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,30,39,248,22,81,23,200,1,248,80,159,39,8,30,
27,248,22,80,23,196,2,27,28,248,22,145,15,23,195,2,23,194,1,28,248,
22,144,15,23,195,2,249,22,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,161,15,2,32,23,197,1,
10,28,23,193,2,249,22,79,248,22,148,15,249,22,146,15,23,198,1,247,22,
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,
28,248,22,144,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,160,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,
248,22,147,15,249,22,145,15,23,198,1,247,22,161,15,248,80,159,41,8,29,
28,248,22,145,15,23,195,2,23,194,1,28,248,22,144,15,23,195,2,249,22,
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,161,15,2,32,23,197,1,10,28,23,193,2,249,22,79,
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,
184,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,
248,22,185,14,23,195,2,10,28,248,22,184,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,
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,143,15,195,28,192,192,248,22,144,15,195,11,86,94,28,28,
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,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,
101,2,33,23,197,2,28,28,248,22,185,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,
142,7,23,196,2,23,195,2,248,22,154,8,248,22,189,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,
91,92,92,93,34,23,195,2,28,248,22,142,7,195,248,22,128,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,
35,114,120,34,47,34,28,249,22,176,15,0,22,35,114,120,34,91,47,92,92,
101,2,33,23,197,2,28,28,248,22,186,14,23,195,2,249,22,152,9,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,190,14,23,197,2,28,249,
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,129,15,195,194,27,
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,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,
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,
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,
110,101,120,116,222,33,60,27,248,22,146,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,
1,23,196,1,28,23,197,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,202,2,27,248,22,146,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,205,2,23,206,2,249,22,138,15,23,200,2,23,198,1,
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,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,142,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,143,15,23,
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,
193,1,27,28,248,22,184,14,23,196,2,27,249,22,138,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,
192,86,94,23,193,1,28,23,203,2,11,27,248,22,146,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,
23,206,1,23,207,1,249,22,138,15,23,201,1,23,198,1,250,2,58,205,206,
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,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,147,15,23,200,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,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,
22,141,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,
142,15,23,194,2,250,2,58,23,204,2,23,205,2,249,22,138,15,23,200,2,
22,142,15,23,197,2,86,95,23,195,1,23,194,1,27,28,23,201,2,27,248,
22,147,15,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,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,
86,94,23,193,1,27,28,248,22,184,14,23,196,2,27,249,22,138,15,23,198,
2,23,204,2,28,28,248,22,133,15,193,10,248,22,132,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,
2,28,249,22,154,9,23,195,2,23,201,1,11,28,248,22,142,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,
58,204,205,195,192,28,23,193,2,90,159,39,11,89,161,39,36,11,248,22,141,
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,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,147,15,23,200,
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,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,142,
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,
1,27,28,248,22,184,14,195,27,249,22,138,15,197,200,28,28,248,22,133,15,
193,10,248,22,132,15,193,192,11,11,28,192,192,28,198,11,251,2,59,198,203,
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,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,
23,197,2,11,27,248,22,145,15,248,22,80,23,199,2,27,249,22,138,15,23,
196,1,23,197,2,28,248,22,132,15,23,194,2,250,2,58,198,199,195,86,94,
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,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,
145,15,248,22,80,23,196,2,27,249,22,138,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,
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,202,28,248,22,132,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,
28,248,22,142,7,23,195,2,28,248,22,142,15,23,195,2,10,248,22,143,15,
146,15,248,22,80,23,196,2,27,249,22,139,15,23,196,1,23,200,2,28,248,
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,146,15,248,22,80,195,27,
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,185,14,23,195,2,10,
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,
28,28,248,22,184,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,
28,28,248,22,185,14,23,196,2,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,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,
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,
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,
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,
23,196,1,23,194,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,201,2,28,248,22,132,15,23,
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,146,15,248,22,
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,
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,204,2,28,248,22,132,15,23,194,2,250,2,58,205,206,
248,22,87,23,194,2,11,27,248,22,146,15,248,22,80,23,196,2,27,249,22,
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,
27,248,22,145,15,248,22,80,195,27,249,22,138,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,
22,81,199,27,248,22,145,15,23,196,1,28,248,22,132,15,193,250,2,58,198,
27,248,22,146,15,248,22,80,195,27,249,22,139,15,23,196,1,206,28,248,22,
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,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,
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,
196,1,27,248,22,104,23,195,2,27,27,248,22,113,23,197,1,27,249,22,172,
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,173,
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,
139,8,23,196,2,2,37,249,22,93,23,202,2,194,249,22,79,248,22,129,15,
28,249,22,152,9,247,22,164,8,2,34,250,22,184,15,2,68,23,200,1,2,
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,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,
2,37,249,22,93,23,200,2,9,249,22,79,248,22,129,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,
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,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,
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,
23,198,2,2,37,249,22,93,195,9,86,94,23,194,1,249,22,79,248,22,129,
15,28,249,22,152,9,247,22,164,8,2,34,250,22,184,15,2,68,23,202,1,
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,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,
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,
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,
156,8,197,196,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,143,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,
248,22,184,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,28,248,22,142,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,
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,12,250,22,189,9,195,2,35,23,197,2,28,248,22,142,
156,8,197,196,86,94,28,28,248,22,185,14,194,10,28,248,22,142,7,194,28,
248,22,143,15,194,10,248,22,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,28,28,
248,22,185,14,194,10,28,248,22,142,7,194,28,248,22,143,15,194,10,248,22,
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,185,14,23,195,
2,10,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,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,
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,
10,28,248,22,142,7,193,28,248,22,142,15,193,10,248,22,143,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,
10,2,38,2,39,196,86,95,86,94,86,94,28,28,248,22,184,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,10,2,35,197,28,248,22,142,15,195,12,251,22,191,9,2,10,2,
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,143,15,193,10,248,22,144,15,193,11,12,
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,185,14,195,10,28,
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,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,
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,
248,22,142,7,193,28,248,22,142,15,193,10,248,22,143,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,
38,2,39,196,86,96,86,94,28,28,248,22,184,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,
2,35,197,28,248,22,142,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,
142,15,196,10,248,22,143,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,
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,143,15,193,10,248,22,144,15,193,11,12,250,22,
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,185,14,195,10,28,248,22,142,7,
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,143,15,195,12,251,22,191,9,2,12,2,38,2,39,198,
86,94,86,94,28,28,248,22,185,14,196,10,28,248,22,142,7,196,28,248,22,
143,15,196,10,248,22,144,15,196,11,12,250,22,189,9,2,12,2,35,198,28,
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,
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,
143,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,
100,105,114,27,248,22,160,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,
200,198,0,6,45,105,110,102,46,48,27,248,22,161,15,2,41,27,28,248,22,
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,162,15,248,22,161,15,68,111,114,105,103,45,
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,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,
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,
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,
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,
@ -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,
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,
248,22,104,194,28,248,22,184,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,
248,22,106,195,28,192,192,248,22,185,15,248,22,113,195,11,11,11,11,250,22,
248,22,104,194,28,248,22,185,14,23,194,2,10,28,248,22,142,7,23,194,2,
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,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,
249,22,176,15,248,22,113,23,198,2,247,22,160,8,27,248,22,147,15,249,22,
145,15,248,22,104,23,200,2,23,198,1,28,248,22,64,248,22,80,23,198,2,
249,22,177,15,248,22,113,23,198,2,247,22,160,8,27,248,22,148,15,249,22,
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,
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,
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,
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,
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,
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,
22,154,14,10,22,155,14,10,22,156,14,10,22,159,14,10,22,158,14,10,22,
160,14,10,22,157,14,10,22,161,14,10,22,162,14,10,22,163,14,10,22,164,
14,10,22,165,14,10,22,166,14,11,22,152,14,11,27,249,22,182,5,28,196,
22,155,14,10,22,156,14,10,22,157,14,10,22,160,14,10,22,159,14,10,22,
161,14,10,22,158,14,10,22,162,14,10,22,163,14,10,22,164,14,10,22,165,
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,
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,
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,
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,
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,
@ -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,
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,
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,
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,
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,
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,
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,
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,
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,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,
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,
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,
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,
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,
@ -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,
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,
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,
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,
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,
2,44,27,248,22,80,23,200,2,27,28,248,22,184,14,23,195,2,249,22,138,
15,23,196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,184,14,248,
22,80,23,202,2,248,22,133,15,23,194,2,10,27,250,22,1,22,138,15,23,
197,1,23,201,2,28,28,248,22,87,23,199,2,10,248,22,133,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,
184,14,201,248,22,188,14,201,200,27,248,22,145,7,23,195,2,27,28,249,22,
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,185,14,248,
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,134,15,23,194,2,
28,23,200,2,28,28,248,22,133,15,249,22,139,15,195,202,10,27,28,248,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,
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,
1,23,194,1,11,11,28,23,193,2,248,22,132,15,249,22,138,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,
81,23,16,28,23,16,23,16,199,28,199,249,22,138,15,194,201,192,254,2,94,
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,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,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,
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,
194,27,247,22,165,15,27,250,22,93,28,23,197,2,28,247,22,164,15,27,248,
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,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,
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,
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,
205,23,16,199,11,86,95,28,28,248,22,185,14,23,194,2,10,28,248,22,184,
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,2,11,12,252,22,189,9,23,200,2,2,33,36,23,
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,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,143,15,23,194,2,
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,
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,
7,194,195,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,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,
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,185,14,23,196,2,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,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,
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,
194,195,27,249,22,130,15,250,22,183,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,
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,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,
185,14,23,199,2,248,22,186,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,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,
10,28,248,22,142,7,23,196,2,28,248,22,142,15,23,196,2,10,248,22,143,
186,14,23,199,2,248,22,187,14,23,199,1,86,94,23,198,1,247,22,188,14,
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,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,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,
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,
248,22,141,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,
250,22,184,15,0,9,35,114,120,35,34,91,46,93,34,248,22,190,14,23,203,
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,131,15,249,22,143,8,
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,
63,23,201,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,28,248,22,184,14,194,249,22,138,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,
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,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,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,1,250,22,138,15,248,22,160,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,
41,9,28,193,249,22,79,195,194,192,27,247,22,164,15,249,80,159,39,40,38,
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,161,15,2,
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,
196,1,250,22,138,15,248,22,160,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,
9,28,193,249,22,79,195,194,192,27,247,22,164,15,249,80,159,39,40,38,28,
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,161,15,2,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,196,
1,250,22,138,15,248,22,160,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,
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,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,
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,
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,
@ -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,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,
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,
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,
@ -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,
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,
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,
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,
@ -529,7 +529,7 @@
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,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,
@ -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,
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,
36,16,2,20,15,16,6,253,22,135,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,
36,16,2,20,15,16,6,253,22,136,11,2,3,11,38,36,11,248,22,89,249,
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,
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,
@ -556,7 +556,7 @@
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,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,
@ -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,
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,
53,39,195,10,90,159,39,11,89,161,39,36,11,248,22,141,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,
36,34,248,22,189,14,23,197,1,249,80,159,41,57,39,198,2,26,196,27,28,
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,173,15,0,11,35,114,120,34,91,46,93,115,115,
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,
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,
39,36,11,248,22,141,15,23,197,1,86,95,20,18,159,11,80,158,42,51,199,
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,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,
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,
27,6,19,19,112,108,97,110,101,116,47,114,101,115,111,108,118,101,114,46,114,
107,116,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101,45,110,97,109,
101,45,114,101,115,111,108,118,101,114,12,250,22,138,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,252,22,138,15,23,199,1,23,201,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,139,15,23,197,1,23,199,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,
22,138,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,
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,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,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,
80,159,46,42,39,23,201,1,80,159,46,36,38,27,250,22,155,15,196,11,32,
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,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,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,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,
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,250,22,155,15,196,11,32,0,88,163,8,36,36,41,
22,139,15,23,198,1,23,200,1,249,80,159,44,42,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,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,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,
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,
@ -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,
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,
4,11,27,28,23,194,2,250,22,160,2,80,158,41,41,248,22,133,16,247,22,
159,13,11,11,27,28,23,194,2,250,22,160,2,248,22,81,23,198,2,23,198,
4,11,27,28,23,194,2,250,22,160,2,80,158,41,41,248,22,134,16,247,22,
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,
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,
159,43,39,37,249,22,33,11,80,159,45,38,37,22,172,5,28,248,22,184,14,
23,197,2,23,196,1,86,94,23,196,1,247,22,161,15,249,247,22,170,5,248,
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,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,
144,15,23,208,2,23,207,2,27,247,22,172,5,28,23,193,2,249,22,145,15,
23,210,2,23,195,1,23,208,2,89,161,39,37,11,248,22,141,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,
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,142,15,23,208,1,
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,
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,
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,
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,
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,
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,
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,
@ -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,
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,
22,184,14,23,216,2,23,215,1,86,94,23,215,1,247,22,161,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,
22,185,14,23,216,2,23,215,1,86,94,23,215,1,247,22,162,15,249,247,22,
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,
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,
@ -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,
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,
37,249,22,33,11,80,159,8,30,38,37,22,172,5,28,248,22,184,14,23,217,
2,23,216,1,86,94,23,216,1,247,22,161,15,249,247,22,167,15,248,22,80,
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,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,
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,
@ -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,
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,
31,38,37,22,172,5,28,248,22,184,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,
31,38,37,22,172,5,28,248,22,185,14,23,218,2,23,217,1,86,94,23,217,
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,
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,
@ -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,
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,
38,37,22,172,5,28,248,22,184,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,
38,37,22,172,5,28,248,22,185,14,23,219,2,23,218,1,86,94,23,218,1,
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,
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,
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,
8,33,38,37,22,172,5,28,248,22,184,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,
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,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,
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,
@ -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,
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,
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,
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,
22,172,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,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,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,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,
@ -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,
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,
196,195,27,27,249,22,172,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,
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,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,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,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,
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,
@ -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,
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,
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,
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,
16,247,22,159,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,
196,2,86,94,23,193,1,12,27,250,22,160,2,80,159,41,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,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,
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,
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,
@ -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,
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,
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,
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,
@ -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,
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,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,
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,
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,
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,
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,
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,
@ -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,
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,
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,
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,
@ -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,
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,
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,
248,2,73,23,201,1,28,248,22,184,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,
22,145,15,23,199,2,248,80,159,46,8,28,39,23,205,2,28,249,22,152,9,
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,148,15,28,248,22,145,15,23,198,2,23,197,2,249,
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,
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,
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,
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,
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,
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,
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,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,
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,
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,
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,
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,
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,
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,
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,
22,19,251,22,33,11,80,159,58,49,38,9,23,197,1,27,248,22,133,16,247,
22,159,13,86,94,249,22,3,20,20,94,88,163,8,36,37,54,11,9,226,14,
22,19,251,22,33,11,80,159,58,49,38,9,23,197,1,27,248,22,134,16,247,
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,
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,
@ -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,
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,
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,
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,
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,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,
@ -937,7 +937,7 @@
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,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,
@ -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,
2,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,
66,35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,
11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,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,
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,

View File

@ -280,6 +280,8 @@ Scheme_Env *scheme_engine_instance_init()
#endif
make_kernel_env();
scheme_init_logging_once();
#if defined(MZ_PLACES_WAITPID)
scheme_places_start_child_signal_handler();
#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);
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 int init_stderr_level = SCHEME_LOG_ERROR;
SHARED_OK static Scheme_Object *init_syslog_level = NULL;
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_gc_logger);
THREAD_LOCAL_DECL(static Scheme_Logger *scheme_future_logger);
/* readonly globals */
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_var_ref_string = "#%variable-reference";
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 *error_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 *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 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)
{
if (syslog_level > -1)
init_syslog_level = syslog_level;
init_syslog_level = scheme_make_integer(syslog_level);
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;
}
}
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 {
@ -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-max-level", log_max_level, 1, 1, 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_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);
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(error_symbol);
REGISTER_SO(warning_symbol);
REGISTER_SO(info_symbol);
REGISTER_SO(debug_symbol);
none_symbol = scheme_intern_symbol("none");
fatal_symbol = scheme_intern_symbol("fatal");
error_symbol = scheme_intern_symbol("error");
warning_symbol = scheme_intern_symbol("warning");
@ -708,15 +745,29 @@ void scheme_init_error(Scheme_Env *env)
void scheme_init_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->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() {
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)
{
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)
{
if (scheme_current_thread->constant_folding) {
if (SCHEME_TRUEP(scheme_current_thread->constant_folding))
scheme_log(NULL,
if (scheme_current_thread->constant_folding != (Optimize_Info *)scheme_false)
scheme_log(scheme_optimize_info_logger(scheme_current_thread->constant_folding),
SCHEME_LOG_WARNING,
0,
"optimizer constant-fold attempt failed%s: %s",
scheme_optimize_context_to_string(scheme_current_thread->constant_folding),
"constant-fold attempt failed%s: %s",
scheme_optimize_info_context(scheme_current_thread->constant_folding),
buffer);
if (SCHEME_CHAPERONE_STRUCTP(exn)
&& scheme_is_struct_instance(exn_table[MZEXN_BREAK].type, exn)) {
@ -3238,59 +3289,67 @@ 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)
{
Scheme_Log_Reader *lr;
Scheme_Object *stack = NULL, *queue, *b, *prev;
Scheme_Logger *parent = logger;
int want_level;
int want_level, level;
while (parent) {
stack = scheme_make_raw_pair((Scheme_Object *)parent, stack);
if (parent->local_timestamp < *parent->timestamp)
parent = parent->parent;
else
parent = NULL;
parent = parent->parent;
}
want_level = 0;
while (stack) {
parent = (Scheme_Logger *)SCHEME_CAR(stack);
if (parent->local_timestamp < *parent->timestamp) {
queue = parent->readers;
prev = NULL;
while (queue) {
b = SCHEME_CAR(queue);
b = SCHEME_CAR(b);
lr = (Scheme_Log_Reader *)SCHEME_BOX_VAL(b);
if (lr) {
if (lr->want_level > want_level)
want_level = lr->want_level;
prev = queue;
} else {
if (prev)
SCHEME_CDR(prev) = SCHEME_CDR(queue);
else
parent->readers = SCHEME_CDR(queue);
}
queue = SCHEME_CDR(queue);
queue = parent->readers;
prev = NULL;
while (queue) {
b = SCHEME_CAR(queue);
b = SCHEME_CAR(b);
lr = (Scheme_Log_Reader *)SCHEME_BOX_VAL(b);
if (lr) {
level = extract_spec_level(lr->level, logger->name);
if (level > want_level)
want_level = level;
prev = queue;
} else {
if (prev)
SCHEME_CDR(prev) = SCHEME_CDR(queue);
else
parent->readers = SCHEME_CDR(queue);
}
if (parent->syslog_level > want_level)
want_level = parent->syslog_level;
if (parent->stderr_level > want_level)
want_level = parent->stderr_level;
parent->want_level = want_level;
parent->local_timestamp = *parent->timestamp;
} else {
want_level = parent->want_level;
queue = SCHEME_CDR(queue);
}
level = extract_spec_level(parent->syslog_level, logger->name);
if (level > want_level)
want_level = level;
level = extract_spec_level(parent->stderr_level, logger->name);
if (level > want_level)
want_level = level;
stack = SCHEME_CDR(stack);
}
logger->want_level = want_level;
logger->local_timestamp = *logger->timestamp;
}
#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)
update_want_level(logger);
if (logger->want_level < level)
return;
orig_logger = logger;
while (logger) {
if (logger->want_level < level)
return;
if (logger->syslog_level >= level) {
if (extract_spec_level(logger->syslog_level, orig_logger->name) >= level) {
#ifdef USE_C_SYSLOG
int pri;
switch (level) {
@ -3418,7 +3477,7 @@ void scheme_log_message(Scheme_Logger *logger, int level, char *buffer, intptr_t
}
#endif
}
if (logger->stderr_level >= level) {
if (extract_spec_level(logger->stderr_level, orig_logger->name) >= level) {
if (orig_logger->name) {
intptr_t slen;
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);
lr = (Scheme_Log_Reader *)SCHEME_BOX_VAL(b);
if (lr) {
if (lr->want_level >= level) {
if (extract_spec_level(lr->level, orig_logger->name) >= level) {
if (!msg) {
Scheme_Object *v;
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);
}
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;
int level;
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;
else if (SAME_OBJ(v, error_symbol))
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))
level = SCHEME_LOG_DEBUG;
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;
}
@ -3598,7 +3663,7 @@ log_message(int argc, Scheme_Object *argv[])
scheme_wrong_contract("log-message", "logger?", 0, argc, argv);
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];
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);
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)
update_want_level(logger);
@ -3679,13 +3744,13 @@ make_logger(int argc, Scheme_Object *argv[])
} else
parent = NULL;
return (Scheme_Object *)make_a_logger(parent,
(argc
? (SCHEME_FALSEP(argv[0]) ? NULL : argv[0])
: NULL));
return (Scheme_Object *)scheme_make_logger(parent,
(argc
? (SCHEME_FALSEP(argv[0]) ? NULL : argv[0])
: 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;
@ -3740,17 +3805,38 @@ make_log_reader(int argc, Scheme_Object *argv[])
Scheme_Logger *logger;
Scheme_Log_Reader *lr;
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))
scheme_wrong_contract("make-log-receiver", "logger?", 0, argc, argv);
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->so.type = scheme_log_reader_type;
lr->want_level = level;
lr->level = level;
sema = scheme_make_sema(0);
lr->sema = sema;
@ -4023,17 +4109,17 @@ do_raise(Scheme_Object *arg, int need_debug, int eb)
Scheme_Thread *p = scheme_current_thread;
if (p->constant_folding) {
if (SCHEME_TRUEP(p->constant_folding)) {
if (p->constant_folding != (Optimize_Info *)scheme_false) {
const char *msg;
if (need_debug) {
msg = scheme_display_to_string(((Scheme_Structure *)arg)->slots[0], NULL);
} else
msg = scheme_print_to_string(arg, NULL);
scheme_log(NULL,
scheme_log(scheme_optimize_info_logger(p->constant_folding),
SCHEME_LOG_WARNING,
0,
"warning%s: optimizer constant-fold attempt failed: %s",
scheme_optimize_context_to_string(p->constant_folding),
"warning%s: constant-fold attempt failed: %s",
scheme_optimize_info_context(p->constant_folding),
msg);
}
if (SCHEME_CHAPERONE_STRUCTP(arg)

View File

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

View File

@ -1071,13 +1071,13 @@ static void end_traversal(Fevent_Buffer *b)
}
static void log_future_event(Scheme_Future_State *fs,
const char *msg_str,
const char *extra_str,
int which,
int what,
double timestamp,
int fid,
Scheme_Object *user_data)
const char *msg_str,
const char *extra_str,
int which,
int what,
double timestamp,
int fid,
Scheme_Object *user_data)
{
Scheme_Object *data, *v;
@ -1107,7 +1107,7 @@ static void log_future_event(Scheme_Future_State *fs,
((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,
msg_str,
fid,
@ -1123,7 +1123,7 @@ static Scheme_Object *mark_future_trace_end(int argc, Scheme_Object **argv)
Scheme_Future_State *fs;
fs = scheme_future_state;
log_future_event(fs,
"future %d, process %d: %s: %s; time: %f",
"id %d, process %d: %s: %s; time: %f",
"tracing",
-1,
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)
{
log_future_event(fs,
"future ??%-, process %d: %s%s; before time: %f",
"id ??%-, process %d: %s%s; before time: %f",
"",
which,
FEVENT_MISSING,
@ -1154,7 +1154,7 @@ static void flush_future_logs(Scheme_Future_State *fs)
Fevent_Buffer *b, *min_b;
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: */
mzrt_mutex_lock(fs->future_mutex);
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);
log_future_event(fs,
"future %d, process %d: %s%s; time: %f",
"id %d, process %d: %s%s; time: %f",
"",
min_which,
min_b->a[min_b->i].what,
@ -2095,7 +2095,7 @@ Scheme_Object *touch(int argc, Scheme_Object *argv[])
Scheme_Object *targid_obj;
targid_obj = scheme_make_integer(targ_ft->id);
log_future_event(fs,
"future %d, process %d: %s: %s; time: %f",
"id %d, process %d: %s: %s; time: %f",
"touch",
-1,
FEVENT_RTCALL_TOUCH,
@ -3352,7 +3352,7 @@ static void do_invoke_rtcall(Scheme_Future_State *fs, future_t *future)
g_rtcall_count++;
#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;
Scheme_Object *userdata;
@ -3396,7 +3396,7 @@ static void do_invoke_rtcall(Scheme_Future_State *fs, future_t *future)
}
log_future_event(fs,
"future %d, process %d: %s: %s; time: %f",
"id %d, process %d: %s: %s; time: %f",
src,
-1,
(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);
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);
if (!(rec[drec].comp_flags & COMP_CAN_INLINE))
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)
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);
if (!(rec[drec].comp_flags & COMP_CAN_INLINE))
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_len, gc);
gcMARK2(i->context, gc);
gcMARK2(i->logger, gc);
return
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_len, gc);
gcFIXUP2(i->context, gc);
gcFIXUP2(i->logger, gc);
return
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;
gcMARK2(l->name, gc);
gcMARK2(l->parent, gc);
gcMARK2(l->readers, gc);
gcMARK2(l->timestamp, gc);
gcMARK2(l->syslog_level, gc);
gcMARK2(l->stderr_level, gc);
gcMARK2(l->readers, gc);
return
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;
gcFIXUP2(l->name, gc);
gcFIXUP2(l->parent, gc);
gcFIXUP2(l->readers, gc);
gcFIXUP2(l->timestamp, gc);
gcFIXUP2(l->syslog_level, gc);
gcFIXUP2(l->stderr_level, gc);
gcFIXUP2(l->readers, gc);
return
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) {
Scheme_Log_Reader *lr = (Scheme_Log_Reader *)p;
gcMARK2(lr->level, gc);
gcMARK2(lr->sema, gc);
gcMARK2(lr->head, 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) {
Scheme_Log_Reader *lr = (Scheme_Log_Reader *)p;
gcFIXUP2(lr->level, gc);
gcFIXUP2(lr->sema, gc);
gcFIXUP2(lr->head, gc);
gcFIXUP2(lr->tail, gc);

View File

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

View File

@ -73,6 +73,7 @@ struct Optimize_Info
int *transitive_use_len;
Scheme_Object *context; /* for logging */
Scheme_Logger *logger;
};
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;
if (actual != expected) {
scheme_log(NULL,
scheme_log(warn_info->logger,
SCHEME_LOG_WARNING,
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),
actual, expected);
}
@ -649,7 +650,7 @@ static Scheme_Object *try_optimize_fold(Scheme_Object *f, Scheme_Object *o, Opti
break;
}
return scheme_try_apply(f, args, info->context);
return scheme_try_apply(f, args, info);
}
return NULL;
@ -845,7 +846,7 @@ static Scheme_Object *apply_inlined(Scheme_Object *p, Scheme_Closure_Data *data,
l = cons(val, l);
}
l = cons(scheme_list_proc, l);
val = scheme_make_application(l);
val = scheme_make_application(l, info);
} else if (app)
val = app->args[i + 1];
else if (app3)
@ -1089,10 +1090,10 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a
if (le) {
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)));
scheme_log(NULL,
scheme_log(info->logger,
SCHEME_LOG_DEBUG,
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_optimize_context_to_string(info->context),
sz,
@ -1104,10 +1105,10 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a
return le;
} else {
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,
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_optimize_context_to_string(info->context),
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),
sz, is_leaf, threshold,
info->inline_fuel, info->use_psize));
scheme_log(NULL,
scheme_log(info->logger,
SCHEME_LOG_DEBUG,
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_optimize_context_to_string(info->context),
sz,
@ -1161,7 +1162,7 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a
const char *pname, *context;
pname = scheme_get_proc_name(bad_app, &len, 0);
context = scheme_optimize_context_to_string(info->context);
scheme_log(NULL,
scheme_log(info->logger,
SCHEME_LOG_WARNING,
0,
"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 "";
}
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)
{
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)) {
switch(SCHEME_TYPE(last_rand)) {
@ -1658,7 +1669,7 @@ static Scheme_Object *direct_apply(Scheme_Object *expr, Scheme_Object *rator, Sc
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;
/* 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);
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: */
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);
/* 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;
/* 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);
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;
/* 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);
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];
einfo = scheme_optimize_info_create(info->cp);
einfo = scheme_optimize_info_create(info->cp, 0);
if (info->inline_fuel < 0)
einfo->inline_fuel = -1;
einfo->logger = info->logger;
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];
while (!SCHEME_NULLP(l)) {
einfo = scheme_optimize_info_create(info->cp);
einfo = scheme_optimize_info_create(info->cp, 0);
if (info->inline_fuel < 0)
einfo->inline_fuel = -1;
einfo->logger = info->logger;
a = SCHEME_CAR(l);
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 */
/*========================================================================*/
Optimize_Info *scheme_optimize_info_create(Comp_Prefix *cp)
Optimize_Info *scheme_optimize_info_create(Comp_Prefix *cp, int get_logger)
{
Optimize_Info *info;
@ -5483,6 +5496,13 @@ Optimize_Info *scheme_optimize_info_create(Comp_Prefix *cp)
info->inline_fuel = 32;
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;
}
@ -6026,7 +6046,7 @@ static Optimize_Info *optimize_info_add_frame(Optimize_Info *info, int orig, int
{
Optimize_Info *naya;
naya = scheme_optimize_info_create(info->cp);
naya = scheme_optimize_info_create(info->cp, 0);
naya->flags = (short)flags;
naya->next = info;
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->vclock = info->vclock;
naya->use_psize = info->use_psize;
naya->logger = info->logger;
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);
}
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[])
{
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
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_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_variable_references_constants(void);
void scheme_init_logger(void);
void scheme_init_logging_once(void);
void scheme_init_file_places(void);
void scheme_init_foreign_places(void);
void scheme_init_place_local_symbol_table(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 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);
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_set_context(Optimize_Info *, Scheme_Object *ctx);
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);
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);
Scheme_Object *scheme_make_application(Scheme_Object *v);
Scheme_Object *scheme_try_apply(Scheme_Object *f, Scheme_Object *args, Scheme_Object *context);
Scheme_Object *scheme_make_application(Scheme_Object *v, Optimize_Info *info);
Scheme_Object *scheme_try_apply(Scheme_Object *f, Scheme_Object *args, Optimize_Info *info);
Scheme_Object *scheme_get_stop_expander(void);
@ -3414,17 +3420,20 @@ struct Scheme_Logger {
Scheme_Logger *parent;
int want_level;
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>) */
};
typedef struct Scheme_Log_Reader {
Scheme_Object so;
int want_level;
Scheme_Object *level; /* (list* <level-int> <name-sym> ... <level-int>) */
Scheme_Object *sema;
Scheme_Object *head, *tail;
} Scheme_Log_Reader;
Scheme_Logger *scheme_make_logger(Scheme_Logger *parent, Scheme_Object *name);
char *scheme_optimize_context_to_string(Scheme_Object *context);
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);
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
# define MZ_UCS4_NAME "UCS-4BE"
#else

View File

@ -13,12 +13,12 @@
consistently.)
*/
#define MZSCHEME_VERSION "5.3.0.22"
#define MZSCHEME_VERSION "5.3.0.23"
#define MZSCHEME_VERSION_X 5
#define MZSCHEME_VERSION_Y 3
#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_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);
}
static Scheme_Object *
symbol_to_string_prim (int argc, Scheme_Object *argv[])
Scheme_Object *scheme_symbol_to_string(Scheme_Object *sym)
{
Scheme_Object *sym, *str;
Scheme_Object *str;
GC_CAN_IGNORE unsigned char *s;
GC_CAN_IGNORE mzchar *s2;
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);
len = SCHEME_SYM_LEN(sym);
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 *
keyword_p_prim (int argc, Scheme_Object *argv[])
{

View File

@ -8387,13 +8387,13 @@ static void done_with_GC()
#ifndef MZ_PRECISE_GC
{
Scheme_Logger *logger = scheme_get_main_logger();
Scheme_Logger *logger = scheme_get_gc_logger();
if (logger) {
char buf[64];
intptr_t buflen;
sprintf(buf,
"GC in %" PRIdPTR " msec",
"in %" PRIdPTR " msec",
end_this_gc_time - start_this_gc_time);
buflen = strlen(buf);
@ -8444,7 +8444,7 @@ static void inform_GC(int master_gc, int major_gc,
intptr_t post_child_places_used)
{
Scheme_Logger *logger;
logger = scheme_get_main_logger();
logger = scheme_get_gc_logger();
if (logger && scheme_log_level_p(logger, SCHEME_LOG_DEBUG)) {
/* 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
@ -8486,7 +8486,7 @@ static void inform_GC(int master_gc, int major_gc,
delta = pre_used - post_used;
admin_delta = (pre_admin - post_admin) - delta;
sprintf(buf,
"GC[" PLACE_ID_FORMAT "%s] @ %sK(+%sK)[+%sK];"
"" PLACE_ID_FORMAT "%s @ %sK(+%sK)[+%sK];"
" free %sK(%s%sK) %" PRIdPTR "ms @ %" PRIdPTR,
#ifdef MZ_USE_PLACES
scheme_current_place_id,