better compiler handling of unused local bindings where the RHS either doesn't obviously produce a single value or is discovered to be unused late in bytecode compilation; initial Scribble support for printing qq-style results

svn: r18737
This commit is contained in:
Matthew Flatt 2010-04-06 15:52:36 +00:00
parent 90acb35315
commit c5ac9f23ec
21 changed files with 671 additions and 525 deletions

View File

@ -207,9 +207,9 @@
,@(map (lambda (lam) ,@(map (lambda (lam)
(decompile-lam lam globs stack closed)) (decompile-lam lam globs stack closed))
lams))] lams))]
[(struct let-one (rhs body flonum?)) [(struct let-one (rhs body flonum? unused?))
(let ([id (or (extract-id rhs) (let ([id (or (extract-id rhs)
(gensym 'local))]) (gensym (if unused? 'unused 'local)))])
`(let ([,id ,(let ([v (decompile-expr rhs globs (cons id stack) closed)]) `(let ([,id ,(let ([v (decompile-expr rhs globs (cons id stack) closed)])
(if flonum? (if flonum?
(list '#%as-flonum v) (list '#%as-flonum v)

View File

@ -160,7 +160,7 @@
[(struct case-lam (name lams)) [(struct case-lam (name lams))
(traverse-data name visit) (traverse-data name visit)
(for-each (lambda (lam) (traverse-lam lam visit)) lams)] (for-each (lambda (lam) (traverse-lam lam visit)) lams)]
[(struct let-one (rhs body flonum?)) [(struct let-one (rhs body flonum? unused?))
(traverse-expr rhs visit) (traverse-expr rhs visit)
(traverse-expr body visit)] (traverse-expr body visit)]
[(struct let-void (count boxes? body)) [(struct let-void (count boxes? body))
@ -297,7 +297,8 @@
CPT_PATH CPT_PATH
CPT_CLOSURE CPT_CLOSURE
CPT_DELAY_REF CPT_DELAY_REF
CPT_PREFAB) CPT_PREFAB
CPT_LET_ONE_UNUSED)
(define-enum (define-enum
0 0
@ -314,7 +315,7 @@
APPVALS_EXPD APPVALS_EXPD
SPLICE_EXPD) SPLICE_EXPD)
(define CPT_SMALL_NUMBER_START 35) (define CPT_SMALL_NUMBER_START 36)
(define CPT_SMALL_NUMBER_END 60) (define CPT_SMALL_NUMBER_END 60)
(define CPT_SMALL_SYMBOL_START 60) (define CPT_SMALL_SYMBOL_START 60)
@ -715,8 +716,12 @@
(cons (or name null) (cons (or name null)
lams) lams)
out)] out)]
[(struct let-one (rhs body flonum?)) [(struct let-one (rhs body flonum? unused?))
(out-byte (if flonum? CPT_LET_ONE_FLONUM CPT_LET_ONE) out) (out-byte (cond
[flonum? CPT_LET_ONE_FLONUM]
[unused? CPT_LET_ONE_UNUSED]
[else CPT_LET_ONE])
out)
(out-expr (protect-quote rhs) out) (out-expr (protect-quote rhs) out)
(out-expr (protect-quote body) out)] (out-expr (protect-quote body) out)]
[(struct let-void (count boxes? body)) [(struct let-void (count boxes? body))

View File

@ -412,7 +412,8 @@
[32 closure] [32 closure]
[33 delayed] [33 delayed]
[34 prefab] [34 prefab]
[35 60 small-number] [35 let-one-unused]
[36 60 small-number]
[60 80 small-symbol] [60 80 small-symbol]
[80 92 small-marshalled] [80 92 small-marshalled]
[92 ,(+ 92 small-list-max) small-proper-list] [92 ,(+ 92 small-list-max) small-proper-list]
@ -766,9 +767,10 @@
(if ppr null (read-compact cp))) (if ppr null (read-compact cp)))
(read-compact-list l ppr cp)) (read-compact-list l ppr cp))
(loop l ppr)))] (loop l ppr)))]
[(let-one let-one-flonum) [(let-one let-one-flonum let-one-unused)
(make-let-one (read-compact cp) (read-compact cp) (make-let-one (read-compact cp) (read-compact cp)
(eq? cpt-tag 'let-one-flonum))] (eq? cpt-tag 'let-one-flonum)
(eq? cpt-tag 'let-one-unused))]
[(branch) [(branch)
(make-branch (read-compact cp) (read-compact cp) (read-compact cp))] (make-branch (read-compact cp) (read-compact cp) (read-compact cp))]
[(module-index) (module-path-index-join (read-compact cp) (read-compact cp))] [(module-index) (module-path-index-join (read-compact cp) (read-compact cp))]

View File

@ -118,7 +118,7 @@
(define-form-struct (closure expr) ([code lam?] [gen-id symbol?])) ; a static closure (nothing to close over) (define-form-struct (closure expr) ([code lam?] [gen-id symbol?])) ; a static closure (nothing to close over)
(define-form-struct (case-lam expr) ([name (or/c symbol? vector? empty?)] [clauses (listof (or/c lam? indirect?))])) ; each clause is a lam (added indirect) (define-form-struct (case-lam expr) ([name (or/c symbol? vector? empty?)] [clauses (listof (or/c lam? indirect?))])) ; each clause is a lam (added indirect)
(define-form-struct (let-one expr) ([rhs (or/c expr? seq? indirect? any/c)] [body (or/c expr? seq? indirect? any/c)] [flonum? boolean?])) ; pushes one value onto stack (define-form-struct (let-one expr) ([rhs (or/c expr? seq? indirect? any/c)] [body (or/c expr? seq? indirect? any/c)] [flonum? boolean?] [unused? boolean?])) ; pushes one value onto stack
(define-form-struct (let-void expr) ([count exact-nonnegative-integer?] [boxes? boolean?] [body (or/c expr? seq? indirect? any/c)])) ; create new stack slots (define-form-struct (let-void expr) ([count exact-nonnegative-integer?] [boxes? boolean?] [body (or/c expr? seq? indirect? any/c)])) ; create new stack slots
(define-form-struct (install-value expr) ([count exact-nonnegative-integer?] (define-form-struct (install-value expr) ([count exact-nonnegative-integer?]
[pos exact-nonnegative-integer?] [pos exact-nonnegative-integer?]

View File

@ -106,6 +106,6 @@
(printf "\nA command can be specified by an unambigous prefix.") (printf "\nA command can be specified by an unambigous prefix.")
(unless show-all? (unless show-all?
(printf "\nSee `rico --help' for a complete list of commands.")) (printf "\nSee `rico --help' for a complete list of commands."))
(printf "\nSee `rico <command> --help' for help on a command.")) (printf "\nSee `rico <command> --help' for help on a command.")
(newline) (newline)
(exit 1)) (exit (if show-all? 0 1))))

View File

@ -160,7 +160,23 @@
e)))) e))))
(make-element style content))) (make-element style content)))
(define (typeset-atom c out color? quote-depth) (define (to-quoted qs qq? quote-depth out color? inc!)
(if (and qq? (zero? quote-depth))
(begin
(out qs (and color? value-color))
(inc!)
(add1 quote-depth))
quote-depth))
(define (to-unquoted qq? quote-depth out color? inc!)
(if (or (not qq?) (zero? quote-depth))
quote-depth
(begin
(out "," (and color? meta-color))
(inc!)
(to-unquoted qq? (sub1 quote-depth) out color? inc!))))
(define (typeset-atom c out color? quote-depth qq?)
(if (and (var-id? (syntax-e c)) (if (and (var-id? (syntax-e c))
(zero? quote-depth)) (zero? quote-depth))
(out (format "~s" (let ([v (var-id-sym (syntax-e c))]) (out (format "~s" (let ([v (var-id-sym (syntax-e c))])
@ -185,48 +201,56 @@
is-var?))) is-var?)))
(values (substring s 1) #t #f) (values (substring s 1) #t #f)
(values s #f #f))))]) (values s #f #f))))])
(if (or (element? (syntax-e c)) (let ([quote-depth (if (and qq? (identifier? c))
(delayed-element? (syntax-e c)) (let ([quote-depth
(part-relative-element? (syntax-e c))) (if (and (quote-depth . < . 2)
(out (syntax-e c) #f) (memq (syntax-e c) '(unquote unquote-splicing)))
(out (if (and (identifier? c) (to-unquoted qq? quote-depth out color? void)
color? quote-depth)])
(quote-depth . <= . 0) (to-quoted "'" qq? quote-depth out color? void))
(not (or it? is-var?))) quote-depth)])
(if (pair? (identifier-label-binding c)) (if (or (element? (syntax-e c))
(make-id-element c s) (delayed-element? (syntax-e c))
s) (part-relative-element? (syntax-e c)))
(literalize-spaces s)) (out (syntax-e c) #f)
(cond (out (if (and (identifier? c)
[(positive? quote-depth) value-color] color?
[(let ([v (syntax-e c)]) (quote-depth . <= . 0)
(or (number? v) (not (or it? is-var?)))
(string? v) (if (pair? (identifier-label-binding c))
(bytes? v) (make-id-element c s)
(char? v) s)
(regexp? v) (literalize-spaces s))
(byte-regexp? v)
(boolean? v)))
value-color]
[(identifier? c)
(cond (cond
[is-var? [(positive? quote-depth) value-color]
variable-color] [(let ([v (syntax-e c)])
[(and (identifier? c) (or (number? v)
(memq (syntax-e c) (current-keyword-list))) (string? v)
keyword-color] (bytes? v)
[(and (identifier? c) (char? v)
(memq (syntax-e c) (current-meta-list))) (regexp? v)
meta-color] (byte-regexp? v)
[it? variable-color] (boolean? v)))
[else symbol-color])] value-color]
[else paren-color]) [(identifier? c)
(string-length s)))))) (cond
[is-var?
variable-color]
[(and (identifier? c)
(memq (syntax-e c) (current-keyword-list)))
keyword-color]
[(and (identifier? c)
(memq (syntax-e c) (current-meta-list)))
meta-color]
[it? variable-color]
[else symbol-color])]
[else paren-color])
(string-length s)))))))
(define omitable (make-style #f '(omitable))) (define omitable (make-style #f '(omitable)))
(define (gen-typeset c multi-line? prefix1 prefix suffix color?) (define (gen-typeset c multi-line? prefix1 prefix suffix color? qq?)
(let* ([c (syntax-ize c 0)] (let* ([c (syntax-ize c 0 #:qq? qq?)]
[content null] [content null]
[docs null] [docs null]
[first (syntax-case c (code:line) [first (syntax-case c (code:line)
@ -234,6 +258,7 @@
[else c])] [else c])]
[init-col (or (syntax-column first) 0)] [init-col (or (syntax-column first) 0)]
[src-col init-col] [src-col init-col]
[inc-src-col (lambda () (set! src-col (add1 src-col)))]
[dest-col 0] [dest-col 0]
[highlight? #f] [highlight? #f]
[col-map (make-hash)] [col-map (make-hash)]
@ -314,7 +339,7 @@
(set! src-col c) (set! src-col c)
(hash-set! next-col-map src-col dest-col)))] (hash-set! next-col-map src-col dest-col)))]
[(c init-line!) (advance c init-line! 0)])) [(c init-line!) (advance c init-line! 0)]))
(define (convert-infix c quote-depth) (define (convert-infix c quote-depth qq?)
(let ([l (syntax->list c)]) (let ([l (syntax->list c)])
(and l (and l
((length l) . >= . 3) ((length l) . >= . 3)
@ -340,7 +365,7 @@
(if val? value-color #f) (if val? value-color #f)
(list (list
(make-element/cache (if val? value-color paren-color) '". ") (make-element/cache (if val? value-color paren-color) '". ")
(typeset a #f "" "" "" (not val?)) (typeset a #f "" "" "" (not val?) qq?)
(make-element/cache (if val? value-color paren-color) '" .")) (make-element/cache (if val? value-color paren-color) '" ."))
(+ (syntax-span a) 4))) (+ (syntax-span a) 4)))
(list (syntax-source a) (list (syntax-source a)
@ -358,7 +383,7 @@
(cond (cond
[(eq? s 'rsquo) "'"] [(eq? s 'rsquo) "'"]
[else s])) [else s]))
(define (loop init-line! quote-depth) (define (loop init-line! quote-depth qq?)
(lambda (c) (lambda (c)
(cond (cond
[(eq? 'code:blank (syntax-e c)) [(eq? 'code:blank (syntax-e c))
@ -394,12 +419,13 @@
(set! src-col s-col) (set! src-col s-col)
(set! dest-col 0) (set! dest-col 0)
(out "; " comment-color)) (out "; " comment-color))
0) 0
qq?)
l))] l))]
[(and (pair? (syntax-e c)) [(and (pair? (syntax-e c))
(eq? (syntax-e (car (syntax-e c))) 'code:line)) (eq? (syntax-e (car (syntax-e c))) 'code:line))
(let ([l (cdr (syntax->list c))]) (let ([l (cdr (syntax->list c))])
(for-each (loop init-line! quote-depth) (for-each (loop init-line! quote-depth qq?)
l))] l))]
[(and (pair? (syntax-e c)) [(and (pair? (syntax-e c))
(eq? (syntax-e (car (syntax-e c))) 'code:hilite)) (eq? (syntax-e (car (syntax-e c))) 'code:hilite))
@ -411,59 +437,67 @@
(set! src-col (syntax-column (cadr l))) (set! src-col (syntax-column (cadr l)))
(hash-set! next-col-map src-col dest-col) (hash-set! next-col-map src-col dest-col)
(set! highlight? #t) (set! highlight? #t)
((loop init-line! quote-depth) (cadr l)) ((loop init-line! quote-depth qq?) (cadr l))
(set! highlight? h?) (set! highlight? h?)
(set! src-col (add1 src-col)))] (set! src-col (add1 src-col)))]
[(and (pair? (syntax-e c)) [(and (pair? (syntax-e c))
(eq? (syntax-e (car (syntax-e c))) 'code:quote)) (eq? (syntax-e (car (syntax-e c))) 'code:quote))
(advance c init-line!) (advance c init-line!)
(out "(" (if (positive? quote-depth) value-color paren-color)) (let ([quote-depth (to-quoted "`" qq? quote-depth out color? inc-src-col)])
(set! src-col (+ src-col 1)) (out "(" (if (positive? quote-depth) value-color paren-color))
(hash-set! next-col-map src-col dest-col) (set! src-col (+ src-col 1))
((loop init-line! quote-depth) (hash-set! next-col-map src-col dest-col)
(datum->syntax #'here 'quote (car (syntax-e c)))) ((loop init-line! quote-depth qq?)
(for-each (loop init-line! (add1 quote-depth)) (datum->syntax #'here 'quote (car (syntax-e c))))
(cdr (syntax->list c))) (for-each (loop init-line! (add1 quote-depth) qq?)
(out ")" (if (positive? quote-depth) value-color paren-color)) (cdr (syntax->list c)))
(set! src-col (+ src-col 1)) (out ")" (if (positive? quote-depth) value-color paren-color))
#; (set! src-col (+ src-col 1))
(hash-set! next-col-map src-col dest-col)] #;
(hash-set! next-col-map src-col dest-col))]
[(and (pair? (syntax-e c)) [(and (pair? (syntax-e c))
(memq (syntax-e (car (syntax-e c))) (memq (syntax-e (car (syntax-e c)))
'(quote quasiquote unquote unquote-splicing '(quote quasiquote unquote unquote-splicing
quasisyntax syntax unsyntax unsyntax-splicing)) quasisyntax syntax unsyntax unsyntax-splicing))
(let ([v (syntax->list c)]) (let ([v (syntax->list c)])
(and v (= 2 (length v))))) (and v (= 2 (length v))))
(or (not qq?)
(quote-depth . > . 1)
(not (memq (syntax-e (car (syntax-e c)))
'(unquote unquote-splicing)))))
(advance c init-line!) (advance c init-line!)
(let-values ([(str quote-delta) (let ([quote-depth (to-quoted "`" qq? quote-depth out color? inc-src-col)])
(case (syntax-e (car (syntax-e c))) (let-values ([(str quote-delta)
[(quote) (values "'" +inf.0)] (case (syntax-e (car (syntax-e c)))
[(unquote) (values "," -1)] [(quote) (values "'" +inf.0)]
[(unquote-splicing) (values ",@" -1)] [(unquote) (values "," -1)]
[(quasiquote) (values "`" +1)] [(unquote-splicing) (values ",@" -1)]
[(syntax) (values "#'" 0)] [(quasiquote) (values "`" +1)]
[(quasisyntax) (values "#`" 0)] [(syntax) (values "#'" 0)]
[(unsyntax) (values "#," 0)] [(quasisyntax) (values "#`" 0)]
[(unsyntax-splicing) (values "#,@" 0)])]) [(unsyntax) (values "#," 0)]
(out str (if (positive? (+ quote-depth quote-delta)) [(unsyntax-splicing) (values "#,@" 0)])])
value-color (out str (if (positive? (+ quote-depth quote-delta))
reader-color)) value-color
(let ([i (cadr (syntax->list c))]) reader-color))
(set! src-col (or (syntax-column i) src-col)) (let ([i (cadr (syntax->list c))])
(hash-set! next-col-map src-col dest-col) (set! src-col (or (syntax-column i) src-col))
((loop init-line! (+ quote-depth quote-delta)) i)))] (hash-set! next-col-map src-col dest-col)
((loop init-line! (+ quote-depth quote-delta) qq?) i))))]
[(and (pair? (syntax-e c)) [(and (pair? (syntax-e c))
(convert-infix c quote-depth)) (convert-infix c quote-depth qq?))
=> (lambda (converted) => (lambda (converted)
((loop init-line! quote-depth) converted))] ((loop init-line! quote-depth qq?) converted))]
[(or (pair? (syntax-e c)) [(or (pair? (syntax-e c))
(null? (syntax-e c)) (null? (syntax-e c))
(vector? (syntax-e c)) (vector? (syntax-e c))
(and (struct? (syntax-e c)) (and (struct? (syntax-e c))
(prefab-struct-key (syntax-e c)))) (prefab-struct-key (syntax-e c)))
(struct-proxy? (syntax-e c)))
(let* ([sh (or (syntax-property c 'paren-shape) (let* ([sh (or (syntax-property c 'paren-shape)
#\()] #\()]
[quote-depth (if (and (zero? quote-depth) [quote-depth (if (and (not qq?)
(zero? quote-depth)
(or (vector? (syntax-e c)) (or (vector? (syntax-e c))
(struct? (syntax-e c)))) (struct? (syntax-e c))))
+inf.0 +inf.0
@ -474,87 +508,101 @@
opt-color opt-color
paren-color))]) paren-color))])
(advance c init-line!) (advance c init-line!)
(when (vector? (syntax-e c)) (let ([quote-depth (if (struct-proxy? (syntax-e c))
(let ([vec (syntax-e c)]) (to-unquoted qq? quote-depth out color? inc-src-col)
(out "#" #;(format "#~a" (vector-length vec)) p-color) (to-quoted "`" qq? quote-depth out color? inc-src-col))])
(if (zero? (vector-length vec)) (when (vector? (syntax-e c))
(set! src-col (+ src-col (- (syntax-span c) 2))) (let ([vec (syntax-e c)])
(set! src-col (+ src-col (- (syntax-column (vector-ref vec 0)) (out "#" #;(format "#~a" (vector-length vec)) p-color)
(syntax-column c) (if (zero? (vector-length vec))
1)))))) (set! src-col (+ src-col (- (syntax-span c) 2)))
(when (struct? (syntax-e c)) (set! src-col (+ src-col (- (syntax-column (vector-ref vec 0))
(out "#s" p-color) (syntax-column c)
(set! src-col (+ src-col 2))) 1))))))
(out (case sh (when (struct? (syntax-e c))
[(#\[ #\?) "["] (out "#s" p-color)
[(#\{) "{"] (set! src-col (+ src-col 2)))
[else "("]) (out (case sh
p-color) [(#\[ #\?) "["]
(set! src-col (+ src-col 1)) [(#\{) "{"]
(hash-set! next-col-map src-col dest-col) [else "("])
(let lloop ([l (cond p-color)
[(vector? (syntax-e c)) (set! src-col (+ src-col 1))
(vector->short-list (syntax-e c) syntax-e)]
[(struct? (syntax-e c))
(let ([l (vector->list (struct->vector (syntax-e c)))])
;; Need to build key datum, syntax-ize it internally, and
;; set the overall width to fit right:
(cons (let ([key (syntax-ize (prefab-struct-key (syntax-e c))
(+ 3 (or (syntax-column c) 0))
(or (syntax-line c) 1))]
[end (if (pair? (cdr l))
(and (equal? (syntax-line c) (syntax-line (cadr l)))
(syntax-column (cadr l)))
(and (syntax-column c)
(+ (syntax-column c) (syntax-span c))))])
(if end
(datum->syntax #f
(syntax-e key)
(vector #f (syntax-line key)
(syntax-column key)
(syntax-position key)
(- end 1 (syntax-column key))))
end))
(cdr l)))]
[else c])])
(cond
[(and (syntax? l)
(pair? (syntax-e l))
(not (and (memq (syntax-e (car (syntax-e l)))
'(quote unquote syntax unsyntax quasiquote quasiunsyntax))
(let ([v (syntax->list l)])
(and v (= 2 (length v)))))))
(lloop (syntax-e l))]
[(or (null? l)
(and (syntax? l)
(null? (syntax-e l))))
(void)]
[(pair? l)
((loop init-line! quote-depth) (car l))
(lloop (cdr l))]
[else
(advance l init-line! -2)
(out ". " (if (positive? quote-depth) value-color paren-color))
(set! src-col (+ src-col 3))
(hash-set! next-col-map src-col dest-col) (hash-set! next-col-map src-col dest-col)
((loop init-line! quote-depth) l)])) (let lloop ([l (cond
(out (case sh [(vector? (syntax-e c))
[(#\[ #\?) "]"] (vector->short-list (syntax-e c) syntax-e)]
[(#\{) "}"] [(struct? (syntax-e c))
[else ")"]) (let ([l (vector->list (struct->vector (syntax-e c)))])
p-color) ;; Need to build key datum, syntax-ize it internally, and
(set! src-col (+ src-col 1)) ;; set the overall width to fit right:
#; (cons (let ([key (syntax-ize (prefab-struct-key (syntax-e c))
(hash-set! next-col-map src-col dest-col))] (+ 3 (or (syntax-column c) 0))
(or (syntax-line c) 1))]
[end (if (pair? (cdr l))
(and (equal? (syntax-line c) (syntax-line (cadr l)))
(syntax-column (cadr l)))
(and (syntax-column c)
(+ (syntax-column c) (syntax-span c))))])
(if end
(datum->syntax #f
(syntax-e key)
(vector #f (syntax-line key)
(syntax-column key)
(syntax-position key)
(- end 1 (syntax-column key))))
end))
(cdr l)))]
[(struct-proxy? (syntax-e c))
(cons
(struct-proxy-name (syntax-e c))
(struct-proxy-content (syntax-e c)))]
[else c])]
[first-qq? (and qq? (not (struct-proxy? (syntax-e c))))])
(cond
[(and (syntax? l)
(pair? (syntax-e l))
(not (and (memq (syntax-e (car (syntax-e l)))
'(quote unquote syntax unsyntax quasiquote quasiunsyntax))
(let ([v (syntax->list l)])
(and v (= 2 (length v))))
(or (not qq?)
(quote-depth . > . 1)
(not (memq (syntax-e (car (syntax-e l)))
'(unquote unquote-splicing)))))))
(lloop (syntax-e l) first-qq?)]
[(or (null? l)
(and (syntax? l)
(null? (syntax-e l))))
(void)]
[(pair? l)
((loop init-line! quote-depth first-qq?) (car l))
(lloop (cdr l) qq?)]
[else
(advance l init-line! -2)
(out ". " (if (positive? quote-depth) value-color paren-color))
(set! src-col (+ src-col 3))
(hash-set! next-col-map src-col dest-col)
((loop init-line! quote-depth first-qq?) l)]))
(out (case sh
[(#\[ #\?) "]"]
[(#\{) "}"]
[else ")"])
p-color)
(set! src-col (+ src-col 1))
#;
(hash-set! next-col-map src-col dest-col)))]
[(box? (syntax-e c)) [(box? (syntax-e c))
(advance c init-line!) (advance c init-line!)
(out "#&" value-color) (let ([quote-depth (to-quoted "`" qq? quote-depth out color? inc-src-col)])
(set! src-col (+ src-col 2)) (out "#&" value-color)
(hash-set! next-col-map src-col dest-col) (set! src-col (+ src-col 2))
((loop init-line! +inf.0) (unbox (syntax-e c)))] (hash-set! next-col-map src-col dest-col)
((loop init-line! (if qq? quote-depth +inf.0) qq?) (unbox (syntax-e c))))]
[(hash? (syntax-e c)) [(hash? (syntax-e c))
(advance c init-line!) (advance c init-line!)
(let ([equal-table? (not (hash-eq? (syntax-e c)))]) (let ([equal-table? (not (hash-eq? (syntax-e c)))]
[quote-depth (to-quoted "`" qq? quote-depth out color? inc-src-col)])
(out (if equal-table? (out (if equal-table?
"#hash" "#hash"
"#hasheq") "#hasheq")
@ -563,7 +611,7 @@
[orig-col src-col]) [orig-col src-col])
(set! src-col (+ src-col delta)) (set! src-col (+ src-col delta))
(hash-set! next-col-map src-col dest-col) (hash-set! next-col-map src-col dest-col)
((loop init-line! +inf.0) ((loop init-line! (if qq? quote-depth +inf.0) qq?)
(syntax-ize (hash-map (syntax-e c) cons) (syntax-ize (hash-map (syntax-e c) cons)
(+ (syntax-column c) delta))) (+ (syntax-column c) delta)))
(set! src-col (+ orig-col (syntax-span c)))))] (set! src-col (+ orig-col (syntax-span c)))))]
@ -582,17 +630,17 @@
value-color value-color
paren-color)) paren-color))
(set! src-col (+ src-col 3)) (set! src-col (+ src-col 3))
((loop init-line! quote-depth) (graph-defn-r (syntax-e c))))] ((loop init-line! quote-depth qq?) (graph-defn-r (syntax-e c))))]
[else [else
(advance c init-line!) (advance c init-line!)
(typeset-atom c out color? quote-depth) (typeset-atom c out color? quote-depth qq?)
(set! src-col (+ src-col (or (syntax-span c) 1))) (set! src-col (+ src-col (or (syntax-span c) 1)))
#; #;
(hash-set! next-col-map src-col dest-col)]))) (hash-set! next-col-map src-col dest-col)])))
(out prefix1 #f) (out prefix1 #f)
(set! dest-col 0) (set! dest-col 0)
(hash-set! next-col-map init-col dest-col) (hash-set! next-col-map init-col dest-col)
((loop (lambda () (set! src-col init-col) (set! dest-col 0)) 0) c) ((loop (lambda () (set! src-col init-col) (set! dest-col 0)) 0 qq?) c)
(if (list? suffix) (if (list? suffix)
(map (lambda (sfx) (map (lambda (sfx)
(finish-line!) (finish-line!)
@ -607,8 +655,8 @@
(make-table block-color (map list (reverse docs)))) (make-table block-color (map list (reverse docs))))
(make-sized-element #f (reverse content) dest-col)))) (make-sized-element #f (reverse content) dest-col))))
(define (typeset c multi-line? prefix1 prefix suffix color?) (define (typeset c multi-line? prefix1 prefix suffix color? qq?)
(let* ([c (syntax-ize c 0)] (let* ([c (syntax-ize c 0 #:qq? qq?)]
[s (syntax-e c)]) [s (syntax-e c)])
(if (or multi-line? (if (or multi-line?
(eq? 'code:blank s) (eq? 'code:blank s)
@ -620,7 +668,7 @@
(hash? s) (hash? s)
(graph-defn? s) (graph-defn? s)
(graph-reference? s)) (graph-reference? s))
(gen-typeset c multi-line? prefix1 prefix suffix color?) (gen-typeset c multi-line? prefix1 prefix suffix color? qq?)
(typeset-atom c (typeset-atom c
(letrec ([mk (letrec ([mk
(case-lambda (case-lambda
@ -632,19 +680,19 @@
(make-element/cache (and color? color) elem) (make-element/cache (and color? color) elem)
(make-sized-element (and color? color) elem len))])]) (make-sized-element (and color? color) elem len))])])
mk) mk)
color? 0)))) color? 0 qq?))))
(define (to-element c) (define (to-element c #:qq? [qq? #f])
(typeset c #f "" "" "" #t)) (typeset c #f "" "" "" #t qq?))
(define (to-element/no-color c) (define (to-element/no-color c #:qq? [qq? #f])
(typeset c #f "" "" "" #f)) (typeset c #f "" "" "" #f qq?))
(define (to-paragraph c) (define (to-paragraph c #:qq? [qq? #f])
(typeset c #t "" "" "" #t)) (typeset c #t "" "" "" #t qq?))
(define ((to-paragraph/prefix pfx1 pfx sfx) c) (define ((to-paragraph/prefix pfx1 pfx sfx) c #:qq? [qq? #f])
(typeset c #t pfx1 pfx sfx #t)) (typeset c #t pfx1 pfx sfx #t qq?))
(begin-for-syntax (begin-for-syntax
(define-struct variable-id (sym) (define-struct variable-id (sym)
@ -760,12 +808,13 @@
(define-struct just-context (val ctx)) (define-struct just-context (val ctx))
(define-struct alternate-display (id string)) (define-struct alternate-display (id string))
(define-struct literal-syntax (stx)) (define-struct literal-syntax (stx))
(define-struct struct-proxy (name content))
(define-struct graph-reference (bx)) (define-struct graph-reference (bx))
(define-struct graph-defn (r bx)) (define-struct graph-defn (r bx))
(define (syntax-ize v col [line 1]) (define (syntax-ize v col [line 1] #:qq? [qq? #f])
(do-syntax-ize v col line (box #hasheq()) #f)) (do-syntax-ize v col line (box #hasheq()) #f (and qq? 0)))
(define (graph-count ht graph?) (define (graph-count ht graph?)
(and graph? (and graph?
@ -773,23 +822,23 @@
(set-box! ht (hash-set (unbox ht) '#%graph-count (add1 n))) (set-box! ht (hash-set (unbox ht) '#%graph-count (add1 n)))
n))) n)))
(define (do-syntax-ize v col line ht graph?) (define (do-syntax-ize v col line ht graph? qq)
(cond (cond
[((syntax-ize-hook) v col) [((syntax-ize-hook) v col)
=> (lambda (r) r)] => (lambda (r) r)]
[(shaped-parens? v) [(shaped-parens? v)
(syntax-property (do-syntax-ize (shaped-parens-val v) col line ht #f) (syntax-property (do-syntax-ize (shaped-parens-val v) col line ht #f qq)
'paren-shape 'paren-shape
(shaped-parens-shape v))] (shaped-parens-shape v))]
[(just-context? v) [(just-context? v)
(let ([s (do-syntax-ize (just-context-val v) col line ht #f)]) (let ([s (do-syntax-ize (just-context-val v) col line ht #f qq)])
(datum->syntax (just-context-ctx v) (datum->syntax (just-context-ctx v)
(syntax-e s) (syntax-e s)
s s
s s
(just-context-ctx v)))] (just-context-ctx v)))]
[(alternate-display? v) [(alternate-display? v)
(let ([s (do-syntax-ize (alternate-display-id v) col line ht #f)]) (let ([s (do-syntax-ize (alternate-display-id v) col line ht #f qq)])
(syntax-property s (syntax-property s
'display-string 'display-string
(alternate-display-string v)))] (alternate-display-string v)))]
@ -802,23 +851,38 @@
(vector #f line col (+ 1 col) 1)))] (vector #f line col (+ 1 col) 1)))]
[(and (list? v) [(and (list? v)
(pair? v) (pair? v)
(memq (let ([s (car v)]) (let ([s (let ([s (car v)])
(if (just-context? s) (if (just-context? s)
(just-context-val s) (just-context-val s)
s)) s))])
'(quote unquote unquote-splicing))) (and
(let ([c (do-syntax-ize (cadr v) (+ col 1) line ht #f)]) (or (memq s '(quaisquote quote))
(datum->syntax #f (and (memq s '(unquote unquote-splicing))
(list (do-syntax-ize (car v) col line ht #f) (or (not qq)
c) (qq . > . 2))))
(vector #f line col (+ 1 col) s)))
(+ 1 (syntax-span c)))))] => (lambda (s)
(let ([c (do-syntax-ize (cadr v) (+ col 1) line ht #f qq)])
(datum->syntax #f
(list (do-syntax-ize (car v) col line ht #f
(and qq
(case s
[(quaisquote) (add1 qq)]
[(unquote unquote-splicing) (sub1 qq)]
[else qq])))
c)
(vector #f line col (+ 1 col)
(+ 1 (syntax-span c))))))]
[(or (list? v) [(or (list? v)
(vector? v) (vector? v)
(and (struct? v) (and (struct? v)
(prefab-struct-key v))) (or (and qq
;; Watch out for partially transparent subtypes of `element':
(not (element? v)))
(prefab-struct-key v))))
(let ([orig-ht (unbox ht)] (let ([orig-ht (unbox ht)]
[graph-box (box (graph-count ht graph?))]) [graph-box (box (graph-count ht graph?))]
[qq (and qq (max 1 qq))])
(set-box! ht (hash-set (unbox ht) v graph-box)) (set-box! ht (hash-set (unbox ht) v graph-box))
(let* ([graph-sz (if graph? (let* ([graph-sz (if graph?
(+ 2 (string-length (format "~a" (unbox graph-box)))) (+ 2 (string-length (format "~a" (unbox graph-box))))
@ -826,26 +890,35 @@
[vec-sz (cond [vec-sz (cond
[(vector? v) [(vector? v)
(+ 1 #;(string-length (format "~a" (vector-length v))))] (+ 1 #;(string-length (format "~a" (vector-length v))))]
[(struct? v) 2] [(struct? v)
(if (prefab-struct-key v)
2
0)]
[else 0])] [else 0])]
[r (let ([l (let loop ([col (+ col 1 vec-sz graph-sz)] [r (let ([l (let loop ([col (+ col 1 vec-sz graph-sz)]
[v (cond [v (cond
[(vector? v) [(vector? v)
(vector->short-list v values)] (vector->short-list v values)]
[(struct? v) [(struct? v)
(cons (prefab-struct-key v) (cons (let ([pf (prefab-struct-key v)])
(if pf
(prefab-struct-key v)
(object-name v)))
(cdr (vector->list (struct->vector v))))] (cdr (vector->list (struct->vector v))))]
[else v])]) [else v])])
(if (null? v) (if (null? v)
null null
(let ([i (do-syntax-ize (car v) col line ht #f)]) (let ([i (do-syntax-ize (car v) col line ht #f qq)])
(cons i (cons i
(loop (+ col 1 (syntax-span i)) (cdr v))))))]) (loop (+ col 1 (syntax-span i)) (cdr v))))))])
(datum->syntax #f (datum->syntax #f
(cond (cond
[(vector? v) (short-list->vector v l)] [(vector? v) (short-list->vector v l)]
[(struct? v) [(struct? v)
(apply make-prefab-struct (prefab-struct-key v) (cdr l))] (let ([pf (prefab-struct-key v)])
(if pf
(apply make-prefab-struct (prefab-struct-key v) (cdr l))
(make-struct-proxy (car l) (cdr l))))]
[else l]) [else l])
(vector #f line (vector #f line
(+ graph-sz col) (+ graph-sz col)
@ -868,22 +941,23 @@
[(unbox graph-box) [(unbox graph-box)
;; Go again, this time knowing that there will be a graph: ;; Go again, this time knowing that there will be a graph:
(set-box! ht orig-ht) (set-box! ht orig-ht)
(do-syntax-ize v col line ht #t)] (do-syntax-ize v col line ht #t qq)]
[else r])))] [else r])))]
[(pair? v) [(pair? v)
(let ([orig-ht (unbox ht)] (let ([orig-ht (unbox ht)]
[graph-box (box (graph-count ht graph?))]) [graph-box (box (graph-count ht graph?))]
[qq (and qq (max 1 qq))])
(set-box! ht (hash-set (unbox ht) v graph-box)) (set-box! ht (hash-set (unbox ht) v graph-box))
(let* ([inc (if graph? (let* ([inc (if graph?
(+ 2 (string-length (format "~a" (unbox graph-box)))) (+ 2 (string-length (format "~a" (unbox graph-box))))
0)] 0)]
[a (do-syntax-ize (car v) (+ col 1 inc) line ht #f)] [a (do-syntax-ize (car v) (+ col 1 inc) line ht #f qq)]
[sep (if (and (pair? (cdr v)) [sep (if (and (pair? (cdr v))
;; FIXME: what if it turns out to be a graph reference? ;; FIXME: what if it turns out to be a graph reference?
(not (hash-ref (unbox ht) (cdr v) #f))) (not (hash-ref (unbox ht) (cdr v) #f)))
0 0
3)] 3)]
[b (do-syntax-ize (cdr v) (+ col 1 inc (syntax-span a) sep) line ht #f)]) [b (do-syntax-ize (cdr v) (+ col 1 inc (syntax-span a) sep) line ht #f qq)])
(let ([r (datum->syntax #f (let ([r (datum->syntax #f
(cons a b) (cons a b)
(vector #f line (+ col inc) (+ 1 col inc) (vector #f line (+ col inc) (+ 1 col inc)
@ -898,10 +972,10 @@
[(unbox graph-box) [(unbox graph-box)
;; Go again... ;; Go again...
(set-box! ht orig-ht) (set-box! ht orig-ht)
(do-syntax-ize v col line ht #t)] (do-syntax-ize v col line ht #t qq)]
[else r]))))] [else r]))))]
[(box? v) [(box? v)
(let ([a (do-syntax-ize (unbox v) (+ col 2) line ht #f)]) (let ([a (do-syntax-ize (unbox v) (+ col 2) line ht #f (and qq (max 1 qq)))])
(datum->syntax #f (datum->syntax #f
(box a) (box a)
(vector #f line col (+ 1 col) (vector #f line col (+ 1 col)

View File

@ -41,6 +41,13 @@ Many forms in the decompiled code, such as @scheme[module],
@schemeidfont{#%sfs-clear}, which indicates that the variable-stack @schemeidfont{#%sfs-clear}, which indicates that the variable-stack
location holding the variable will be cleared to prevent the location holding the variable will be cleared to prevent the
variable's value from being retained by the garbage collector. variable's value from being retained by the garbage collector.
Variables whose name starts with @schemeidfont{unused} are never
actually stored on the stack, and so they never have
@schemeidfont{#%sfs-clear} annotations. (The bytecode compiler
normally eliminates such bindings, but sometimes it cannot, either
because it cannot prove that the right-hand side produces the right
number of values, or the discovery that the variable is unused
happens too late with the compiler.)
Mutable variables are converted to explicitly boxed values using Mutable variables are converted to explicitly boxed values using
@schemeidfont{#%box}, @schemeidfont{#%unbox}, and @schemeidfont{#%box}, @schemeidfont{#%unbox}, and

View File

@ -347,13 +347,17 @@ arguments given.}
@defstruct+[(let-one expr) ([rhs (or/c expr? seq? indirect? any/c)] @defstruct+[(let-one expr) ([rhs (or/c expr? seq? indirect? any/c)]
[body (or/c expr? seq? indirect? any/c)] [body (or/c expr? seq? indirect? any/c)]
[flonum? boolean?])]{ [flonum? boolean?]
[unused? boolean?])]{
Pushes an uninitialized slot onto the stack, evaluates @scheme[rhs] Pushes an uninitialized slot onto the stack, evaluates @scheme[rhs]
and puts its value into the slot, and then runs @scheme[body]. If and puts its value into the slot, and then runs @scheme[body]. If
@scheme[flonum?] is @scheme[#t], then @scheme[rhs] must produce a @scheme[flonum?] is @scheme[#t], then @scheme[rhs] must produce a
flonum, and the slot must be accessed by @scheme[localref]s that flonum, and the slot must be accessed by @scheme[localref]s that
expect a flonum. expect a flonum. If @scheme[unused?] is @scheme[#t], then the slot
must not be used, and the value of @scheme[rhs] is not actually pushed
onto the stack (but @scheme[rhs] is constrained to produce a single
value).
After @scheme[rhs] is evaluated, the stack is restored to its depth After @scheme[rhs] is evaluated, the stack is restored to its depth
from before evaluating @scheme[rhs]. Note that the new slot is created from before evaluating @scheme[rhs]. Note that the new slot is created

View File

@ -429,8 +429,13 @@ does not match the size of the @scheme[struct] if more than one field
is inaccessible.)} is inaccessible.)}
@defproc[(struct? [v any/c]) any]{ Returns @scheme[#t] if @defproc[(struct? [v any/c]) any]{ Returns @scheme[#t] if
@scheme[struct->vector] exposes any fields of @scheme[v] with the @scheme[struct-info] exposes any structure types of @scheme[v] with
current inspector, @scheme[#f] otherwise.} the current inspector, @scheme[#f] otherwise.
Typically, when @scheme[(struct? v)] is true, then
@scheme[(struct->vector v)] exposes at least one field value. It is
possible, however, for the only visible types of @scheme[v] to
contribute zero fields.}
@defproc[(struct-type? [v any/c]) boolean?]{Returns @scheme[#t] if @defproc[(struct-type? [v any/c]) boolean?]{Returns @scheme[#t] if
@scheme[v] is a structure type descriptor value, @scheme[#f] @scheme[v] is a structure type descriptor value, @scheme[#f]

View File

@ -112,6 +112,13 @@ A few other escapes are recognized symbolically:
@item{@schemeidfont{code:blank} typesets as a blank space.} @item{@schemeidfont{code:blank} typesets as a blank space.}
@item{@scheme[(#,(scheme code:hilite) _datum)] typesets like
@scheme[_datum], but with a background highlight.}
@item{@scheme[(#,(scheme code:quote) _datum)] typesets like
@scheme[(@#,schemeidfont{quote} _datum)], but without rendering the
@schemeidfont{quote} as @litchar{'}.}
@item{@schemeidfont{_}@scheme[_id] typesets as @scheme[id], but @item{@schemeidfont{_}@scheme[_id] typesets as @scheme[id], but
colored as a variable (like @scheme[schemevarfont]); this colored as a variable (like @scheme[schemevarfont]); this
escape applies only if @schemeidfont{_}@scheme[_id] has no escape applies only if @schemeidfont{_}@scheme[_id] has no

View File

@ -149,7 +149,7 @@ is an example of this.
@defmodulelang[at-exp]{The @schememodname[at-exp] language installs @defmodulelang[at-exp]{The @schememodname[at-exp] language installs
@"@"-reader support in the readtable, and then chains to the reader of @"@"-reader support in the readtable, and then chains to the reader of
another language that is specified immediate after another language that is specified immediately after
@schememodname[at-exp].} @schememodname[at-exp].}
For example, @scheme[@#,hash-lang[] at-exp scheme/base] adds @"@"-reader For example, @scheme[@#,hash-lang[] at-exp scheme/base] adds @"@"-reader

View File

@ -41,7 +41,7 @@ The @scheme[stx-prop-expr] should produce a procedure for recording a
@scheme[id] has such a property. The default is @scheme[id] has such a property. The default is
@scheme[syntax-property].} @scheme[syntax-property].}
@defproc[(to-paragraph [v any/c]) block?]{ @defproc[(to-paragraph [v any/c] [#:qq? qq? any/c #f]) block?]{
Typesets an S-expression that is represented by a syntax object, where Typesets an S-expression that is represented by a syntax object, where
source-location information in the syntax object controls the source-location information in the syntax object controls the
@ -50,18 +50,26 @@ generated layout.
Identifiers that have @scheme[for-label] bindings are typeset and Identifiers that have @scheme[for-label] bindings are typeset and
hyperlinked based on definitions declared elsewhere (via hyperlinked based on definitions declared elsewhere (via
@scheme[defproc], @scheme[defform], etc.). The identifiers @scheme[defproc], @scheme[defform], etc.). The identifiers
@schemeidfont{code:line}, @schemeidfont{code:comment}, and @schemeidfont{code:line}, @schemeidfont{code:comment},
@schemeidfont{code:blank} are handled as in @scheme[schemeblock], as @schemeidfont{code:blank}, @schemeidfont{code:hilite}, and
@schemeidfont{code:quote} are handled as in @scheme[schemeblock], as
are identifiers that start with @litchar{_}. are identifiers that start with @litchar{_}.
In addition, the given @scheme[v] can contain @scheme[var-id], In addition, the given @scheme[v] can contain @scheme[var-id],
@scheme[shaped-parens], @scheme[just-context], or @scheme[shaped-parens], @scheme[just-context], or
@scheme[literal-syntax] structures to be typeset specially (see each @scheme[literal-syntax] structures to be typeset specially (see each
structure type for details), or it can contain @scheme[element] structure type for details), or it can contain @scheme[element]
structures that are used directly in the output.} structures that are used directly in the output.
If @scheme[qq?] is true, then @scheme[v] is rendered ``quasiquote''
style, much like @scheme[print] with the @scheme[print-as-quasiquote]
parameter set to @scheme[#t]. In that case, @scheme[for-label]
bindings on identifiers are ignored, since the identifiers are all
quoted in the output. Typically, @scheme[qq?] is set to true for
printing result values.}
@defproc[((to-paragraph/prefix [prefix1 any/c] [prefix any/c] [suffix any/c]) @defproc[((to-paragraph/prefix [prefix1 any/c] [prefix any/c] [suffix any/c] [#:qq? qq? any/c #f])
[v any/c]) [v any/c])
block?]{ block?]{
@ -73,13 +81,13 @@ first line, @scheme[prefix] is prefix to any subsequent line, and
it is added to the end on its own line.} it is added to the end on its own line.}
@defproc[(to-element [v any/c]) element?]{ @defproc[(to-element [v any/c] [#:qq? qq? any/c #f]) element?]{
Like @scheme[to-paragraph], except that source-location information is Like @scheme[to-paragraph], except that source-location information is
mostly ignored, since the result is meant to be inlined into a mostly ignored, since the result is meant to be inlined into a
paragraph.} paragraph.}
@defproc[(to-element/no-color [v any/c]) element?]{ @defproc[(to-element/no-color [v any/c] [#:qq? qq? any/c #f]) element?]{
Like @scheme[to-element], but @scheme[for-syntax] bindings are Like @scheme[to-element], but @scheme[for-syntax] bindings are
ignored, and the generated text is uncolored. This variant is ignored, and the generated text is uncolored. This variant is

View File

@ -1,5 +1,5 @@
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,53,46,53,50,0,0,0,1,0,0,3,0,12,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,53,46,54,50,0,0,0,1,0,0,3,0,12,0,
16,0,21,0,28,0,41,0,48,0,53,0,58,0,62,0,69,0,72,0,78, 16,0,21,0,28,0,41,0,48,0,53,0,58,0,62,0,69,0,72,0,78,
0,92,0,106,0,109,0,115,0,119,0,121,0,132,0,134,0,148,0,155,0, 0,92,0,106,0,109,0,115,0,119,0,121,0,132,0,134,0,148,0,155,0,
177,0,179,0,193,0,4,1,33,1,44,1,55,1,65,1,101,1,134,1,167, 177,0,179,0,193,0,4,1,33,1,44,1,55,1,65,1,101,1,134,1,167,
@ -14,98 +14,98 @@
115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109, 115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,
98,100,97,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, 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, 45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,
35,11,8,240,35,76,0,0,95,159,2,15,35,35,159,2,14,35,35,159,2, 36,11,8,240,44,76,0,0,95,159,2,15,36,36,159,2,14,36,36,159,2,
14,35,35,16,20,2,3,2,1,2,5,2,1,2,7,2,1,2,6,2,1, 14,36,36,16,20,2,3,2,1,2,5,2,1,2,7,2,1,2,6,2,1,
2,8,2,1,2,9,2,1,2,10,2,1,2,4,2,1,2,11,2,1,2, 2,8,2,1,2,9,2,1,2,10,2,1,2,4,2,1,2,11,2,1,2,
12,2,1,97,36,11,8,240,35,76,0,0,93,159,2,14,35,36,16,2,2, 12,2,1,97,37,11,8,240,44,76,0,0,93,159,2,14,36,37,16,2,2,
2,161,2,1,36,2,2,2,1,2,2,96,11,11,8,240,35,76,0,0,16, 2,161,2,1,37,2,2,2,1,2,2,96,11,11,8,240,44,76,0,0,16,
0,96,37,11,8,240,35,76,0,0,16,0,13,16,4,35,29,11,11,2,1, 0,96,38,11,8,240,44,76,0,0,16,0,13,16,4,36,29,11,11,2,1,
11,18,16,2,99,64,104,101,114,101,8,31,8,30,8,29,8,28,8,27,93, 11,18,16,2,99,64,104,101,114,101,8,31,8,30,8,29,8,28,8,27,93,
8,224,42,76,0,0,95,9,8,224,42,76,0,0,2,1,27,248,22,142,4, 8,224,51,76,0,0,95,9,8,224,51,76,0,0,2,1,27,248,22,142,4,
195,249,22,135,4,80,158,38,35,251,22,80,2,16,248,22,95,199,12,249,22, 195,249,22,135,4,80,158,39,36,251,22,80,2,16,248,22,95,199,12,249,22,
70,2,17,248,22,97,201,27,248,22,142,4,195,249,22,135,4,80,158,38,35, 70,2,17,248,22,97,201,27,248,22,142,4,195,249,22,135,4,80,158,39,36,
251,22,80,2,16,248,22,95,199,249,22,70,2,17,248,22,97,201,12,27,248, 251,22,80,2,16,248,22,95,199,249,22,70,2,17,248,22,97,201,12,27,248,
22,72,248,22,142,4,196,28,248,22,78,193,20,15,159,36,35,36,28,248,22, 22,72,248,22,142,4,196,28,248,22,78,193,20,15,159,37,36,37,28,248,22,
78,248,22,72,194,248,22,71,193,249,22,135,4,80,158,38,35,251,22,80,2, 78,248,22,72,194,248,22,71,193,249,22,135,4,80,158,39,36,251,22,80,2,
16,248,22,71,199,249,22,70,2,10,248,22,72,201,11,18,16,2,101,10,8, 16,248,22,71,199,249,22,70,2,10,248,22,72,201,11,18,16,2,101,10,8,
31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118, 31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118,
49,50,54,56,56,16,4,11,11,2,19,3,1,8,101,110,118,49,50,54,56, 49,50,54,57,51,16,4,11,11,2,19,3,1,8,101,110,118,49,50,54,57,
57,93,8,224,43,76,0,0,95,9,8,224,43,76,0,0,2,1,27,248,22, 52,93,8,224,52,76,0,0,95,9,8,224,52,76,0,0,2,1,27,248,22,
72,248,22,142,4,196,28,248,22,78,193,20,15,159,36,35,36,28,248,22,78, 72,248,22,142,4,196,28,248,22,78,193,20,15,159,37,36,37,28,248,22,78,
248,22,72,194,248,22,71,193,249,22,135,4,80,158,38,35,250,22,80,2,20, 248,22,72,194,248,22,71,193,249,22,135,4,80,158,39,36,250,22,80,2,20,
248,22,80,249,22,80,248,22,80,2,21,248,22,71,201,251,22,80,2,16,2, 248,22,80,249,22,80,248,22,80,2,21,248,22,71,201,251,22,80,2,16,2,
21,2,21,249,22,70,2,12,248,22,72,204,18,16,2,101,11,8,31,8,30, 21,2,21,249,22,70,2,12,248,22,72,204,18,16,2,101,11,8,31,8,30,
8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118,49,50,54, 8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118,49,50,54,
57,49,16,4,11,11,2,19,3,1,8,101,110,118,49,50,54,57,50,93,8, 57,54,16,4,11,11,2,19,3,1,8,101,110,118,49,50,54,57,55,93,8,
224,44,76,0,0,95,9,8,224,44,76,0,0,2,1,248,22,142,4,193,27, 224,53,76,0,0,95,9,8,224,53,76,0,0,2,1,248,22,142,4,193,27,
248,22,142,4,194,249,22,70,248,22,80,248,22,71,196,248,22,72,195,27,248, 248,22,142,4,194,249,22,70,248,22,80,248,22,71,196,248,22,72,195,27,248,
22,72,248,22,142,4,23,197,1,249,22,135,4,80,158,38,35,28,248,22,55, 22,72,248,22,142,4,23,197,1,249,22,135,4,80,158,39,36,28,248,22,55,
248,22,136,4,248,22,71,23,198,2,27,249,22,2,32,0,89,162,8,44,36, 248,22,136,4,248,22,71,23,198,2,27,249,22,2,32,0,89,162,8,44,37,
42,9,222,33,39,248,22,142,4,248,22,95,23,200,2,250,22,80,2,22,248, 43,9,222,33,39,248,22,142,4,248,22,95,23,200,2,250,22,80,2,22,248,
22,80,249,22,80,248,22,80,248,22,71,23,204,2,250,22,81,2,23,249,22, 22,80,249,22,80,248,22,80,248,22,71,23,204,2,250,22,81,2,23,249,22,
2,22,71,23,204,2,248,22,97,23,206,2,249,22,70,248,22,71,23,202,1, 2,22,71,23,204,2,248,22,97,23,206,2,249,22,70,248,22,71,23,202,1,
249,22,2,22,95,23,200,1,250,22,81,2,20,249,22,2,32,0,89,162,8, 249,22,2,22,95,23,200,1,250,22,81,2,20,249,22,2,32,0,89,162,8,
44,36,46,9,222,33,40,248,22,142,4,248,22,71,201,248,22,72,198,27,248, 44,37,47,9,222,33,40,248,22,142,4,248,22,71,201,248,22,72,198,27,248,
22,142,4,194,249,22,70,248,22,80,248,22,71,196,248,22,72,195,27,248,22, 22,142,4,194,249,22,70,248,22,80,248,22,71,196,248,22,72,195,27,248,22,
72,248,22,142,4,23,197,1,249,22,135,4,80,158,38,35,250,22,81,2,22, 72,248,22,142,4,23,197,1,249,22,135,4,80,158,39,36,250,22,81,2,22,
249,22,2,32,0,89,162,8,44,36,46,9,222,33,42,248,22,142,4,248,22, 249,22,2,32,0,89,162,8,44,37,47,9,222,33,42,248,22,142,4,248,22,
71,201,248,22,72,198,27,248,22,72,248,22,142,4,196,27,248,22,142,4,248, 71,201,248,22,72,198,27,248,22,72,248,22,142,4,196,27,248,22,142,4,248,
22,71,195,249,22,135,4,80,158,39,35,28,248,22,78,195,250,22,81,2,20, 22,71,195,249,22,135,4,80,158,40,36,28,248,22,78,195,250,22,81,2,20,
9,248,22,72,199,250,22,80,2,3,248,22,80,248,22,71,199,250,22,81,2, 9,248,22,72,199,250,22,80,2,3,248,22,80,248,22,71,199,250,22,81,2,
9,248,22,72,201,248,22,72,202,27,248,22,72,248,22,142,4,23,197,1,27, 9,248,22,72,201,248,22,72,202,27,248,22,72,248,22,142,4,23,197,1,27,
249,22,1,22,84,249,22,2,22,142,4,248,22,142,4,248,22,71,199,249,22, 249,22,1,22,84,249,22,2,22,142,4,248,22,142,4,248,22,71,199,249,22,
135,4,80,158,39,35,251,22,80,1,22,119,105,116,104,45,99,111,110,116,105, 135,4,80,158,40,36,251,22,80,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,24,250,22,81,1,23,101,120, 110,117,97,116,105,111,110,45,109,97,114,107,2,24,250,22,81,1,23,101,120,
116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, 116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,
21,95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107, 21,95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,
45,115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,81,2,20,9,248, 45,115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,81,2,20,9,248,
22,72,203,27,248,22,72,248,22,142,4,196,28,248,22,78,193,20,15,159,36, 22,72,203,27,248,22,72,248,22,142,4,196,28,248,22,78,193,20,15,159,37,
35,36,249,22,135,4,80,158,38,35,27,248,22,142,4,248,22,71,197,28,249, 36,37,249,22,135,4,80,158,39,36,27,248,22,142,4,248,22,71,197,28,249,
22,175,8,62,61,62,248,22,136,4,248,22,95,196,250,22,80,2,20,248,22, 22,175,8,62,61,62,248,22,136,4,248,22,95,196,250,22,80,2,20,248,22,
80,249,22,80,21,93,2,25,248,22,71,199,250,22,81,2,4,249,22,80,2, 80,249,22,80,21,93,2,25,248,22,71,199,250,22,81,2,4,249,22,80,2,
25,249,22,80,248,22,104,203,2,25,248,22,72,202,251,22,80,2,16,28,249, 25,249,22,80,248,22,104,203,2,25,248,22,72,202,251,22,80,2,16,28,249,
22,175,8,248,22,136,4,248,22,71,200,64,101,108,115,101,10,248,22,71,197, 22,175,8,248,22,136,4,248,22,71,200,64,101,108,115,101,10,248,22,71,197,
250,22,81,2,20,9,248,22,72,200,249,22,70,2,4,248,22,72,202,100,8, 250,22,81,2,20,9,248,22,72,200,249,22,70,2,4,248,22,72,202,100,8,
31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118, 31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,8,101,110,118,
49,50,55,49,52,16,4,11,11,2,19,3,1,8,101,110,118,49,50,55,49, 49,50,55,49,57,16,4,11,11,2,19,3,1,8,101,110,118,49,50,55,50,
53,93,8,224,45,76,0,0,18,16,2,158,94,10,64,118,111,105,100,8,47, 48,93,8,224,54,76,0,0,18,16,2,158,94,10,64,118,111,105,100,8,47,
95,9,8,224,45,76,0,0,2,1,27,248,22,72,248,22,142,4,196,249,22, 95,9,8,224,54,76,0,0,2,1,27,248,22,72,248,22,142,4,196,249,22,
135,4,80,158,38,35,28,248,22,55,248,22,136,4,248,22,71,197,250,22,80, 135,4,80,158,39,36,28,248,22,55,248,22,136,4,248,22,71,197,250,22,80,
2,26,248,22,80,248,22,71,199,248,22,95,198,27,248,22,136,4,248,22,71, 2,26,248,22,80,248,22,71,199,248,22,95,198,27,248,22,136,4,248,22,71,
197,250,22,80,2,26,248,22,80,248,22,71,197,250,22,81,2,23,248,22,72, 197,250,22,80,2,26,248,22,80,248,22,71,197,250,22,81,2,23,248,22,72,
199,248,22,72,202,159,35,20,105,159,35,16,1,11,16,0,83,158,41,20,103, 199,248,22,72,202,159,36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,
144,69,35,37,109,105,110,45,115,116,120,2,1,11,11,11,10,35,80,158,35, 144,69,35,37,109,105,110,45,115,116,120,2,1,11,11,11,10,36,80,158,36,
35,20,105,159,35,16,0,16,0,16,1,2,2,36,16,0,35,16,0,35,11, 36,20,105,159,36,16,0,16,0,16,1,2,2,37,16,0,36,16,0,36,11,
11,38,35,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2, 11,39,36,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,
9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11,11,11,11,16,10, 9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11,11,11,11,16,10,
2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,35, 2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,36,
45,36,11,11,11,16,0,16,0,16,0,35,35,11,11,11,11,16,0,16,0, 46,37,11,11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,
16,0,35,35,16,11,16,5,2,2,20,15,159,35,35,35,35,20,105,159,35, 16,0,36,36,16,11,16,5,2,2,20,15,159,36,36,36,36,20,105,159,36,
16,0,16,1,33,32,10,16,5,2,5,89,162,8,44,36,52,9,223,0,33, 16,0,16,1,33,32,10,16,5,2,5,89,162,8,44,37,53,9,223,0,33,
33,35,20,105,159,35,16,1,2,2,16,0,11,16,5,2,8,89,162,8,44, 33,36,20,105,159,36,16,1,2,2,16,0,11,16,5,2,8,89,162,8,44,
36,52,9,223,0,33,34,35,20,105,159,35,16,1,2,2,16,0,11,16,5, 37,53,9,223,0,33,34,36,20,105,159,36,16,1,2,2,16,0,11,16,5,
2,10,89,162,8,44,36,52,9,223,0,33,35,35,20,105,159,35,16,1,2, 2,10,89,162,8,44,37,53,9,223,0,33,35,36,20,105,159,36,16,1,2,
2,16,1,33,36,11,16,5,2,12,89,162,8,44,36,55,9,223,0,33,37, 2,16,1,33,36,11,16,5,2,12,89,162,8,44,37,56,9,223,0,33,37,
35,20,105,159,35,16,1,2,2,16,1,33,38,11,16,5,2,3,89,162,8, 36,20,105,159,36,16,1,2,2,16,1,33,38,11,16,5,2,3,89,162,8,
44,36,57,9,223,0,33,41,35,20,105,159,35,16,1,2,2,16,0,11,16, 44,37,58,9,223,0,33,41,36,20,105,159,36,16,1,2,2,16,0,11,16,
5,2,11,89,162,8,44,36,52,9,223,0,33,43,35,20,105,159,35,16,1, 5,2,11,89,162,8,44,37,53,9,223,0,33,43,36,20,105,159,36,16,1,
2,2,16,0,11,16,5,2,9,89,162,8,44,36,53,9,223,0,33,44,35, 2,2,16,0,11,16,5,2,9,89,162,8,44,37,54,9,223,0,33,44,36,
20,105,159,35,16,1,2,2,16,0,11,16,5,2,6,89,162,8,44,36,54, 20,105,159,36,16,1,2,2,16,0,11,16,5,2,6,89,162,8,44,37,55,
9,223,0,33,45,35,20,105,159,35,16,1,2,2,16,0,11,16,5,2,4, 9,223,0,33,45,36,20,105,159,36,16,1,2,2,16,0,11,16,5,2,4,
89,162,8,44,36,57,9,223,0,33,46,35,20,105,159,35,16,1,2,2,16, 89,162,8,44,37,58,9,223,0,33,46,36,20,105,159,36,16,1,2,2,16,
1,33,48,11,16,5,2,7,89,162,8,44,36,53,9,223,0,33,49,35,20, 1,33,48,11,16,5,2,7,89,162,8,44,37,54,9,223,0,33,49,36,20,
105,159,35,16,1,2,2,16,0,11,16,0,94,2,14,2,15,93,2,14,9, 105,159,36,16,1,2,2,16,0,11,16,0,94,2,14,2,15,93,2,14,9,
9,35,0}; 9,36,0};
EVAL_ONE_SIZED_STR((char *)expr, 2018); EVAL_ONE_SIZED_STR((char *)expr, 2018);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,53,46,53,64,0,0,0,1,0,0,13,0,18,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,53,46,54,64,0,0,0,1,0,0,13,0,18,0,
35,0,50,0,68,0,84,0,94,0,112,0,132,0,148,0,166,0,197,0,226, 35,0,50,0,68,0,84,0,94,0,112,0,132,0,148,0,166,0,197,0,226,
0,248,0,6,1,12,1,26,1,31,1,41,1,49,1,77,1,109,1,115,1, 0,248,0,6,1,12,1,26,1,31,1,41,1,49,1,77,1,109,1,115,1,
160,1,205,1,229,1,12,2,14,2,180,2,14,4,55,4,128,5,214,5,44, 160,1,205,1,229,1,12,2,14,2,180,2,14,4,55,4,128,5,214,5,44,
6,143,6,227,6,240,6,105,7,207,7,219,7,69,9,83,9,228,9,213,10, 6,143,6,227,6,240,6,105,7,207,7,219,7,69,9,83,9,228,9,213,10,
195,11,202,11,210,11,218,11,87,12,101,12,86,14,188,14,210,14,226,14,174, 195,11,202,11,210,11,218,11,87,12,101,12,86,14,188,14,210,14,226,14,174,
16,21,17,35,17,117,18,54,20,63,20,72,20,98,20,209,20,0,0,201,23, 16,21,17,35,17,117,18,54,20,63,20,72,20,98,20,209,20,0,0,202,23,
0,0,72,112,97,116,104,45,115,116,114,105,110,103,63,64,98,115,98,115,76, 0,0,72,112,97,116,104,45,115,116,114,105,110,103,63,64,98,115,98,115,76,
110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,74,45,99,104,101, 110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,74,45,99,104,101,
99,107,45,114,101,108,112,97,116,104,77,45,99,104,101,99,107,45,99,111,108, 99,107,45,114,101,108,112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,
@ -131,31 +131,31 @@
103,6,21,21,115,116,114,105,110,103,32,111,114,32,98,121,116,101,32,115,116, 103,6,21,21,115,116,114,105,110,103,32,111,114,32,98,121,116,101,32,115,116,
114,105,110,103,6,36,36,99,97,110,110,111,116,32,97,100,100,32,97,32,115, 114,105,110,103,6,36,36,99,97,110,110,111,116,32,97,100,100,32,97,32,115,
117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58, 117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,
32,5,0,27,20,14,159,80,159,36,50,37,250,80,159,39,51,37,249,22,27, 32,5,0,27,20,14,159,80,159,37,51,38,250,80,159,40,52,38,249,22,27,
11,80,159,41,50,37,22,144,13,10,248,22,167,5,23,196,2,28,248,22,164, 11,80,159,42,51,38,22,144,13,10,248,22,167,5,23,196,2,28,248,22,164,
6,23,194,2,12,87,94,248,22,181,8,23,194,1,27,20,14,159,80,159,37, 6,23,194,2,12,87,94,248,22,181,8,23,194,1,27,20,14,159,80,159,38,
50,37,250,80,159,40,51,37,249,22,27,11,80,159,42,50,37,22,144,13,10, 51,38,250,80,159,41,52,38,249,22,27,11,80,159,43,51,38,22,144,13,10,
248,22,167,5,23,197,2,28,248,22,164,6,23,194,2,12,87,94,248,22,181, 248,22,167,5,23,197,2,28,248,22,164,6,23,194,2,12,87,94,248,22,181,
8,23,194,1,27,20,14,159,80,159,38,50,37,250,80,159,41,51,37,249,22, 8,23,194,1,27,20,14,159,80,159,39,51,38,250,80,159,42,52,38,249,22,
27,11,80,159,43,50,37,22,144,13,10,248,22,167,5,23,198,2,28,248,22, 27,11,80,159,44,51,38,22,144,13,10,248,22,167,5,23,198,2,28,248,22,
164,6,23,194,2,12,87,94,248,22,181,8,23,194,1,248,80,159,39,53,36, 164,6,23,194,2,12,87,94,248,22,181,8,23,194,1,248,80,159,40,54,37,
197,28,248,22,78,23,195,2,9,27,248,22,71,23,196,2,27,28,248,22,128, 197,28,248,22,78,23,195,2,9,27,248,22,71,23,196,2,27,28,248,22,128,
14,23,195,2,23,194,1,28,248,22,191,13,23,195,2,249,22,129,14,23,196, 14,23,195,2,23,194,1,28,248,22,191,13,23,195,2,249,22,129,14,23,196,
1,250,80,158,42,48,248,22,144,14,2,19,11,10,250,80,158,40,48,248,22, 1,250,80,158,43,49,248,22,144,14,2,19,11,10,250,80,158,41,49,248,22,
144,14,2,19,23,197,1,10,28,23,193,2,249,22,70,248,22,131,14,249,22, 144,14,2,19,23,197,1,10,28,23,193,2,249,22,70,248,22,131,14,249,22,
129,14,23,198,1,247,22,145,14,27,248,22,72,23,200,1,28,248,22,78,23, 129,14,23,198,1,247,22,145,14,27,248,22,72,23,200,1,28,248,22,78,23,
194,2,9,27,248,22,71,23,195,2,27,28,248,22,128,14,23,195,2,23,194, 194,2,9,27,248,22,71,23,195,2,27,28,248,22,128,14,23,195,2,23,194,
1,28,248,22,191,13,23,195,2,249,22,129,14,23,196,1,250,80,158,47,48, 1,28,248,22,191,13,23,195,2,249,22,129,14,23,196,1,250,80,158,48,49,
248,22,144,14,2,19,11,10,250,80,158,45,48,248,22,144,14,2,19,23,197, 248,22,144,14,2,19,11,10,250,80,158,46,49,248,22,144,14,2,19,23,197,
1,10,28,23,193,2,249,22,70,248,22,131,14,249,22,129,14,23,198,1,247, 1,10,28,23,193,2,249,22,70,248,22,131,14,249,22,129,14,23,198,1,247,
22,145,14,248,80,159,45,52,36,248,22,72,23,199,1,87,94,23,193,1,248, 22,145,14,248,80,159,46,53,37,248,22,72,23,199,1,87,94,23,193,1,248,
80,159,43,52,36,248,22,72,23,197,1,87,94,23,193,1,27,248,22,72,23, 80,159,44,53,37,248,22,72,23,197,1,87,94,23,193,1,27,248,22,72,23,
198,1,28,248,22,78,23,194,2,9,27,248,22,71,23,195,2,27,28,248,22, 198,1,28,248,22,78,23,194,2,9,27,248,22,71,23,195,2,27,28,248,22,
128,14,23,195,2,23,194,1,28,248,22,191,13,23,195,2,249,22,129,14,23, 128,14,23,195,2,23,194,1,28,248,22,191,13,23,195,2,249,22,129,14,23,
196,1,250,80,158,45,48,248,22,144,14,2,19,11,10,250,80,158,43,48,248, 196,1,250,80,158,46,49,248,22,144,14,2,19,11,10,250,80,158,44,49,248,
22,144,14,2,19,23,197,1,10,28,23,193,2,249,22,70,248,22,131,14,249, 22,144,14,2,19,23,197,1,10,28,23,193,2,249,22,70,248,22,131,14,249,
22,129,14,23,198,1,247,22,145,14,248,80,159,43,52,36,248,22,72,23,199, 22,129,14,23,198,1,247,22,145,14,248,80,159,44,53,37,248,22,72,23,199,
1,248,80,159,41,52,36,248,22,72,196,27,248,22,168,13,23,195,2,28,23, 1,248,80,159,42,53,37,248,22,72,196,27,248,22,168,13,23,195,2,28,23,
193,2,192,87,94,23,193,1,28,248,22,169,6,23,195,2,27,248,22,190,13, 193,2,192,87,94,23,193,1,28,248,22,169,6,23,195,2,27,248,22,190,13,
195,28,192,192,248,22,191,13,195,11,87,94,28,28,248,22,169,13,23,195,2, 195,28,192,192,248,22,191,13,195,11,87,94,28,28,248,22,169,13,23,195,2,
10,28,248,22,168,13,23,195,2,10,28,248,22,169,6,23,195,2,28,248,22, 10,28,248,22,168,13,23,195,2,10,28,248,22,169,6,23,195,2,28,248,22,
@ -172,7 +172,7 @@
28,249,22,157,14,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43, 28,249,22,157,14,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,163,14,0,19,35, 91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,163,14,0,19,35,
114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34,23,202,1, 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,43,36,37,2,20,28,248,22,169,6,194,248,22,176, 6,2,2,92,49,80,159,44,37,38,2,20,28,248,22,169,6,194,248,22,176,
13,194,193,87,94,28,28,248,22,168,13,23,195,2,10,28,248,22,169,6,23, 13,194,193,87,94,28,28,248,22,168,13,23,195,2,10,28,248,22,169,6,23,
195,2,28,248,22,190,13,23,195,2,10,248,22,191,13,23,195,2,11,12,250, 195,2,28,248,22,190,13,23,195,2,10,248,22,191,13,23,195,2,11,12,250,
22,145,9,23,196,2,2,21,23,197,2,28,248,22,190,13,23,195,2,12,248, 22,145,9,23,196,2,2,21,23,197,2,28,248,22,190,13,23,195,2,12,248,
@ -185,12 +185,12 @@
28,248,22,169,6,23,195,2,28,248,22,190,13,23,195,2,10,248,22,191,13, 28,248,22,169,6,23,195,2,28,248,22,190,13,23,195,2,10,248,22,191,13,
23,195,2,11,12,250,22,145,9,195,2,21,23,197,2,28,248,22,190,13,23, 23,195,2,11,12,250,22,145,9,195,2,21,23,197,2,28,248,22,190,13,23,
195,2,12,248,22,184,11,249,22,190,10,248,22,134,7,250,22,153,7,2,22, 195,2,12,248,22,184,11,249,22,190,10,248,22,134,7,250,22,153,7,2,22,
199,23,201,1,247,22,23,249,22,3,89,162,8,44,36,49,9,223,2,33,34, 199,23,201,1,247,22,23,249,22,3,89,162,8,44,37,50,9,223,2,33,34,
196,87,94,28,28,248,22,168,13,23,194,2,10,28,248,22,169,6,23,194,2, 196,87,94,28,28,248,22,168,13,23,194,2,10,28,248,22,169,6,23,194,2,
28,248,22,190,13,23,194,2,10,248,22,191,13,23,194,2,11,12,250,22,145, 28,248,22,190,13,23,194,2,10,248,22,191,13,23,194,2,11,12,250,22,145,
9,2,6,2,21,23,196,2,28,248,22,190,13,23,194,2,12,248,22,184,11, 9,2,6,2,21,23,196,2,28,248,22,190,13,23,194,2,12,248,22,184,11,
249,22,190,10,248,22,134,7,250,22,153,7,2,22,2,6,23,200,1,247,22, 249,22,190,10,248,22,134,7,250,22,153,7,2,22,2,6,23,200,1,247,22,
23,32,37,89,162,8,44,39,54,2,23,222,33,38,28,248,22,78,23,197,2, 23,32,37,89,162,8,44,40,55,2,23,222,33,38,28,248,22,78,23,197,2,
87,94,23,196,1,248,22,184,11,249,22,159,11,251,22,153,7,2,24,2,6, 87,94,23,196,1,248,22,184,11,249,22,159,11,251,22,153,7,2,24,2,6,
28,248,22,78,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,186,13, 28,248,22,78,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,186,13,
23,204,1,23,205,1,23,200,1,247,22,23,27,249,22,186,13,248,22,71,23, 23,204,1,23,205,1,23,200,1,247,22,23,27,249,22,186,13,248,22,71,23,
@ -200,8 +200,8 @@
193,10,28,248,22,169,6,193,28,248,22,190,13,193,10,248,22,191,13,193,11, 193,10,28,248,22,169,6,193,28,248,22,190,13,193,10,248,22,191,13,193,11,
12,250,22,145,9,2,6,2,21,195,28,248,22,190,13,193,12,248,22,184,11, 12,250,22,145,9,2,6,2,21,195,28,248,22,190,13,193,12,248,22,184,11,
249,22,190,10,248,22,134,7,250,22,153,7,2,22,2,6,199,247,22,23,249, 249,22,190,10,248,22,134,7,250,22,153,7,2,22,2,6,199,247,22,23,249,
22,3,32,0,89,162,8,44,36,48,9,222,33,36,195,27,247,22,146,14,251, 22,3,32,0,89,162,8,44,37,49,9,222,33,36,195,27,247,22,146,14,251,
2,37,196,197,198,196,32,40,89,162,43,41,58,2,23,222,33,41,28,248,22, 2,37,196,197,198,196,32,40,89,162,44,42,59,2,23,222,33,41,28,248,22,
78,23,199,2,87,94,23,198,1,248,23,196,1,251,22,153,7,2,24,23,199, 78,23,199,2,87,94,23,198,1,248,23,196,1,251,22,153,7,2,24,23,199,
1,28,248,22,78,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,186, 1,28,248,22,78,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,186,
13,23,204,1,23,205,1,23,198,1,27,249,22,186,13,248,22,71,23,202,2, 13,23,204,1,23,205,1,23,198,1,27,249,22,186,13,248,22,71,23,202,2,
@ -222,41 +222,41 @@
72,200,27,247,22,146,14,253,2,40,198,199,200,201,202,198,87,95,28,28,248, 72,200,27,247,22,146,14,253,2,40,198,199,200,201,202,198,87,95,28,28,248,
22,169,13,23,194,2,10,28,248,22,168,13,23,194,2,10,28,248,22,169,6, 22,169,13,23,194,2,10,28,248,22,168,13,23,194,2,10,28,248,22,169,6,
23,194,2,28,248,22,190,13,23,194,2,10,248,22,191,13,23,194,2,11,12, 23,194,2,28,248,22,190,13,23,194,2,10,248,22,191,13,23,194,2,11,12,
252,22,145,9,23,200,2,2,25,35,23,198,2,23,199,2,28,28,248,22,169, 252,22,145,9,23,200,2,2,25,36,23,198,2,23,199,2,28,28,248,22,169,
6,23,195,2,10,248,22,157,7,23,195,2,87,94,23,194,1,12,252,22,145, 6,23,195,2,10,248,22,157,7,23,195,2,87,94,23,194,1,12,252,22,145,
9,23,200,2,2,26,36,23,198,2,23,199,1,91,159,38,11,90,161,38,35, 9,23,200,2,2,26,37,23,198,2,23,199,1,91,159,39,11,90,161,39,36,
11,248,22,189,13,23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,146, 11,248,22,189,13,23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,146,
9,23,201,1,2,27,23,199,1,249,22,7,194,195,91,159,37,11,90,161,37, 9,23,201,1,2,27,23,199,1,249,22,7,194,195,91,159,38,11,90,161,38,
35,11,87,95,28,28,248,22,169,13,23,196,2,10,28,248,22,168,13,23,196, 36,11,87,95,28,28,248,22,169,13,23,196,2,10,28,248,22,168,13,23,196,
2,10,28,248,22,169,6,23,196,2,28,248,22,190,13,23,196,2,10,248,22, 2,10,28,248,22,169,6,23,196,2,28,248,22,190,13,23,196,2,10,248,22,
191,13,23,196,2,11,12,252,22,145,9,2,9,2,25,35,23,200,2,23,201, 191,13,23,196,2,11,12,252,22,145,9,2,9,2,25,36,23,200,2,23,201,
2,28,28,248,22,169,6,23,197,2,10,248,22,157,7,23,197,2,12,252,22, 2,28,28,248,22,169,6,23,197,2,10,248,22,157,7,23,197,2,12,252,22,
145,9,2,9,2,26,36,23,200,2,23,201,2,91,159,38,11,90,161,38,35, 145,9,2,9,2,26,37,23,200,2,23,201,2,91,159,39,11,90,161,39,36,
11,248,22,189,13,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,146, 11,248,22,189,13,23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,146,
9,2,9,2,27,23,201,2,249,22,7,194,195,27,249,22,178,13,250,22,162, 9,2,9,2,27,23,201,2,249,22,7,194,195,27,249,22,178,13,250,22,162,
14,0,20,35,114,120,35,34,40,63,58,91,46,93,91,94,46,93,42,124,41, 14,0,20,35,114,120,35,34,40,63,58,91,46,93,91,94,46,93,42,124,41,
36,34,248,22,174,13,23,201,1,28,248,22,169,6,23,203,2,249,22,181,7, 36,34,248,22,174,13,23,201,1,28,248,22,169,6,23,203,2,249,22,181,7,
23,204,1,8,63,23,202,1,28,248,22,169,13,23,199,2,248,22,170,13,23, 23,204,1,8,63,23,202,1,28,248,22,169,13,23,199,2,248,22,170,13,23,
199,1,87,94,23,198,1,247,22,171,13,28,248,22,168,13,194,249,22,186,13, 199,1,87,94,23,198,1,247,22,171,13,28,248,22,168,13,194,249,22,186,13,
195,194,192,91,159,37,11,90,161,37,35,11,87,95,28,28,248,22,169,13,23, 195,194,192,91,159,38,11,90,161,38,36,11,87,95,28,28,248,22,169,13,23,
196,2,10,28,248,22,168,13,23,196,2,10,28,248,22,169,6,23,196,2,28, 196,2,10,28,248,22,168,13,23,196,2,10,28,248,22,169,6,23,196,2,28,
248,22,190,13,23,196,2,10,248,22,191,13,23,196,2,11,12,252,22,145,9, 248,22,190,13,23,196,2,10,248,22,191,13,23,196,2,11,12,252,22,145,9,
2,10,2,25,35,23,200,2,23,201,2,28,28,248,22,169,6,23,197,2,10, 2,10,2,25,36,23,200,2,23,201,2,28,28,248,22,169,6,23,197,2,10,
248,22,157,7,23,197,2,12,252,22,145,9,2,10,2,26,36,23,200,2,23, 248,22,157,7,23,197,2,12,252,22,145,9,2,10,2,26,37,23,200,2,23,
201,2,91,159,38,11,90,161,38,35,11,248,22,189,13,23,199,2,87,94,23, 201,2,91,159,39,11,90,161,39,36,11,248,22,189,13,23,199,2,87,94,23,
195,1,87,94,28,192,12,250,22,146,9,2,10,2,27,23,201,2,249,22,7, 195,1,87,94,28,192,12,250,22,146,9,2,10,2,27,23,201,2,249,22,7,
194,195,27,249,22,178,13,249,22,167,7,250,22,163,14,0,9,35,114,120,35, 194,195,27,249,22,178,13,249,22,167,7,250,22,163,14,0,9,35,114,120,35,
34,91,46,93,34,248,22,174,13,23,203,1,6,1,1,95,28,248,22,169,6, 34,91,46,93,34,248,22,174,13,23,203,1,6,1,1,95,28,248,22,169,6,
23,202,2,249,22,181,7,23,203,1,8,63,23,201,1,28,248,22,169,13,23, 23,202,2,249,22,181,7,23,203,1,8,63,23,201,1,28,248,22,169,13,23,
199,2,248,22,170,13,23,199,1,87,94,23,198,1,247,22,171,13,28,248,22, 199,2,248,22,170,13,23,199,1,87,94,23,198,1,247,22,171,13,28,248,22,
168,13,194,249,22,186,13,195,194,192,249,247,22,136,5,194,11,249,80,159,37, 168,13,194,249,22,186,13,195,194,192,249,247,22,136,5,194,11,249,80,159,38,
46,36,9,9,249,80,159,37,46,36,195,9,27,247,22,148,14,249,80,158,38, 47,37,9,9,249,80,159,38,47,37,195,9,27,247,22,148,14,249,80,158,39,
47,28,23,195,2,27,248,22,186,7,6,11,11,80,76,84,67,79,76,76,69, 48,28,23,195,2,27,248,22,186,7,6,11,11,80,76,84,67,79,76,76,69,
67,84,83,28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,186,13, 67,84,83,28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,186,13,
248,22,144,14,69,97,100,100,111,110,45,100,105,114,247,22,184,7,6,8,8, 248,22,144,14,69,97,100,100,111,110,45,100,105,114,247,22,184,7,6,8,8,
99,111,108,108,101,99,116,115,11,27,248,80,159,41,52,36,250,22,84,23,203, 99,111,108,108,101,99,116,115,11,27,248,80,159,42,53,37,250,22,84,23,203,
1,248,22,80,248,22,144,14,72,99,111,108,108,101,99,116,115,45,100,105,114, 1,248,22,80,248,22,144,14,72,99,111,108,108,101,99,116,115,45,100,105,114,
23,204,1,28,193,249,22,70,195,194,192,32,50,89,162,8,44,38,8,31,2, 23,204,1,28,193,249,22,70,195,194,192,32,50,89,162,8,44,39,8,31,2,
18,222,33,51,27,249,22,155,14,23,197,2,23,198,2,28,23,193,2,87,94, 18,222,33,51,27,249,22,155,14,23,197,2,23,198,2,28,23,193,2,87,94,
23,196,1,27,248,22,95,23,195,2,27,27,248,22,104,23,197,1,27,249,22, 23,196,1,27,248,22,95,23,195,2,27,27,248,22,104,23,197,1,27,249,22,
155,14,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,95, 155,14,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,95,
@ -286,10 +286,10 @@
103,196,28,28,248,22,79,195,249,22,4,22,168,13,196,11,12,250,22,145,9, 103,196,28,28,248,22,79,195,249,22,4,22,168,13,196,11,12,250,22,145,9,
2,13,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,197,250,2, 2,13,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,197,250,2,
50,197,195,28,248,22,169,6,197,248,22,180,7,197,196,32,53,89,162,8,44, 50,197,195,28,248,22,169,6,197,248,22,180,7,197,196,32,53,89,162,8,44,
38,52,70,102,111,117,110,100,45,101,120,101,99,222,33,56,32,54,89,162,8, 39,53,70,102,111,117,110,100,45,101,120,101,99,222,33,56,32,54,89,162,8,
44,39,57,64,110,101,120,116,222,33,55,27,248,22,130,14,23,196,2,28,249, 44,40,58,64,110,101,120,116,222,33,55,27,248,22,130,14,23,196,2,28,249,
22,177,8,23,195,2,23,197,1,11,28,248,22,190,13,23,194,2,27,249,22, 22,177,8,23,195,2,23,197,1,11,28,248,22,190,13,23,194,2,27,249,22,
186,13,23,197,1,23,196,1,28,23,197,2,91,159,38,11,90,161,38,35,11, 186,13,23,197,1,23,196,1,28,23,197,2,91,159,39,11,90,161,39,36,11,
248,22,189,13,23,197,2,87,95,23,195,1,23,194,1,27,28,23,202,2,27, 248,22,189,13,23,197,2,87,95,23,195,1,23,194,1,27,28,23,202,2,27,
248,22,130,14,23,199,2,28,249,22,177,8,23,195,2,23,200,2,11,28,248, 248,22,130,14,23,199,2,28,249,22,177,8,23,195,2,23,200,2,11,28,248,
22,190,13,23,194,2,250,2,53,23,205,2,23,206,2,249,22,186,13,23,200, 22,190,13,23,194,2,250,2,53,23,205,2,23,206,2,249,22,186,13,23,200,
@ -299,8 +299,8 @@
28,23,193,2,192,87,94,23,193,1,28,23,203,2,11,27,248,22,130,14,23, 28,23,193,2,192,87,94,23,193,1,28,23,203,2,11,27,248,22,130,14,23,
200,2,28,249,22,177,8,23,195,2,23,201,1,11,28,248,22,190,13,23,194, 200,2,28,249,22,177,8,23,195,2,23,201,1,11,28,248,22,190,13,23,194,
2,250,2,53,23,206,1,23,207,1,249,22,186,13,23,201,1,23,198,1,250, 2,250,2,53,23,206,1,23,207,1,249,22,186,13,23,201,1,23,198,1,250,
2,53,205,206,195,192,87,94,23,194,1,28,23,196,2,91,159,38,11,90,161, 2,53,205,206,195,192,87,94,23,194,1,28,23,196,2,91,159,39,11,90,161,
38,35,11,248,22,189,13,23,197,2,87,95,23,195,1,23,194,1,27,28,23, 39,36,11,248,22,189,13,23,197,2,87,95,23,195,1,23,194,1,27,28,23,
201,2,27,248,22,130,14,23,199,2,28,249,22,177,8,23,195,2,23,200,2, 201,2,27,248,22,130,14,23,199,2,28,249,22,177,8,23,195,2,23,200,2,
11,28,248,22,190,13,23,194,2,250,2,53,23,204,2,23,205,2,249,22,186, 11,28,248,22,190,13,23,194,2,250,2,53,23,204,2,23,205,2,249,22,186,
13,23,200,2,23,198,1,250,2,53,23,204,2,23,205,2,23,196,1,11,28, 13,23,200,2,23,198,1,250,2,53,23,204,2,23,205,2,23,196,1,11,28,
@ -309,12 +309,12 @@
192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,202,2,11,27,248,22, 192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,202,2,11,27,248,22,
130,14,23,200,2,28,249,22,177,8,23,195,2,23,201,1,11,28,248,22,190, 130,14,23,200,2,28,249,22,177,8,23,195,2,23,201,1,11,28,248,22,190,
13,23,194,2,250,2,53,23,205,1,23,206,1,249,22,186,13,23,201,1,23, 13,23,194,2,250,2,53,23,205,1,23,206,1,249,22,186,13,23,201,1,23,
198,1,250,2,53,204,205,195,192,28,23,193,2,91,159,38,11,90,161,38,35, 198,1,250,2,53,204,205,195,192,28,23,193,2,91,159,39,11,90,161,39,36,
11,248,22,189,13,23,199,2,87,95,23,195,1,23,194,1,27,28,23,198,2, 11,248,22,189,13,23,199,2,87,95,23,195,1,23,194,1,27,28,23,198,2,
251,2,54,23,198,2,23,203,2,23,201,2,23,202,2,11,28,23,193,2,192, 251,2,54,23,198,2,23,203,2,23,201,2,23,202,2,11,28,23,193,2,192,
87,94,23,193,1,27,28,248,22,168,13,195,27,249,22,186,13,197,200,28,28, 87,94,23,193,1,27,28,248,22,168,13,195,27,249,22,186,13,197,200,28,28,
248,22,181,13,193,10,248,22,180,13,193,192,11,11,28,192,192,28,198,11,251, 248,22,181,13,193,10,248,22,180,13,193,192,11,11,28,192,192,28,198,11,251,
2,54,198,203,201,202,194,32,57,89,162,8,44,39,8,31,2,18,222,33,58, 2,54,198,203,201,202,194,32,57,89,162,8,44,40,8,31,2,18,222,33,58,
28,248,22,78,23,197,2,11,27,248,22,129,14,248,22,71,23,199,2,27,249, 28,248,22,78,23,197,2,11,27,248,22,129,14,248,22,71,23,199,2,27,249,
22,186,13,23,196,1,23,197,2,28,248,22,180,13,23,194,2,250,2,53,198, 22,186,13,23,196,1,23,197,2,28,248,22,180,13,23,194,2,250,2,53,198,
199,195,87,94,23,193,1,27,248,22,72,23,200,1,28,248,22,78,23,194,2, 199,195,87,94,23,193,1,27,248,22,72,23,200,1,28,248,22,78,23,194,2,
@ -339,10 +339,10 @@
23,196,2,10,248,22,191,13,23,196,2,11,248,22,190,13,23,196,2,11,10, 23,196,2,10,248,22,191,13,23,196,2,11,248,22,190,13,23,196,2,11,10,
12,250,22,145,9,2,14,6,29,29,35,102,32,111,114,32,114,101,108,97,116, 12,250,22,145,9,2,14,6,29,29,35,102,32,111,114,32,114,101,108,97,116,
105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,23,198,2, 105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,23,198,2,
28,28,248,22,190,13,23,195,2,91,159,38,11,90,161,38,35,11,248,22,189, 28,28,248,22,190,13,23,195,2,91,159,39,11,90,161,39,36,11,248,22,189,
13,23,198,2,249,22,175,8,194,68,114,101,108,97,116,105,118,101,11,27,248, 13,23,198,2,249,22,175,8,194,68,114,101,108,97,116,105,118,101,11,27,248,
22,186,7,6,4,4,80,65,84,72,27,28,23,194,2,27,249,80,159,40,47, 22,186,7,6,4,4,80,65,84,72,27,28,23,194,2,27,249,80,159,41,48,
37,23,197,1,9,28,249,22,175,8,247,22,188,7,2,20,249,22,70,248,22, 38,23,197,1,9,28,249,22,175,8,247,22,188,7,2,20,249,22,70,248,22,
177,13,5,1,46,194,192,87,94,23,194,1,9,28,248,22,78,23,194,2,11, 177,13,5,1,46,194,192,87,94,23,194,1,9,28,248,22,78,23,194,2,11,
27,248,22,129,14,248,22,71,23,196,2,27,249,22,186,13,23,196,1,23,200, 27,248,22,129,14,248,22,71,23,196,2,27,249,22,186,13,23,196,1,23,200,
2,28,248,22,180,13,23,194,2,250,2,53,201,202,195,87,94,23,193,1,27, 2,28,248,22,180,13,23,194,2,250,2,53,201,202,195,87,94,23,193,1,27,
@ -352,82 +352,82 @@
248,22,78,23,194,2,11,27,248,22,129,14,248,22,71,195,27,249,22,186,13, 248,22,78,23,194,2,11,27,248,22,129,14,248,22,71,195,27,249,22,186,13,
23,196,1,205,28,248,22,180,13,193,250,2,53,23,15,23,16,195,251,2,57, 23,196,1,205,28,248,22,180,13,193,250,2,53,23,15,23,16,195,251,2,57,
23,15,23,16,23,17,248,22,72,199,27,248,22,129,14,23,196,1,28,248,22, 23,15,23,16,23,17,248,22,72,199,27,248,22,129,14,23,196,1,28,248,22,
180,13,193,250,2,53,198,199,195,11,250,80,159,38,48,36,196,197,11,250,80, 180,13,193,250,2,53,198,199,195,11,250,80,159,39,49,37,196,197,11,250,80,
159,38,48,36,196,11,11,87,94,249,22,160,6,247,22,132,5,195,248,22,186, 159,39,49,37,196,11,11,87,94,249,22,160,6,247,22,132,5,195,248,22,186,
5,249,22,179,3,35,249,22,163,3,197,198,27,28,23,197,2,87,95,23,196, 5,249,22,179,3,36,249,22,163,3,197,198,27,28,23,197,2,87,95,23,196,
1,23,195,1,23,197,1,87,94,23,197,1,27,248,22,144,14,2,19,27,249, 1,23,195,1,23,197,1,87,94,23,197,1,27,248,22,144,14,2,19,27,249,
80,159,40,48,36,23,196,1,11,27,27,248,22,182,3,23,200,1,28,192,192, 80,159,41,49,37,23,196,1,11,27,27,248,22,182,3,23,200,1,28,192,192,
35,27,27,248,22,182,3,23,202,1,28,192,192,35,249,22,163,5,23,197,1, 36,27,27,248,22,182,3,23,202,1,28,192,192,36,249,22,163,5,23,197,1,
83,158,39,20,100,95,89,162,8,44,35,47,9,224,3,2,33,62,23,195,1, 83,158,40,20,100,95,89,162,8,44,36,48,9,224,3,2,33,62,23,195,1,
23,196,1,27,248,22,148,5,23,195,1,248,80,159,38,53,36,193,159,35,20, 23,196,1,27,248,22,148,5,23,195,1,248,80,159,39,54,37,193,159,36,20,
105,159,35,16,1,11,16,0,83,158,41,20,103,144,67,35,37,117,116,105,108, 105,159,36,16,1,11,16,0,83,158,42,20,103,144,67,35,37,117,116,105,108,
115,29,11,11,11,11,11,10,42,80,158,35,35,20,105,159,37,16,17,2,1, 115,29,11,11,11,11,11,10,43,80,158,36,36,20,105,159,38,16,17,2,1,
2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2, 2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,
12,2,13,2,14,2,15,30,2,17,1,20,112,97,114,97,109,101,116,101,114, 12,2,13,2,14,2,15,30,2,17,1,20,112,97,114,97,109,101,116,101,114,
105,122,97,116,105,111,110,45,107,101,121,4,30,2,17,1,23,101,120,116,101, 105,122,97,116,105,111,110,45,107,101,121,4,30,2,17,1,23,101,120,116,101,
110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,3,16, 110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,3,16,
0,16,0,35,16,0,35,16,4,2,5,2,4,2,2,2,8,39,11,11,38, 0,16,0,36,16,0,36,16,4,2,5,2,4,2,2,2,8,40,11,11,39,
35,11,11,11,16,11,2,7,2,6,2,15,2,14,2,12,2,11,2,3,2, 36,11,11,11,16,11,2,7,2,6,2,15,2,14,2,12,2,11,2,3,2,
10,2,13,2,9,2,1,16,11,11,11,11,11,11,11,11,11,11,11,11,16, 10,2,13,2,9,2,1,16,11,11,11,11,11,11,11,11,11,11,11,11,16,
11,2,7,2,6,2,15,2,14,2,12,2,11,2,3,2,10,2,13,2,9, 11,2,7,2,6,2,15,2,14,2,12,2,11,2,3,2,10,2,13,2,9,
2,1,46,46,36,11,11,11,16,0,16,0,16,0,35,35,11,11,11,11,16, 2,1,47,47,37,11,11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,
0,16,0,16,0,35,35,16,0,16,17,83,158,35,16,2,89,162,8,44,36, 0,16,0,16,0,36,36,16,0,16,17,83,158,36,16,2,89,162,8,44,37,
50,2,18,223,0,33,29,80,159,35,53,36,83,158,35,16,2,89,162,8,44, 51,2,18,223,0,33,29,80,159,36,54,37,83,158,36,16,2,89,162,8,44,
36,55,2,18,223,0,33,30,80,159,35,52,36,83,158,35,16,2,32,0,89, 37,56,2,18,223,0,33,30,80,159,36,53,37,83,158,36,16,2,32,0,89,
162,43,36,44,2,1,222,33,31,80,159,35,35,36,83,158,35,16,2,249,22, 162,44,37,45,2,1,222,33,31,80,159,36,36,37,83,158,36,16,2,249,22,
171,6,7,92,7,92,80,159,35,36,36,83,158,35,16,2,89,162,43,36,53, 171,6,7,92,7,92,80,159,36,37,37,83,158,36,16,2,89,162,44,37,54,
2,3,223,0,33,32,80,159,35,37,36,83,158,35,16,2,32,0,89,162,8, 2,3,223,0,33,32,80,159,36,38,37,83,158,36,16,2,32,0,89,162,8,
44,37,49,2,4,222,33,33,80,159,35,38,36,83,158,35,16,2,32,0,89, 44,38,50,2,4,222,33,33,80,159,36,39,37,83,158,36,16,2,32,0,89,
162,8,44,38,50,2,5,222,33,35,80,159,35,39,36,83,158,35,16,2,32, 162,8,44,39,51,2,5,222,33,35,80,159,36,40,37,83,158,36,16,2,32,
0,89,162,8,45,37,49,2,6,222,33,39,80,159,35,40,36,83,158,35,16, 0,89,162,8,45,38,50,2,6,222,33,39,80,159,36,41,37,83,158,36,16,
2,32,0,89,162,43,39,51,2,7,222,33,42,80,159,35,41,36,83,158,35, 2,32,0,89,162,44,40,52,2,7,222,33,42,80,159,36,42,37,83,158,36,
16,2,32,0,89,162,43,38,49,2,8,222,33,43,80,159,35,42,36,83,158, 16,2,32,0,89,162,44,39,50,2,8,222,33,43,80,159,36,43,37,83,158,
35,16,2,32,0,89,162,43,37,52,2,9,222,33,44,80,159,35,43,36,83, 36,16,2,32,0,89,162,44,38,53,2,9,222,33,44,80,159,36,44,37,83,
158,35,16,2,32,0,89,162,43,37,53,2,10,222,33,45,80,159,35,44,36, 158,36,16,2,32,0,89,162,44,38,54,2,10,222,33,45,80,159,36,45,37,
83,158,35,16,2,32,0,89,162,43,36,43,2,11,222,33,46,80,159,35,45, 83,158,36,16,2,32,0,89,162,44,37,44,2,11,222,33,46,80,159,36,46,
36,83,158,35,16,2,83,158,38,20,99,96,2,12,89,162,43,35,43,9,223, 37,83,158,36,16,2,83,158,39,20,99,96,2,12,89,162,44,36,44,9,223,
0,33,47,89,162,43,36,44,9,223,0,33,48,89,162,43,37,54,9,223,0, 0,33,47,89,162,44,37,45,9,223,0,33,48,89,162,44,38,55,9,223,0,
33,49,80,159,35,46,36,83,158,35,16,2,27,248,22,151,14,248,22,180,7, 33,49,80,159,36,47,37,83,158,36,16,2,27,248,22,151,14,248,22,180,7,
27,28,249,22,175,8,247,22,188,7,2,20,6,1,1,59,6,1,1,58,250, 27,28,249,22,175,8,247,22,188,7,2,20,6,1,1,59,6,1,1,58,250,
22,153,7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23, 22,153,7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,
196,2,23,196,1,89,162,8,44,37,47,2,13,223,0,33,52,80,159,35,47, 196,2,23,196,1,89,162,8,44,38,48,2,13,223,0,33,52,80,159,36,48,
36,83,158,35,16,2,83,158,38,20,99,96,2,14,89,162,8,44,38,59,9, 37,83,158,36,16,2,83,158,39,20,99,96,2,14,89,162,8,44,39,8,24,
223,0,33,59,89,162,43,37,46,9,223,0,33,60,89,162,43,36,45,9,223, 9,223,0,33,59,89,162,44,38,47,9,223,0,33,60,89,162,44,37,46,9,
0,33,61,80,159,35,48,36,83,158,35,16,2,89,162,8,44,38,51,2,15, 223,0,33,61,80,159,36,49,37,83,158,36,16,2,89,162,8,44,39,52,2,
223,0,33,63,80,159,35,49,36,94,29,94,2,16,68,35,37,107,101,114,110, 15,223,0,33,63,80,159,36,50,37,94,29,94,2,16,68,35,37,107,101,114,
101,108,11,29,94,2,16,69,35,37,109,105,110,45,115,116,120,11,9,9,9, 110,101,108,11,29,94,2,16,69,35,37,109,105,110,45,115,116,120,11,9,9,
35,0}; 9,36,0};
EVAL_ONE_SIZED_STR((char *)expr, 6238); EVAL_ONE_SIZED_STR((char *)expr, 6239);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,53,46,53,8,0,0,0,1,0,0,6,0,19,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,53,46,54,8,0,0,0,1,0,0,6,0,19,0,
34,0,48,0,62,0,76,0,118,0,0,0,53,1,0,0,65,113,117,111,116, 34,0,48,0,62,0,76,0,118,0,0,0,53,1,0,0,65,113,117,111,116,
101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35,37, 101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35,37,
110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122, 110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122,
11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1,68,35, 11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1,68,35,
37,107,101,114,110,101,108,11,97,35,11,8,240,169,76,0,0,98,159,2,2, 37,107,101,114,110,101,108,11,97,36,11,8,240,178,76,0,0,98,159,2,2,
35,35,159,2,3,35,35,159,2,4,35,35,159,2,5,35,35,159,2,6,35, 36,36,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,6,36,
35,159,2,6,35,35,16,0,159,35,20,105,159,35,16,1,11,16,0,83,158, 36,159,2,6,36,36,16,0,159,36,20,105,159,36,16,1,11,16,0,83,158,
41,20,103,144,69,35,37,98,117,105,108,116,105,110,29,11,11,11,11,11,18, 42,20,103,144,69,35,37,98,117,105,108,116,105,110,29,11,11,11,11,11,18,
96,11,42,42,42,35,80,158,35,35,20,105,159,35,16,0,16,0,16,0,35, 96,11,43,43,43,36,80,158,36,36,20,105,159,36,16,0,16,0,16,0,36,
16,0,35,16,0,35,11,11,38,35,11,11,11,16,0,16,0,16,0,35,35, 16,0,36,16,0,36,11,11,39,36,11,11,11,16,0,16,0,16,0,36,36,
36,11,11,11,16,0,16,0,16,0,35,35,11,11,11,11,16,0,16,0,16, 37,11,11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16,
0,35,35,16,0,16,0,102,2,6,2,5,29,94,2,1,69,35,37,102,111, 0,36,36,16,0,16,0,102,2,6,2,5,29,94,2,1,69,35,37,102,111,
114,101,105,103,110,11,29,94,2,1,68,35,37,117,110,115,97,102,101,11,29, 114,101,105,103,110,11,29,94,2,1,68,35,37,117,110,115,97,102,101,11,29,
94,2,1,69,35,37,102,108,102,120,110,117,109,11,2,4,2,3,2,2,29, 94,2,1,69,35,37,102,108,102,120,110,117,109,11,2,4,2,3,2,2,29,
94,2,1,67,35,37,112,108,97,99,101,11,29,94,2,1,69,35,37,102,117, 94,2,1,67,35,37,112,108,97,99,101,11,29,94,2,1,69,35,37,102,117,
116,117,114,101,115,11,9,9,9,35,0}; 116,117,114,101,115,11,9,9,9,36,0};
EVAL_ONE_SIZED_STR((char *)expr, 346); EVAL_ONE_SIZED_STR((char *)expr, 346);
} }
{ {
SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,53,46,53,65,0,0,0,1,0,0,11,0,38,0, SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,50,46,53,46,54,65,0,0,0,1,0,0,11,0,38,0,
44,0,57,0,66,0,73,0,95,0,117,0,143,0,155,0,173,0,193,0,205, 44,0,57,0,66,0,73,0,95,0,117,0,143,0,155,0,173,0,193,0,205,
0,221,0,244,0,0,1,31,1,38,1,43,1,48,1,53,1,58,1,67,1, 0,221,0,244,0,0,1,31,1,38,1,43,1,48,1,53,1,58,1,67,1,
72,1,76,1,84,1,93,1,114,1,144,1,175,1,232,1,24,2,64,4,83, 72,1,76,1,84,1,93,1,114,1,144,1,175,1,232,1,24,2,64,4,83,
4,96,4,254,4,10,5,144,5,186,6,53,7,59,7,73,7,85,7,175,7, 4,96,4,254,4,10,5,144,5,186,6,53,7,59,7,73,7,85,7,175,7,
188,7,51,8,63,8,153,8,166,8,29,9,56,9,68,9,158,9,171,9,34, 188,7,51,8,63,8,153,8,166,8,29,9,56,9,68,9,158,9,171,9,34,
10,47,10,166,10,174,10,3,11,5,11,74,11,69,18,121,18,144,18,0,0, 10,47,10,166,10,174,10,3,11,5,11,74,11,69,18,121,18,144,18,0,0,
48,21,0,0,70,100,108,108,45,115,117,102,102,105,120,1,25,100,101,102,97, 49,21,0,0,70,100,108,108,45,115,117,102,102,105,120,1,25,100,101,102,97,
117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100, 117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,
65,113,117,111,116,101,29,94,2,3,67,35,37,117,116,105,108,115,11,68,35, 65,113,117,111,116,101,29,94,2,3,67,35,37,117,116,105,108,115,11,68,35,
37,112,97,114,97,109,122,29,94,2,3,2,5,11,1,20,112,97,114,97,109, 37,112,97,114,97,109,122,29,94,2,3,2,5,11,1,20,112,97,114,97,109,
@ -443,44 +443,44 @@
100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,29,94,2, 100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,29,94,2,
3,2,5,11,64,98,111,111,116,64,115,101,97,108,64,115,97,109,101,5,3, 3,2,5,11,64,98,111,111,116,64,115,101,97,108,64,115,97,109,101,5,3,
46,122,111,6,6,6,110,97,116,105,118,101,64,108,111,111,112,63,108,105,98, 46,122,111,6,6,6,110,97,116,105,118,101,64,108,111,111,112,63,108,105,98,
67,105,103,110,111,114,101,100,249,22,14,195,80,159,37,45,37,250,22,186,13, 67,105,103,110,111,114,101,100,249,22,14,195,80,159,38,46,38,250,22,186,13,
23,197,1,23,199,1,249,80,159,42,38,37,23,198,1,2,22,252,22,186,13, 23,197,1,23,199,1,249,80,159,43,39,38,23,198,1,2,22,252,22,186,13,
23,199,1,23,201,1,2,23,247,22,189,7,249,80,159,44,38,37,23,200,1, 23,199,1,23,201,1,2,23,247,22,189,7,249,80,159,45,39,38,23,200,1,
80,159,44,35,37,87,94,23,194,1,27,250,22,139,14,196,11,32,0,89,162, 80,159,45,36,38,87,94,23,194,1,27,250,22,139,14,196,11,32,0,89,162,
8,44,35,40,9,222,11,28,192,249,22,70,195,194,11,27,252,22,186,13,23, 8,44,36,41,9,222,11,28,192,249,22,70,195,194,11,27,252,22,186,13,23,
200,1,23,202,1,2,23,247,22,189,7,249,80,159,45,38,37,23,201,1,80, 200,1,23,202,1,2,23,247,22,189,7,249,80,159,46,39,38,23,201,1,80,
159,45,35,37,27,250,22,139,14,196,11,32,0,89,162,8,44,35,40,9,222, 159,46,36,38,27,250,22,139,14,196,11,32,0,89,162,8,44,36,41,9,222,
11,28,192,249,22,70,195,194,11,27,250,22,186,13,23,198,1,23,200,1,249, 11,28,192,249,22,70,195,194,11,27,250,22,186,13,23,198,1,23,200,1,249,
80,159,43,38,37,23,199,1,2,22,27,250,22,139,14,196,11,32,0,89,162, 80,159,44,39,38,23,199,1,2,22,27,250,22,139,14,196,11,32,0,89,162,
8,44,35,40,9,222,11,28,192,249,22,70,195,194,11,87,94,28,248,80,159, 8,44,36,41,9,222,11,28,192,249,22,70,195,194,11,87,94,28,248,80,159,
36,37,37,23,195,2,12,250,22,145,9,77,108,111,97,100,47,117,115,101,45, 37,38,38,23,195,2,12,250,22,145,9,77,108,111,97,100,47,117,115,101,45,
99,111,109,112,105,108,101,100,6,25,25,112,97,116,104,32,111,114,32,118,97, 99,111,109,112,105,108,101,100,6,25,25,112,97,116,104,32,111,114,32,118,97,
108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,23,197,2,91,159,41, 108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,23,197,2,91,159,42,
11,90,161,36,35,11,28,248,22,128,14,23,201,2,23,200,1,27,247,22,137, 11,90,161,37,36,11,28,248,22,128,14,23,201,2,23,200,1,27,247,22,137,
5,28,23,193,2,249,22,129,14,23,203,1,23,195,1,200,90,161,38,36,11, 5,28,23,193,2,249,22,129,14,23,203,1,23,195,1,200,90,161,39,37,11,
248,22,189,13,23,194,2,87,94,23,196,1,90,161,36,39,11,28,249,22,175, 248,22,189,13,23,194,2,87,94,23,196,1,90,161,37,40,11,28,249,22,175,
8,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1,2,21,23, 8,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1,2,21,23,
194,1,90,161,36,40,11,247,22,147,14,27,89,162,43,36,49,62,122,111,225, 194,1,90,161,37,41,11,247,22,147,14,27,89,162,44,37,50,62,122,111,225,
7,5,3,33,28,27,89,162,43,36,51,9,225,8,6,4,33,29,27,249,22, 7,5,3,33,28,27,89,162,44,37,52,9,225,8,6,4,33,29,27,249,22,
5,89,162,8,44,36,46,9,223,5,33,30,23,203,2,27,28,23,195,1,27, 5,89,162,8,44,37,47,9,223,5,33,30,23,203,2,27,28,23,195,1,27,
249,22,5,89,162,8,44,36,52,9,225,13,11,9,33,31,23,205,2,27,28, 249,22,5,89,162,8,44,37,53,9,225,13,11,9,33,31,23,205,2,27,28,
23,196,2,11,193,28,192,192,28,193,28,23,196,2,28,249,22,175,3,248,22, 23,196,2,11,193,28,192,192,28,193,28,23,196,2,28,249,22,175,3,248,22,
72,196,248,22,72,23,199,2,193,11,11,11,11,28,23,193,2,87,98,23,202, 72,196,248,22,72,23,199,2,193,11,11,11,11,28,23,193,2,87,98,23,202,
1,23,199,1,23,197,1,23,196,1,23,194,1,20,14,159,80,159,45,39,37, 1,23,199,1,23,197,1,23,196,1,23,194,1,20,14,159,80,159,46,40,38,
250,80,159,48,40,37,249,22,27,11,80,159,50,39,37,22,137,5,28,248,22, 250,80,159,49,41,38,249,22,27,11,80,159,51,40,38,22,137,5,28,248,22,
168,13,23,205,2,23,204,1,87,94,23,204,1,247,22,145,14,249,247,22,150, 168,13,23,205,2,23,204,1,87,94,23,204,1,247,22,145,14,249,247,22,150,
14,248,22,71,195,206,87,94,23,193,1,27,28,23,197,1,27,249,22,5,83, 14,248,22,71,195,206,87,94,23,193,1,27,28,23,197,1,27,249,22,5,83,
158,39,20,100,94,89,162,8,44,36,50,9,225,14,12,10,33,32,23,203,1, 158,40,20,100,94,89,162,8,44,37,51,9,225,14,12,10,33,32,23,203,1,
23,206,1,27,28,23,197,2,11,193,28,192,192,28,193,28,196,28,249,22,175, 23,206,1,27,28,23,197,2,11,193,28,192,192,28,193,28,196,28,249,22,175,
3,248,22,72,196,248,22,72,199,193,11,11,11,87,95,23,203,1,23,200,1, 3,248,22,72,196,248,22,72,199,193,11,11,11,87,95,23,203,1,23,200,1,
11,28,23,193,2,87,94,23,198,1,20,14,159,80,159,46,39,37,250,80,159, 11,28,23,193,2,87,94,23,198,1,20,14,159,80,159,47,40,38,250,80,159,
49,40,37,249,22,27,11,80,159,51,39,37,22,137,5,28,248,22,168,13,23, 50,41,38,249,22,27,11,80,159,52,40,38,22,137,5,28,248,22,168,13,23,
206,2,23,205,1,87,94,23,205,1,247,22,145,14,249,247,22,135,5,248,22, 206,2,23,205,1,87,94,23,205,1,247,22,145,14,249,247,22,135,5,248,22,
71,195,23,15,87,94,23,193,1,20,14,159,80,159,46,39,37,250,80,159,49, 71,195,23,15,87,94,23,193,1,20,14,159,80,159,47,40,38,250,80,159,50,
40,37,249,22,27,11,80,159,51,39,37,22,137,5,28,248,22,168,13,23,206, 41,38,249,22,27,11,80,159,52,40,38,22,137,5,28,248,22,168,13,23,206,
2,23,205,1,87,94,23,205,1,247,22,145,14,249,247,22,135,5,199,23,15, 2,23,205,1,87,94,23,205,1,247,22,145,14,249,247,22,135,5,199,23,15,
0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,35, 0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,35,
89,162,8,44,36,58,2,24,222,33,36,27,249,22,155,14,2,34,23,196,2, 89,162,8,44,37,59,2,24,222,33,36,27,249,22,155,14,2,34,23,196,2,
28,23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,27,248,22, 28,23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,27,248,22,
104,23,197,1,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23, 104,23,197,1,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,
194,1,249,22,70,248,22,95,23,196,2,27,248,22,104,23,197,1,27,249,22, 194,1,249,22,70,248,22,95,23,196,2,27,248,22,104,23,197,1,27,249,22,
@ -488,11 +488,11 @@
95,23,196,2,27,248,22,104,23,197,1,27,249,22,155,14,2,34,23,196,2, 95,23,196,2,27,248,22,104,23,197,1,27,249,22,155,14,2,34,23,196,2,
28,23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,248,2,35, 28,23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,248,2,35,
248,22,104,23,197,1,248,22,80,194,248,22,80,194,248,22,80,194,248,22,80, 248,22,104,23,197,1,248,22,80,194,248,22,80,194,248,22,80,194,248,22,80,
194,32,37,89,162,43,36,54,2,24,222,33,38,28,248,22,78,248,22,72,23, 194,32,37,89,162,44,37,55,2,24,222,33,38,28,248,22,78,248,22,72,23,
195,2,249,22,7,9,248,22,71,195,91,159,37,11,90,161,37,35,11,27,248, 195,2,249,22,7,9,248,22,71,195,91,159,38,11,90,161,38,36,11,27,248,
22,72,196,28,248,22,78,248,22,72,23,195,2,249,22,7,9,248,22,71,195, 22,72,196,28,248,22,78,248,22,72,23,195,2,249,22,7,9,248,22,71,195,
91,159,37,11,90,161,37,35,11,27,248,22,72,196,28,248,22,78,248,22,72, 91,159,38,11,90,161,38,36,11,27,248,22,72,196,28,248,22,78,248,22,72,
23,195,2,249,22,7,9,248,22,71,195,91,159,37,11,90,161,37,35,11,248, 23,195,2,249,22,7,9,248,22,71,195,91,159,38,11,90,161,38,36,11,248,
2,37,248,22,72,196,249,22,7,249,22,70,248,22,71,199,196,195,249,22,7, 2,37,248,22,72,196,249,22,7,249,22,70,248,22,71,199,196,195,249,22,7,
249,22,70,248,22,71,199,196,195,249,22,7,249,22,70,248,22,71,199,196,195, 249,22,70,248,22,71,199,196,195,249,22,7,249,22,70,248,22,71,199,196,195,
27,27,249,22,155,14,2,34,23,197,2,28,23,193,2,87,94,23,195,1,249, 27,27,249,22,155,14,2,34,23,197,2,28,23,193,2,87,94,23,195,1,249,
@ -503,55 +503,55 @@
1,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249, 1,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249,
22,70,248,22,95,23,196,2,248,2,35,248,22,104,23,197,1,248,22,80,194, 22,70,248,22,95,23,196,2,248,2,35,248,22,104,23,197,1,248,22,80,194,
248,22,80,194,248,22,80,194,248,22,80,195,28,23,195,1,192,28,248,22,78, 248,22,80,194,248,22,80,194,248,22,80,195,28,23,195,1,192,28,248,22,78,
248,22,72,23,195,2,249,22,7,9,248,22,71,195,91,159,37,11,90,161,37, 248,22,72,23,195,2,249,22,7,9,248,22,71,195,91,159,38,11,90,161,38,
35,11,27,248,22,72,196,28,248,22,78,248,22,72,23,195,2,249,22,7,9, 36,11,27,248,22,72,196,28,248,22,78,248,22,72,23,195,2,249,22,7,9,
248,22,71,195,91,159,37,11,90,161,37,35,11,27,248,22,72,196,28,248,22, 248,22,71,195,91,159,38,11,90,161,38,36,11,27,248,22,72,196,28,248,22,
78,248,22,72,23,195,2,249,22,7,9,248,22,71,195,91,159,37,11,90,161, 78,248,22,72,23,195,2,249,22,7,9,248,22,71,195,91,159,38,11,90,161,
37,35,11,248,2,37,248,22,72,196,249,22,7,249,22,70,248,22,71,199,196, 38,36,11,248,2,37,248,22,72,196,249,22,7,249,22,70,248,22,71,199,196,
195,249,22,7,249,22,70,248,22,71,199,196,195,249,22,7,249,22,70,248,22, 195,249,22,7,249,22,70,248,22,71,199,196,195,249,22,7,249,22,70,248,22,
71,199,196,195,87,95,28,248,22,179,4,195,12,250,22,145,9,2,17,6,20, 71,199,196,195,87,95,28,248,22,179,4,195,12,250,22,145,9,2,17,6,20,
20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104, 20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,
197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,145, 197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,145,
2,80,159,41,42,37,248,22,175,14,247,22,148,12,11,28,23,193,2,192,87, 2,80,159,42,43,38,248,22,175,14,247,22,148,12,11,28,23,193,2,192,87,
94,23,193,1,27,247,22,129,2,87,94,250,22,143,2,80,159,42,42,37,248, 94,23,193,1,27,247,22,129,2,87,94,250,22,143,2,80,159,43,43,38,248,
22,175,14,247,22,148,12,195,192,250,22,143,2,195,198,66,97,116,116,97,99, 22,175,14,247,22,148,12,195,192,250,22,143,2,195,198,66,97,116,116,97,99,
104,251,211,197,198,199,10,28,192,250,22,144,9,11,196,195,248,22,142,9,194, 104,251,211,197,198,199,10,28,192,250,22,144,9,11,196,195,248,22,142,9,194,
32,43,89,162,43,36,51,2,24,222,33,44,28,248,22,78,248,22,72,23,195, 32,43,89,162,44,37,52,2,24,222,33,44,28,248,22,78,248,22,72,23,195,
2,249,22,7,9,248,22,71,195,91,159,37,11,90,161,37,35,11,27,248,22, 2,249,22,7,9,248,22,71,195,91,159,38,11,90,161,38,36,11,27,248,22,
72,196,28,248,22,78,248,22,72,23,195,2,249,22,7,9,248,22,71,195,91, 72,196,28,248,22,78,248,22,72,23,195,2,249,22,7,9,248,22,71,195,91,
159,37,11,90,161,37,35,11,248,2,43,248,22,72,196,249,22,7,249,22,70, 159,38,11,90,161,38,36,11,248,2,43,248,22,72,196,249,22,7,249,22,70,
248,22,71,199,196,195,249,22,7,249,22,70,248,22,71,199,196,195,32,45,89, 248,22,71,199,196,195,249,22,7,249,22,70,248,22,71,199,196,195,32,45,89,
162,8,44,36,54,2,24,222,33,46,27,249,22,155,14,2,34,23,196,2,28, 162,8,44,37,55,2,24,222,33,46,27,249,22,155,14,2,34,23,196,2,28,
23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,27,248,22,104, 23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,27,248,22,104,
23,197,1,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194, 23,197,1,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194,
1,249,22,70,248,22,95,23,196,2,27,248,22,104,23,197,1,27,249,22,155, 1,249,22,70,248,22,95,23,196,2,27,248,22,104,23,197,1,27,249,22,155,
14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249,22,70,248,22,95, 14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249,22,70,248,22,95,
23,196,2,248,2,45,248,22,104,23,197,1,248,22,80,194,248,22,80,194,248, 23,196,2,248,2,45,248,22,104,23,197,1,248,22,80,194,248,22,80,194,248,
22,80,194,32,47,89,162,43,36,51,2,24,222,33,48,28,248,22,78,248,22, 22,80,194,32,47,89,162,44,37,52,2,24,222,33,48,28,248,22,78,248,22,
72,23,195,2,249,22,7,9,248,22,71,195,91,159,37,11,90,161,37,35,11, 72,23,195,2,249,22,7,9,248,22,71,195,91,159,38,11,90,161,38,36,11,
27,248,22,72,196,28,248,22,78,248,22,72,23,195,2,249,22,7,9,248,22, 27,248,22,72,196,28,248,22,78,248,22,72,23,195,2,249,22,7,9,248,22,
71,195,91,159,37,11,90,161,37,35,11,248,2,47,248,22,72,196,249,22,7, 71,195,91,159,38,11,90,161,38,36,11,248,2,47,248,22,72,196,249,22,7,
249,22,70,248,22,71,199,196,195,249,22,7,249,22,70,248,22,71,199,196,195, 249,22,70,248,22,71,199,196,195,249,22,7,249,22,70,248,22,71,199,196,195,
32,49,89,162,8,44,36,54,2,24,222,33,50,27,249,22,155,14,2,34,23, 32,49,89,162,8,44,37,55,2,24,222,33,50,27,249,22,155,14,2,34,23,
196,2,28,23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,27, 196,2,28,23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,27,
248,22,104,23,197,1,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87, 248,22,104,23,197,1,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,
94,23,194,1,249,22,70,248,22,95,23,196,2,27,248,22,104,23,197,1,27, 94,23,194,1,249,22,70,248,22,95,23,196,2,27,248,22,104,23,197,1,27,
249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249,22,70, 249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249,22,70,
248,22,95,23,196,2,248,2,49,248,22,104,23,197,1,248,22,80,194,248,22, 248,22,95,23,196,2,248,2,49,248,22,104,23,197,1,248,22,80,194,248,22,
80,194,248,22,80,194,28,249,22,175,6,194,6,1,1,46,2,21,28,249,22, 80,194,248,22,80,194,28,249,22,175,6,194,6,1,1,46,2,21,28,249,22,
175,6,194,6,2,2,46,46,62,117,112,192,32,52,89,162,43,36,51,2,24, 175,6,194,6,2,2,46,46,62,117,112,192,32,52,89,162,44,37,52,2,24,
222,33,53,28,248,22,78,248,22,72,23,195,2,249,22,7,9,248,22,71,195, 222,33,53,28,248,22,78,248,22,72,23,195,2,249,22,7,9,248,22,71,195,
91,159,37,11,90,161,37,35,11,27,248,22,72,196,28,248,22,78,248,22,72, 91,159,38,11,90,161,38,36,11,27,248,22,72,196,28,248,22,78,248,22,72,
23,195,2,249,22,7,9,248,22,71,195,91,159,37,11,90,161,37,35,11,248, 23,195,2,249,22,7,9,248,22,71,195,91,159,38,11,90,161,38,36,11,248,
2,52,248,22,72,196,249,22,7,249,22,70,248,22,71,199,196,195,249,22,7, 2,52,248,22,72,196,249,22,7,249,22,70,248,22,71,199,196,195,249,22,7,
249,22,70,248,22,71,199,196,195,32,54,89,162,8,44,36,54,2,24,222,33, 249,22,70,248,22,71,199,196,195,32,54,89,162,8,44,37,55,2,24,222,33,
55,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249, 55,27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249,
22,70,248,22,95,23,196,2,27,248,22,104,23,197,1,27,249,22,155,14,2, 22,70,248,22,95,23,196,2,27,248,22,104,23,197,1,27,249,22,155,14,2,
34,23,196,2,28,23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196, 34,23,196,2,28,23,193,2,87,94,23,194,1,249,22,70,248,22,95,23,196,
2,27,248,22,104,23,197,1,27,249,22,155,14,2,34,23,196,2,28,23,193, 2,27,248,22,104,23,197,1,27,249,22,155,14,2,34,23,196,2,28,23,193,
2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,248,2,54,248,22,104, 2,87,94,23,194,1,249,22,70,248,22,95,23,196,2,248,2,54,248,22,104,
23,197,1,248,22,80,194,248,22,80,194,248,22,80,194,32,56,89,162,8,44, 23,197,1,248,22,80,194,248,22,80,194,248,22,80,194,32,56,89,162,8,44,
36,54,2,24,222,33,57,27,249,22,155,14,2,34,23,196,2,28,23,193,2, 37,55,2,24,222,33,57,27,249,22,155,14,2,34,23,196,2,28,23,193,2,
87,94,23,194,1,249,22,70,248,22,95,23,196,2,27,248,22,104,23,197,1, 87,94,23,194,1,249,22,70,248,22,95,23,196,2,27,248,22,104,23,197,1,
27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249,22, 27,249,22,155,14,2,34,23,196,2,28,23,193,2,87,94,23,194,1,249,22,
70,248,22,95,23,196,2,27,248,22,104,23,197,1,27,249,22,155,14,2,34, 70,248,22,95,23,196,2,27,248,22,104,23,197,1,27,249,22,155,14,2,34,
@ -561,9 +561,9 @@
1,28,249,22,175,8,248,22,71,23,200,2,23,196,1,251,22,142,9,2,17, 1,28,249,22,175,8,248,22,71,23,200,2,23,196,1,251,22,142,9,2,17,
6,26,26,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97, 6,26,26,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,
116,32,126,101,58,32,126,101,23,200,1,249,22,2,22,72,248,22,85,249,22, 116,32,126,101,58,32,126,101,23,200,1,249,22,2,22,72,248,22,85,249,22,
70,23,206,1,23,202,1,12,12,247,192,20,14,159,80,159,39,44,37,249,22, 70,23,206,1,23,202,1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,
70,248,22,175,14,247,22,148,12,23,197,1,20,14,159,80,159,39,39,37,250, 70,248,22,175,14,247,22,148,12,23,197,1,20,14,159,80,159,40,40,38,250,
80,159,42,40,37,249,22,27,11,80,159,44,39,37,22,161,4,23,196,1,249, 80,159,43,41,38,249,22,27,11,80,159,45,40,38,22,161,4,23,196,1,249,
247,22,136,5,23,198,1,248,22,58,248,22,172,13,23,198,1,87,94,28,28, 247,22,136,5,23,198,1,248,22,58,248,22,172,13,23,198,1,87,94,28,28,
248,22,168,13,23,196,2,10,248,22,187,4,23,196,2,12,28,23,197,2,250, 248,22,168,13,23,196,2,10,248,22,187,4,23,196,2,12,28,23,197,2,250,
22,144,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116, 22,144,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,
@ -571,51 +571,51 @@
97,116,104,32,111,114,32,112,97,116,104,23,198,2,28,28,248,22,68,23,196, 97,116,104,32,111,114,32,112,97,116,104,23,198,2,28,28,248,22,68,23,196,
2,249,22,175,8,248,22,71,23,198,2,2,3,11,248,22,180,4,248,22,95, 2,249,22,175,8,248,22,71,23,198,2,2,3,11,248,22,180,4,248,22,95,
196,28,28,248,22,68,23,196,2,249,22,175,8,248,22,71,23,198,2,66,112, 196,28,28,248,22,68,23,196,2,249,22,175,8,248,22,71,23,198,2,66,112,
108,97,110,101,116,11,87,94,28,207,12,20,14,159,80,159,36,51,37,80,158, 108,97,110,101,116,11,87,94,28,207,12,20,14,159,80,159,37,52,38,80,158,
36,49,90,161,36,35,10,249,22,162,4,21,94,2,25,6,18,18,112,108,97, 37,50,90,161,37,36,10,249,22,162,4,21,94,2,25,6,18,18,112,108,97,
110,101,116,47,114,101,115,111,108,118,101,114,46,115,115,1,27,112,108,97,110, 110,101,116,47,114,101,115,111,108,118,101,114,46,115,115,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,116,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,
101,114,12,252,212,199,200,201,202,80,158,41,49,87,94,23,193,1,27,89,162, 101,114,12,252,212,199,200,201,202,80,158,42,50,87,94,23,193,1,27,89,162,
8,44,36,45,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45, 8,44,37,46,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,
101,114,114,223,5,33,42,27,28,248,22,55,23,198,2,27,250,22,145,2,80, 101,114,114,223,5,33,42,27,28,248,22,55,23,198,2,27,250,22,145,2,80,
159,42,43,37,249,22,70,23,203,2,247,22,146,14,11,28,23,193,2,192,87, 159,43,44,38,249,22,70,23,203,2,247,22,146,14,11,28,23,193,2,192,87,
94,23,193,1,91,159,37,11,90,161,37,35,11,27,248,22,61,23,202,2,248, 94,23,193,1,91,159,38,11,90,161,38,36,11,27,248,22,61,23,202,2,248,
2,43,248,2,45,23,195,1,27,251,80,159,46,52,37,2,17,23,202,1,28, 2,43,248,2,45,23,195,1,27,251,80,159,47,53,38,2,17,23,202,1,28,
248,22,78,23,199,2,23,199,2,248,22,71,23,199,2,28,248,22,78,23,199, 248,22,78,23,199,2,23,199,2,248,22,71,23,199,2,28,248,22,78,23,199,
2,9,248,22,72,23,199,2,249,22,186,13,23,195,1,28,248,22,78,23,197, 2,9,248,22,72,23,199,2,249,22,186,13,23,195,1,28,248,22,78,23,197,
1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,249,22,128,7,23, 1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,249,22,128,7,23,
199,1,6,3,3,46,115,115,28,248,22,169,6,23,198,2,87,94,23,194,1, 199,1,6,3,3,46,115,115,28,248,22,169,6,23,198,2,87,94,23,194,1,
27,27,28,23,200,2,28,249,22,175,8,23,202,2,80,158,42,46,80,158,40, 27,27,28,23,200,2,28,249,22,175,8,23,202,2,80,158,43,47,80,158,41,
47,27,248,22,181,4,23,202,2,28,248,22,168,13,23,194,2,91,159,38,11, 48,27,248,22,181,4,23,202,2,28,248,22,168,13,23,194,2,91,159,39,11,
90,161,38,35,11,248,22,189,13,23,197,1,87,95,83,160,37,11,80,158,44, 90,161,39,36,11,248,22,189,13,23,197,1,87,95,83,160,38,11,80,158,45,
46,23,204,2,83,160,37,11,80,158,44,47,192,192,11,11,28,23,193,2,192, 47,23,204,2,83,160,38,11,80,158,45,48,192,192,11,11,28,23,193,2,192,
87,94,23,193,1,27,247,22,137,5,28,23,193,2,192,87,94,23,193,1,247, 87,94,23,193,1,27,247,22,137,5,28,23,193,2,192,87,94,23,193,1,247,
22,145,14,27,250,22,145,2,80,159,43,43,37,249,22,70,23,204,2,23,199, 22,145,14,27,250,22,145,2,80,159,44,44,38,249,22,70,23,204,2,23,199,
2,11,28,23,193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,35,11, 2,11,28,23,193,2,192,87,94,23,193,1,91,159,38,11,90,161,38,36,11,
248,2,47,248,2,49,23,203,2,250,22,1,22,186,13,23,199,1,249,22,84, 248,2,47,248,2,49,23,203,2,250,22,1,22,186,13,23,199,1,249,22,84,
249,22,2,32,0,89,162,8,44,36,43,9,222,33,51,23,200,1,248,22,80, 249,22,2,32,0,89,162,8,44,37,44,9,222,33,51,23,200,1,248,22,80,
23,200,1,28,248,22,168,13,23,198,2,87,94,23,194,1,28,248,22,191,13, 23,200,1,28,248,22,168,13,23,198,2,87,94,23,194,1,28,248,22,191,13,
23,198,2,23,197,2,248,22,80,6,26,26,32,40,97,32,112,97,116,104,32, 23,198,2,23,197,2,248,22,80,6,26,26,32,40,97,32,112,97,116,104,32,
109,117,115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,175, 109,117,115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,175,
8,248,22,71,23,200,2,2,25,27,250,22,145,2,80,159,42,43,37,249,22, 8,248,22,71,23,200,2,2,25,27,250,22,145,2,80,159,43,44,38,249,22,
70,23,203,2,247,22,146,14,11,28,23,193,2,192,87,94,23,193,1,91,159, 70,23,203,2,247,22,146,14,11,28,23,193,2,192,87,94,23,193,1,91,159,
38,11,90,161,37,35,11,27,248,22,95,23,203,2,248,2,52,248,2,54,23, 39,11,90,161,38,36,11,27,248,22,95,23,203,2,248,2,52,248,2,54,23,
195,1,90,161,36,37,11,28,248,22,78,248,22,97,23,203,2,28,248,22,78, 195,1,90,161,37,38,11,28,248,22,78,248,22,97,23,203,2,28,248,22,78,
23,194,2,249,22,157,14,0,8,35,114,120,34,91,46,93,34,23,196,2,11, 23,194,2,249,22,157,14,0,8,35,114,120,34,91,46,93,34,23,196,2,11,
10,27,27,28,23,197,2,249,22,84,28,248,22,78,248,22,97,23,207,2,21, 10,27,27,28,23,197,2,249,22,84,28,248,22,78,248,22,97,23,207,2,21,
93,6,5,5,109,122,108,105,98,249,22,1,22,84,249,22,2,32,0,89,162, 93,6,5,5,109,122,108,105,98,249,22,1,22,84,249,22,2,32,0,89,162,
8,44,36,43,9,222,33,58,248,22,97,23,210,2,23,197,2,28,248,22,78, 8,44,37,44,9,222,33,58,248,22,97,23,210,2,23,197,2,28,248,22,78,
23,196,2,248,22,80,23,197,2,23,195,2,251,80,159,48,52,37,2,17,23, 23,196,2,248,22,80,23,197,2,23,195,2,251,80,159,49,53,38,2,17,23,
204,1,248,22,71,23,198,2,248,22,72,23,198,1,249,22,186,13,23,195,1, 204,1,248,22,71,23,198,2,248,22,72,23,198,1,249,22,186,13,23,195,1,
28,23,198,1,87,94,23,196,1,23,197,1,28,248,22,78,23,197,1,87,94, 28,23,198,1,87,94,23,196,1,23,197,1,28,248,22,78,23,197,1,87,94,
23,197,1,6,7,7,109,97,105,110,46,115,115,28,249,22,157,14,0,8,35, 23,197,1,6,7,7,109,97,105,110,46,115,115,28,249,22,157,14,0,8,35,
114,120,34,91,46,93,34,23,199,2,23,197,1,249,22,128,7,23,199,1,6, 114,120,34,91,46,93,34,23,199,2,23,197,1,249,22,128,7,23,199,1,6,
3,3,46,115,115,28,249,22,175,8,248,22,71,23,200,2,64,102,105,108,101, 3,3,46,115,115,28,249,22,175,8,248,22,71,23,200,2,64,102,105,108,101,
249,22,129,14,248,22,133,14,248,22,95,23,201,2,27,28,23,201,2,28,249, 249,22,129,14,248,22,133,14,248,22,95,23,201,2,27,28,23,201,2,28,249,
22,175,8,23,203,2,80,158,43,46,80,158,41,47,27,248,22,181,4,23,203, 22,175,8,23,203,2,80,158,44,47,80,158,42,48,27,248,22,181,4,23,203,
2,28,248,22,168,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22,189, 2,28,248,22,168,13,23,194,2,91,159,39,11,90,161,39,36,11,248,22,189,
13,23,197,1,87,95,83,160,37,11,80,158,45,46,23,205,2,83,160,37,11, 13,23,197,1,87,95,83,160,38,11,80,158,46,47,23,205,2,83,160,38,11,
80,158,45,47,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22, 80,158,46,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,
137,5,28,23,193,2,192,87,94,23,193,1,247,22,145,14,12,87,94,28,28, 137,5,28,23,193,2,192,87,94,23,193,1,247,22,145,14,12,87,94,28,28,
248,22,168,13,23,194,2,10,248,22,191,7,23,194,2,87,94,23,199,1,12, 248,22,168,13,23,194,2,10,248,22,191,7,23,194,2,87,94,23,199,1,12,
28,23,199,2,250,22,144,9,67,114,101,113,117,105,114,101,249,22,153,7,6, 28,23,199,2,250,22,144,9,67,114,101,113,117,105,114,101,249,22,153,7,6,
@ -623,39 +623,39 @@
198,2,248,22,71,23,199,2,6,0,0,23,202,1,87,94,23,199,1,250,22, 198,2,248,22,71,23,199,2,6,0,0,23,202,1,87,94,23,199,1,250,22,
145,9,2,17,249,22,153,7,6,13,13,109,111,100,117,108,101,32,112,97,116, 145,9,2,17,249,22,153,7,6,13,13,109,111,100,117,108,101,32,112,97,116,
104,126,97,28,23,198,2,248,22,71,23,199,2,6,0,0,23,200,2,27,28, 104,126,97,28,23,198,2,248,22,71,23,199,2,6,0,0,23,200,2,27,28,
248,22,191,7,23,195,2,249,22,132,8,23,196,2,35,249,22,131,14,248,22, 248,22,191,7,23,195,2,249,22,132,8,23,196,2,36,249,22,131,14,248,22,
132,14,23,197,2,11,27,28,248,22,191,7,23,196,2,249,22,132,8,23,197, 132,14,23,197,2,11,27,28,248,22,191,7,23,196,2,249,22,132,8,23,197,
2,36,248,80,159,41,53,37,23,195,2,91,159,38,11,90,161,38,35,11,28, 2,37,248,80,159,42,54,38,23,195,2,91,159,39,11,90,161,39,36,11,28,
248,22,191,7,23,199,2,250,22,7,2,26,249,22,132,8,23,203,2,37,2, 248,22,191,7,23,199,2,250,22,7,2,26,249,22,132,8,23,203,2,38,2,
26,248,22,189,13,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22,191, 26,248,22,189,13,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22,191,
7,23,200,2,249,22,132,8,23,201,2,38,249,80,159,46,54,37,23,197,2, 7,23,200,2,249,22,132,8,23,201,2,39,249,80,159,47,55,38,23,197,2,
5,0,27,28,248,22,191,7,23,201,2,249,22,132,8,23,202,2,39,248,22, 5,0,27,28,248,22,191,7,23,201,2,249,22,132,8,23,202,2,40,248,22,
180,4,23,200,2,27,27,250,22,145,2,80,159,50,42,37,248,22,175,14,247, 180,4,23,200,2,27,27,250,22,145,2,80,159,51,43,38,248,22,175,14,247,
22,148,12,11,28,23,193,2,192,87,94,23,193,1,27,247,22,129,2,87,94, 22,148,12,11,28,23,193,2,192,87,94,23,193,1,27,247,22,129,2,87,94,
250,22,143,2,80,159,51,42,37,248,22,175,14,247,22,148,12,195,192,87,95, 250,22,143,2,80,159,52,43,38,248,22,175,14,247,22,148,12,195,192,87,95,
28,23,208,1,27,250,22,145,2,23,197,2,197,11,28,23,193,1,12,87,95, 28,23,208,1,27,250,22,145,2,23,197,2,197,11,28,23,193,1,12,87,95,
27,27,28,248,22,17,80,159,50,45,37,80,159,49,45,37,247,22,19,250,22, 27,27,28,248,22,17,80,159,51,46,38,80,159,50,46,38,247,22,19,250,22,
25,248,22,23,23,197,2,80,159,52,44,37,23,196,1,27,248,22,175,14,247, 25,248,22,23,23,197,2,80,159,53,45,38,23,196,1,27,248,22,175,14,247,
22,148,12,249,22,3,83,158,39,20,100,94,89,162,8,44,36,54,9,226,12, 22,148,12,249,22,3,83,158,40,20,100,94,89,162,8,44,37,55,9,226,12,
11,2,3,33,59,23,195,1,23,196,1,248,28,248,22,17,80,159,49,45,37, 11,2,3,33,59,23,195,1,23,196,1,248,28,248,22,17,80,159,50,46,38,
32,0,89,162,43,36,41,9,222,33,60,80,159,48,58,36,89,162,43,35,50, 32,0,89,162,44,37,42,9,222,33,60,80,159,49,59,37,89,162,44,36,51,
9,227,13,9,8,4,3,33,61,250,22,143,2,23,197,1,197,10,12,28,28, 9,227,13,9,8,4,3,33,61,250,22,143,2,23,197,1,197,10,12,28,28,
248,22,191,7,23,202,1,11,28,248,22,169,6,23,206,2,10,28,248,22,55, 248,22,191,7,23,202,1,11,28,248,22,169,6,23,206,2,10,28,248,22,55,
23,206,2,10,28,248,22,68,23,206,2,249,22,175,8,248,22,71,23,208,2, 23,206,2,10,28,248,22,68,23,206,2,249,22,175,8,248,22,71,23,208,2,
2,25,11,250,22,143,2,80,159,49,43,37,28,248,22,169,6,23,209,2,249, 2,25,11,250,22,143,2,80,159,50,44,38,28,248,22,169,6,23,209,2,249,
22,70,23,210,1,27,28,23,212,2,28,249,22,175,8,23,214,2,80,158,54, 22,70,23,210,1,27,28,23,212,2,28,249,22,175,8,23,214,2,80,158,55,
46,87,94,23,212,1,80,158,52,47,27,248,22,181,4,23,214,2,28,248,22, 47,87,94,23,212,1,80,158,53,48,27,248,22,181,4,23,214,2,28,248,22,
168,13,23,194,2,91,159,38,11,90,161,38,35,11,248,22,189,13,23,197,1, 168,13,23,194,2,91,159,39,11,90,161,39,36,11,248,22,189,13,23,197,1,
87,95,83,160,37,11,80,158,56,46,23,23,83,160,37,11,80,158,56,47,192, 87,95,83,160,38,11,80,158,57,47,23,23,83,160,38,11,80,158,57,48,192,
192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,137,5,28,23,193, 192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,137,5,28,23,193,
2,192,87,94,23,193,1,247,22,145,14,249,22,70,23,210,1,247,22,146,14, 2,192,87,94,23,193,1,247,22,145,14,249,22,70,23,210,1,247,22,146,14,
252,22,129,8,23,208,1,23,207,1,23,205,1,23,203,1,201,12,193,87,96, 252,22,129,8,23,208,1,23,207,1,23,205,1,23,203,1,201,12,193,87,96,
83,160,37,11,80,158,35,49,248,80,159,36,57,37,249,22,27,11,80,159,38, 83,160,38,11,80,158,36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,
51,37,248,22,160,4,80,159,36,50,37,248,22,136,5,80,159,36,36,36,248, 52,38,248,22,160,4,80,159,37,51,38,248,22,136,5,80,159,37,37,37,248,
22,139,13,80,159,36,41,36,83,160,37,11,80,158,35,49,248,80,159,36,57, 22,139,13,80,159,37,42,37,83,160,38,11,80,158,36,50,248,80,159,37,58,
37,249,22,27,11,80,159,38,51,37,159,35,20,105,159,35,16,1,11,16,0, 38,249,22,27,11,80,159,39,52,38,159,36,20,105,159,36,16,1,11,16,0,
83,158,41,20,103,144,66,35,37,98,111,111,116,29,11,11,11,11,11,10,37, 83,158,42,20,103,144,66,35,37,98,111,111,116,29,11,11,11,11,11,10,38,
80,158,35,35,20,105,159,36,16,23,2,1,2,2,30,2,4,72,112,97,116, 80,158,36,36,20,105,159,37,16,23,2,1,2,2,30,2,4,72,112,97,116,
104,45,115,116,114,105,110,103,63,10,30,2,4,75,112,97,116,104,45,97,100, 104,45,115,116,114,105,110,103,63,10,30,2,4,75,112,97,116,104,45,97,100,
100,45,115,117,102,102,105,120,7,30,2,6,2,7,4,30,2,6,1,23,101, 100,45,115,117,102,102,105,120,7,30,2,6,2,7,4,30,2,6,1,23,101,
120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, 120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,
@ -664,27 +664,27 @@
30,2,4,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,6, 30,2,4,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,6,
30,2,4,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102, 30,2,4,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,
105,120,9,2,19,2,20,30,2,18,74,114,101,112,97,114,97,109,101,116,101, 105,120,9,2,19,2,20,30,2,18,74,114,101,112,97,114,97,109,101,116,101,
114,105,122,101,5,16,0,16,0,35,16,0,35,16,12,2,11,2,12,2,9, 114,105,122,101,5,16,0,16,0,36,16,0,36,16,12,2,11,2,12,2,9,
2,10,2,13,2,14,2,2,2,8,2,1,2,16,2,15,2,17,47,11,11, 2,10,2,13,2,14,2,2,2,8,2,1,2,16,2,15,2,17,48,11,11,
38,35,11,11,11,16,2,2,19,2,20,16,2,11,11,16,2,2,19,2,20, 39,36,11,11,11,16,2,2,19,2,20,16,2,11,11,16,2,2,19,2,20,
37,37,36,11,11,11,16,0,16,0,16,0,35,35,11,11,11,11,16,0,16, 38,38,37,11,11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,
0,16,0,35,35,16,0,16,15,83,158,35,16,2,89,162,43,36,44,9,223, 0,16,0,36,36,16,0,16,15,83,158,36,16,2,89,162,44,37,45,9,223,
0,33,27,80,159,35,58,36,83,158,35,16,2,248,22,188,7,69,115,111,45, 0,33,27,80,159,36,59,37,83,158,36,16,2,248,22,188,7,69,115,111,45,
115,117,102,102,105,120,80,159,35,35,36,83,158,35,16,2,89,162,43,37,59, 115,117,102,102,105,120,80,159,36,36,37,83,158,36,16,2,89,162,44,38,8,
2,2,223,0,33,33,80,159,35,36,36,83,158,35,16,2,32,0,89,162,8, 24,2,2,223,0,33,33,80,159,36,37,37,83,158,36,16,2,32,0,89,162,
44,36,41,2,8,222,192,80,159,35,41,36,83,158,35,16,2,247,22,132,2, 8,44,37,42,2,8,222,192,80,159,36,42,37,83,158,36,16,2,247,22,132,
80,159,35,42,36,83,158,35,16,2,247,22,131,2,80,159,35,43,36,83,158, 2,80,159,36,43,37,83,158,36,16,2,247,22,131,2,80,159,36,44,37,83,
35,16,2,247,22,66,80,159,35,44,36,83,158,35,16,2,248,22,18,74,109, 158,36,16,2,247,22,66,80,159,36,45,37,83,158,36,16,2,248,22,18,74,
111,100,117,108,101,45,108,111,97,100,105,110,103,80,159,35,45,36,83,158,35, 109,111,100,117,108,101,45,108,111,97,100,105,110,103,80,159,36,46,37,83,158,
16,2,11,80,158,35,46,83,158,35,16,2,11,80,158,35,47,83,158,35,16, 36,16,2,11,80,158,36,47,83,158,36,16,2,11,80,158,36,48,83,158,36,
2,32,0,89,162,43,37,8,25,2,15,222,33,39,80,159,35,48,36,83,158, 16,2,32,0,89,162,44,38,8,25,2,15,222,33,39,80,159,36,49,37,83,
35,16,2,11,80,158,35,49,83,158,35,16,2,91,159,37,10,90,161,36,35, 158,36,16,2,11,80,158,36,50,83,158,36,16,2,91,159,38,10,90,161,37,
10,11,90,161,36,36,10,83,158,38,20,99,96,2,17,89,162,8,44,36,50, 36,10,11,90,161,37,37,10,83,158,39,20,99,96,2,17,89,162,8,44,37,
9,224,2,0,33,40,89,162,43,38,48,9,223,1,33,41,89,162,43,39,8, 51,9,224,2,0,33,40,89,162,44,39,49,9,223,1,33,41,89,162,44,40,
32,9,224,2,0,33,62,208,80,159,35,50,36,83,158,35,16,2,89,162,43, 8,32,9,224,2,0,33,62,208,80,159,36,51,37,83,158,36,16,2,89,162,
35,44,2,19,223,0,33,63,80,159,35,55,36,83,158,35,16,2,89,162,8, 44,36,45,2,19,223,0,33,63,80,159,36,56,37,83,158,36,16,2,89,162,
44,35,44,2,20,223,0,33,64,80,159,35,56,36,96,29,94,2,3,68,35, 8,44,36,45,2,20,223,0,33,64,80,159,36,57,37,96,29,94,2,3,68,
37,107,101,114,110,101,108,11,29,94,2,3,69,35,37,109,105,110,45,115,116, 35,37,107,101,114,110,101,108,11,29,94,2,3,69,35,37,109,105,110,45,115,
120,11,2,4,2,18,9,9,9,35,0}; 116,120,11,2,4,2,18,9,9,9,36,0};
EVAL_ONE_SIZED_STR((char *)expr, 5575); EVAL_ONE_SIZED_STR((char *)expr, 5576);
} }

View File

@ -5188,6 +5188,7 @@ static Scheme_Object *sfs_let_one(Scheme_Object *o, SFS_Info *info)
Scheme_Let_One *lo = (Scheme_Let_One *)o; Scheme_Let_One *lo = (Scheme_Let_One *)o;
Scheme_Object *body, *rhs, *vec; Scheme_Object *body, *rhs, *vec;
int pos, save_mnt, ip, et; int pos, save_mnt, ip, et;
int unused = 0;
scheme_sfs_start_sequence(info, 2, 1); scheme_sfs_start_sequence(info, 2, 1);
@ -5228,25 +5229,30 @@ static Scheme_Object *sfs_let_one(Scheme_Object *o, SFS_Info *info)
info->max_nontail = save_mnt; info->max_nontail = save_mnt;
if (info->max_used[pos] <= ip) { if (info->max_used[pos] <= ip) {
/* No one is using it, so either don't push the real value, or /* No one is using it, so don't actually push the value at run time
clear it if there's a later non-tail call. (but keep the check that the result is single-valued).
The optimizer normally would have converted away the binding, but The optimizer normally would have converted away the binding, but
it might not because (1) it was introduced late by inlining, it might not because (1) it was introduced late by inlining,
or (2) the rhs expression doesn't always produce a single or (2) the rhs expression doesn't always produce a single
value. */ value. */
if (scheme_omittable_expr(rhs, 1, -1, 1, NULL)) { if (scheme_omittable_expr(rhs, 1, -1, 1, NULL)) {
rhs = scheme_false; rhs = scheme_false;
} else if (ip < info->max_calls[pos]) { } else if ((ip < info->max_calls[pos])
Scheme_Object *clr; && SAME_TYPE(SCHEME_TYPE(rhs), scheme_toplevel_type)) {
/* Unusual case: we can't just drop the global-variable access,
because it might be undefined, but we don't need the value,
and we want to avoid an SFS clear in the interpreter loop.
So, bind #f and then access in the global in a `begin'. */
Scheme_Sequence *s; Scheme_Sequence *s;
s = malloc_sequence(2); s = malloc_sequence(2);
s->so.type = scheme_sequence_type; s->so.type = scheme_sequence_type;
s->count = 2; s->count = 2;
clr = scheme_make_local(scheme_local_type, 0, SCHEME_LOCAL_CLEAR_ON_READ); s->array[0] = rhs;
s->array[0] = clr;
s->array[1] = body; s->array[1] = body;
body = (Scheme_Object *)s; body = (Scheme_Object *)s;
rhs = scheme_false;
} }
unused = 1;
} }
} }
@ -5254,7 +5260,9 @@ static Scheme_Object *sfs_let_one(Scheme_Object *o, SFS_Info *info)
lo->body = body; lo->body = body;
et = scheme_get_eval_type(lo->value); et = scheme_get_eval_type(lo->value);
SCHEME_LET_EVAL_TYPE(lo) = (et | (SCHEME_LET_EVAL_TYPE(lo) & LET_ONE_FLONUM)); SCHEME_LET_EVAL_TYPE(lo) = (et
| (SCHEME_LET_EVAL_TYPE(lo) & LET_ONE_FLONUM)
| (unused ? LET_ONE_UNUSED : 0));
return o; return o;
} }
@ -9817,6 +9825,10 @@ scheme_do_eval(Scheme_Object *obj, int num_rands, Scheme_Object **rands,
PUSH_RUNSTACK(p, RUNSTACK, 1); PUSH_RUNSTACK(p, RUNSTACK, 1);
RUNSTACK_CHANGED(); RUNSTACK_CHANGED();
/* SFS pass may set LET_ONE_UNUSED, but not for the
variable cases; in the constant case, the constant
is #f, so it's ok to push it anyway. */
switch (SCHEME_LET_EVAL_TYPE(lo) & 0x7) { switch (SCHEME_LET_EVAL_TYPE(lo) & 0x7) {
case SCHEME_EVAL_CONSTANT: case SCHEME_EVAL_CONSTANT:
RUNSTACK[0] = lo->value; RUNSTACK[0] = lo->value;
@ -9840,7 +9852,8 @@ scheme_do_eval(Scheme_Object *obj, int num_rands, Scheme_Object **rands,
GC_CAN_IGNORE Scheme_Object *val; GC_CAN_IGNORE Scheme_Object *val;
SFS_CLEAR_RUNSTACK_ONE(RUNSTACK, 0); SFS_CLEAR_RUNSTACK_ONE(RUNSTACK, 0);
val = _scheme_eval_linked_expr_wp(lo->value, p); val = _scheme_eval_linked_expr_wp(lo->value, p);
RUNSTACK[0] = val; if (!(SCHEME_LET_EVAL_TYPE(lo) & LET_ONE_UNUSED))
RUNSTACK[0] = val;
} }
break; break;
} }
@ -12324,7 +12337,9 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr,
scheme_ill_formed_code(port); scheme_ill_formed_code(port);
#endif #endif
if (SCHEME_LET_EVAL_TYPE(lo) & LET_ONE_FLONUM) { if (SCHEME_LET_EVAL_TYPE(lo) & LET_ONE_UNUSED) {
stack[delta] = VALID_NOT;
} else if (SCHEME_LET_EVAL_TYPE(lo) & LET_ONE_FLONUM) {
stack[delta] = VALID_FLONUM; stack[delta] = VALID_FLONUM;
/* FIXME: need to check that lo->value produces a flonum */ /* FIXME: need to check that lo->value produces a flonum */
} else } else

View File

@ -10109,7 +10109,7 @@ static int generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int m
case scheme_let_one_type: case scheme_let_one_type:
{ {
Scheme_Let_One *lv = (Scheme_Let_One *)obj; Scheme_Let_One *lv = (Scheme_Let_One *)obj;
int flonum, to_unbox = 0; int flonum, to_unbox = 0, unused;
START_JIT_DATA(); START_JIT_DATA();
LOG_IT(("leto...\n")); LOG_IT(("leto...\n"));
@ -10126,6 +10126,7 @@ static int generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int m
#else #else
flonum = 0; flonum = 0;
#endif #endif
unused = SCHEME_LET_EVAL_TYPE(lv) & LET_ONE_UNUSED;
PAUSE_JIT_DATA(); PAUSE_JIT_DATA();
if (flonum) { if (flonum) {
@ -10141,15 +10142,20 @@ static int generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int m
generate_unboxed(lv->value, jitter, 1, 0); generate_unboxed(lv->value, jitter, 1, 0);
} }
#endif #endif
} else if (unused && SCHEME_FALSEP(lv->value)) {
/* unused constants are collapsed to #f by the bytecde compiler */
} else } else
generate_non_tail(lv->value, jitter, 0, 1, 0); /* no sync */ generate_non_tail(lv->value, jitter, 0, 1, unused); /* no sync */
RESUME_JIT_DATA(); RESUME_JIT_DATA();
CHECK_LIMIT(); CHECK_LIMIT();
mz_runstack_unskipped(jitter, 1); if (!unused) {
mz_runstack_unskipped(jitter, 1);
mz_rs_dec(1);
CHECK_RUNSTACK_OVERFLOW(); mz_rs_dec(1);
CHECK_RUNSTACK_OVERFLOW();
}
if (flonum) { if (flonum) {
#ifdef USE_FLONUM_UNBOXING #ifdef USE_FLONUM_UNBOXING
@ -10162,17 +10168,19 @@ static int generate(Scheme_Object *obj, mz_jit_state *jitter, int is_tail, int m
(void)jit_movi_p(JIT_R0, NULL); (void)jit_movi_p(JIT_R0, NULL);
#endif #endif
} else { } else {
mz_runstack_pushed(jitter, 1); if (!unused)
mz_runstack_pushed(jitter, 1);
} }
mz_rs_str(JIT_R0); if (!unused) {
mz_rs_str(JIT_R0);
mz_RECORD_STATUS(mz_RS_R0_HAS_RUNSTACK0);
}
END_JIT_DATA(17); END_JIT_DATA(17);
LOG_IT(("...in\n")); LOG_IT(("...in\n"));
mz_RECORD_STATUS(mz_RS_R0_HAS_RUNSTACK0);
if (to_unbox) if (to_unbox)
jitter->unbox = to_unbox; jitter->unbox = to_unbox;

View File

@ -2710,7 +2710,9 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht,
lo = (Scheme_Let_One *)obj; lo = (Scheme_Let_One *)obj;
if (SCHEME_LET_EVAL_TYPE(lo) & LET_ONE_FLONUM) if (SCHEME_LET_EVAL_TYPE(lo) & LET_ONE_UNUSED)
print_compact(pp, CPT_LET_ONE_UNUSED);
else if (SCHEME_LET_EVAL_TYPE(lo) & LET_ONE_FLONUM)
print_compact(pp, CPT_LET_ONE_FLONUM); print_compact(pp, CPT_LET_ONE_FLONUM);
else else
print_compact(pp, CPT_LET_ONE); print_compact(pp, CPT_LET_ONE);

View File

@ -4840,6 +4840,7 @@ static Scheme_Object *read_compact(CPort *port, int use_stack)
break; break;
case CPT_LET_ONE: case CPT_LET_ONE:
case CPT_LET_ONE_FLONUM: case CPT_LET_ONE_FLONUM:
case CPT_LET_ONE_UNUSED:
{ {
Scheme_Let_One *lo; Scheme_Let_One *lo;
int et; int et;
@ -4854,6 +4855,8 @@ static Scheme_Object *read_compact(CPort *port, int use_stack)
et = scheme_get_eval_type(lo->value); et = scheme_get_eval_type(lo->value);
if (ch == CPT_LET_ONE_FLONUM) if (ch == CPT_LET_ONE_FLONUM)
et |= LET_ONE_FLONUM; et |= LET_ONE_FLONUM;
if (ch == CPT_LET_ONE_UNUSED)
et |= LET_ONE_UNUSED;
SCHEME_LET_EVAL_TYPE(lo) = et; SCHEME_LET_EVAL_TYPE(lo) = et;
return (Scheme_Object *)lo; return (Scheme_Object *)lo;

View File

@ -35,10 +35,11 @@ enum {
CPT_CLOSURE, CPT_CLOSURE,
CPT_DELAY_REF, CPT_DELAY_REF,
CPT_PREFAB, CPT_PREFAB,
CPT_LET_ONE_UNUSED,
_CPT_COUNT_ _CPT_COUNT_
}; };
#define CPT_SMALL_NUMBER_START 35 #define CPT_SMALL_NUMBER_START 36
#define CPT_SMALL_NUMBER_END 60 #define CPT_SMALL_NUMBER_END 60
#define CPT_SMALL_SYMBOL_START 60 #define CPT_SMALL_SYMBOL_START 60

View File

@ -1134,13 +1134,14 @@ typedef struct Scheme_Let_Value {
#define SCHEME_LET_AUTOBOX(lh) MZ_OPT_HASH_KEY(&lh->iso) #define SCHEME_LET_AUTOBOX(lh) MZ_OPT_HASH_KEY(&lh->iso)
typedef struct Scheme_Let_One { typedef struct Scheme_Let_One {
Scheme_Inclhash_Object iso; /* keyex used for eval_type + flonum (and can't be hashed) */ Scheme_Inclhash_Object iso; /* keyex used for eval_type + flonum/unused (and can't be hashed) */
Scheme_Object *value; Scheme_Object *value;
Scheme_Object *body; Scheme_Object *body;
} Scheme_Let_One; } Scheme_Let_One;
#define SCHEME_LET_EVAL_TYPE(lh) MZ_OPT_HASH_KEY(&lh->iso) #define SCHEME_LET_EVAL_TYPE(lh) MZ_OPT_HASH_KEY(&lh->iso)
#define LET_ONE_FLONUM 0x8 #define LET_ONE_FLONUM 0x8
#define LET_ONE_UNUSED 0x10
typedef struct Scheme_Let_Void { typedef struct Scheme_Let_Void {
Scheme_Inclhash_Object iso; /* keyex used for autobox */ Scheme_Inclhash_Object iso; /* keyex used for autobox */

View File

@ -13,12 +13,12 @@
consistently.) consistently.)
*/ */
#define MZSCHEME_VERSION "4.2.5.5" #define MZSCHEME_VERSION "4.2.5.6"
#define MZSCHEME_VERSION_X 4 #define MZSCHEME_VERSION_X 4
#define MZSCHEME_VERSION_Y 2 #define MZSCHEME_VERSION_Y 2
#define MZSCHEME_VERSION_Z 5 #define MZSCHEME_VERSION_Z 5
#define MZSCHEME_VERSION_W 5 #define MZSCHEME_VERSION_W 6
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)

View File

@ -2547,11 +2547,14 @@ Scheme_Object *scheme_struct_to_vector(Scheme_Object *_s, Scheme_Object *unknown
m++; m++;
last_is_unknown = 1; last_is_unknown = 1;
} else { } else {
last_is_unknown = 0; int count;
if (p) if (p)
m += stype->num_slots - stype->parent_types[p-1]->num_slots; count = stype->num_slots - stype->parent_types[p-1]->num_slots;
else else
m += stype->num_slots; count = stype->num_slots;
m += count;
if (count)
last_is_unknown = 0;
} }
} }
@ -2581,6 +2584,8 @@ Scheme_Object *scheme_struct_to_vector(Scheme_Object *_s, Scheme_Object *unknown
i -= n; i -= n;
last_is_unknown = 1; last_is_unknown = 1;
} else { } else {
if (n)
last_is_unknown = 0;
while (n--) { while (n--) {
--i; --i;
if (SAME_OBJ((Scheme_Object *)s, _s)) if (SAME_OBJ((Scheme_Object *)s, _s))
@ -2589,7 +2594,6 @@ Scheme_Object *scheme_struct_to_vector(Scheme_Object *_s, Scheme_Object *unknown
elem = scheme_struct_ref(_s, i); elem = scheme_struct_ref(_s, i);
array[1 + (--m)] = elem; array[1 + (--m)] = elem;
} }
last_is_unknown = 0;
} }
} }