make-syntax-delta-introducer and adjusted binding in scheme/unit forms

svn: r12032
This commit is contained in:
Matthew Flatt 2008-10-14 13:27:43 +00:00
parent 62cfa88381
commit 8b595ed120
8 changed files with 403 additions and 280 deletions

View File

@ -9,18 +9,18 @@
(require scheme/private/define-struct)
(provide (struct var-info (syntax? exported? id))
(struct signature (siginfo vars val-defs stx-defs))
(struct signature (siginfo vars val-defs stx-defs orig-binder))
(rename build-siginfo make-siginfo)
siginfo-names siginfo-ctime-ids siginfo-rtime-ids siginfo-subtype
(struct signature-form (f))
(struct unit-info (unit-id import-sig-ids export-sig-ids))
(struct unit-info (unit-id import-sig-ids export-sig-ids orig-binder))
(struct link-record (linkid tag sigid siginfo))
unprocess-link-record-bind unprocess-link-record-use
set!-trans-extract do-identifier
process-tagged-import process-tagged-export
lookup-signature lookup-def-unit make-id-mapper make-id-mappers sig-names sig-int-names sig-ext-names
map-sig split-requires apply-mac complete-exports complete-imports check-duplicate-subs
process-spec process-spec2)
process-spec)
(define-syntax (apply-mac stx)
(syntax-case stx ()
@ -101,8 +101,9 @@
;; (make-signature siginfo
;; (listof identifier)
;; (listof (cons (listof identifier) syntax-object))
;; (listof (cons (listof identifier) syntax-object)))
(define-struct/proc signature (siginfo vars val-defs stx-defs)
;; (listof (cons (listof identifier) syntax-object))
;; identifier)
(define-struct/proc signature (siginfo vars val-defs stx-defs orig-binder)
(lambda (_ stx)
(parameterize ((error-syntax stx))
(raise-stx-err "illegal use of signature name"))))
@ -113,8 +114,8 @@
(parameterize ((error-syntax stx))
(raise-stx-err "illegal use of signature form"))))
;; (make-unit-info identifier (listof (cons symbol identifier)) (listof (cons symbol identifier)))
(define-struct/proc unit-info (unit-id import-sig-ids export-sig-ids deps)
;; (make-unit-info identifier (listof (cons symbol identifier)) (listof (cons symbol identifier)) identifier)
(define-struct/proc unit-info (unit-id import-sig-ids export-sig-ids deps orig-binder)
(lambda (struct stx)
(with-syntax ((u (unit-info-unit-id struct)))
(syntax-case stx (set!)
@ -223,13 +224,22 @@
sig)))
;; do-identifier : identifier (box (cons identifier siginfo)) -> sig
(define (do-identifier spec res)
(define (do-identifier spec res bind?)
(let* ((sig (lookup-signature spec))
(vars (signature-vars sig))
(vals (signature-val-defs sig))
(stxs (signature-stx-defs sig)))
(stxs (signature-stx-defs sig))
(delta-introduce (if bind?
(let ([f (make-syntax-delta-introducer
spec
(signature-orig-binder sig))])
(lambda (id) (syntax-local-introduce (f id))))
values)))
(set-box! res (cons spec (signature-siginfo sig)))
(map-sig intro-o-shadow
(map-sig (lambda (id)
(syntax-local-introduce
(syntax-local-get-shadower
(delta-introduce id))))
syntax-local-introduce
(list (map cons vars vars)
(map
@ -257,10 +267,6 @@
(define (sig-ext-names sig)
(map cdr (sig-names sig)))
;; intro-o-shadow : identifier -> identifier
(define (intro-o-shadow id)
(syntax-local-introduce (syntax-local-get-shadower id)))
;; map-def : (identifier -> identifier) (syntax-object -> syntax-object) def -> def
(define (map-def f g def)
(cons (map (lambda (x)
@ -297,46 +303,46 @@
;; process-tagged-import/export : syntax-object boolean -> tagged-sig
(define (process-tagged-import/export spec import?)
(define (process-tagged-import/export spec import? bind?)
(define res (box #f))
(check-tagged-spec-syntax spec import? identifier?)
(syntax-case spec (tag)
((tag sym spec)
(let ([s (process-import/export #'spec res)])
(let ([s (process-import/export #'spec res bind?)])
(list (cons (syntax-e #'sym) (cdr (unbox res)))
(cons (syntax-e #'sym) (car (unbox res)))
s)))
((tag . _)
(raise-stx-err "expected (tag symbol <import/export-spec>)" spec))
(_ (let ([s (process-import/export spec res)])
(_ (let ([s (process-import/export spec res bind?)])
(list (cons #f (cdr (unbox res)))
(cons #f (car (unbox res)))
s)))))
;; process-import/export : syntax-object (box (cons identifier) siginfo) -> sig
(define (process-import/export spec res)
(define (process-import/export spec res bind?)
(syntax-case spec (only except prefix rename)
(_
(identifier? spec)
(do-identifier spec res))
(do-identifier spec res bind?))
((only sub-spec id ...)
(do-only/except (process-import/export #'sub-spec res)
(do-only/except (process-import/export #'sub-spec res bind?)
(syntax->list #'(id ...))
(lambda (x) x)
(lambda (id)
(car (generate-temporaries #`(#,id))))))
((except sub-spec id ...)
(do-only/except (process-import/export #'sub-spec res)
(do-only/except (process-import/export #'sub-spec res bind?)
(syntax->list #'(id ...))
(lambda (id)
(car (generate-temporaries #`(#,id))))
(lambda (x) x)))
((prefix pid sub-spec)
(do-prefix (process-import/export #'sub-spec res) #'pid))
(do-prefix (process-import/export #'sub-spec res bind?) #'pid))
((rename sub-spec (internal external) ...)
(let* ((sig-res
(do-rename (process-import/export #'sub-spec res)
(do-rename (process-import/export #'sub-spec res bind?)
#'(internal ...)
#'(external ...)))
(dup (check-duplicate-identifier (sig-int-names sig-res))))
@ -347,21 +353,14 @@
sig-res))))
(define (process-tagged-import spec)
(process-tagged-import/export spec #t))
(process-tagged-import/export spec #t #t))
(define (process-tagged-export spec)
(process-tagged-import/export spec #f))
(process-tagged-import/export spec #f #f))
;; process-spec : syntax-object -> sig
(define (process-spec spec)
(check-tagged-spec-syntax spec #f identifier?)
(process-import/export spec (box #f)))
;; process-spec2 : syntax-object -> identifier?
(define (process-spec2 spec)
(define b (box #f))
(check-tagged-spec-syntax spec #t identifier?)
(process-import/export spec b)
(car (unbox b)))
(process-import/export spec (box #f) #t))
; ;; extract-siginfo : (union import-spec export-spec) -> ???

View File

@ -221,7 +221,8 @@
(list (cons (list (quote-syntax sid) ...)
((syntax-local-certifier)
(quote-syntax sbody)))
...))))))))
...)
(quote-syntax #,sigid))))))))
(else
(syntax-case (car sig-exprs) (define-values define-syntaxes)
(x
@ -1274,7 +1275,8 @@
(make-unit-info ((syntax-local-certifier) (quote-syntax u))
(list (cons 'itag (quote-syntax isig)) ...)
(list (cons 'etag (quote-syntax esig)) ...)
(list (cons 'deptag (quote-syntax deptag)) ...))))))))))
(list (cons 'deptag (quote-syntax deptag)) ...)
(quote-syntax name))))))))))
((_)
(raise-stx-err err-msg))))
@ -1356,9 +1358,12 @@
(define-syntax/err-param (define-values/invoke-unit/infer stx)
(syntax-case stx ()
((_ u)
(let ((ui (lookup-def-unit #'u)))
(with-syntax (((sig ...) (map unprocess-tagged-id (unit-info-export-sig-ids ui)))
((isig ...) (map unprocess-tagged-id (unit-info-import-sig-ids ui))))
(let* ((ui (lookup-def-unit #'u))
(unprocess (let ([i (make-syntax-delta-introducer #'u (unit-info-orig-binder ui))])
(lambda (p)
(unprocess-tagged-id (cons (car p) (i (cdr p))))))))
(with-syntax (((sig ...) (map unprocess (unit-info-export-sig-ids ui)))
((isig ...) (map unprocess (unit-info-import-sig-ids ui))))
(quasisyntax/loc stx
(define-values/invoke-unit u (import isig ...) (export sig ...))))))
((_)
@ -1437,19 +1442,23 @@
s))
(apply make-link-record l))
(define (process-tagged-sigid sid)
(make-link-record (car sid) #f (cdr sid) (signature-siginfo (lookup-signature (cdr sid)))))
(define ((process-tagged-sigid introducer) sid)
(make-link-record (car sid) #f (introducer (cdr sid)) (signature-siginfo (lookup-signature (cdr sid)))))
(syntax-case stx ()
(((import ...)
(export ...)
(((out ...) u l ...) ...))
(let* ([units (map lookup-def-unit (syntax->list #'(u ...)))]
(let* ([us (syntax->list #'(u ...))]
[units (map lookup-def-unit us)]
[import-sigs (map process-signature
(syntax->list #'(import ...)))]
[sig-introducers (map (lambda (unit u)
(make-syntax-delta-introducer u (unit-info-orig-binder unit)))
units us)]
[sub-outs
(map
(lambda (outs unit)
(lambda (outs unit sig-introducer)
(define o
(map
(lambda (clause)
@ -1457,10 +1466,11 @@
(make-link-record (car c) (cadr c) (cddr c)
(signature-siginfo (lookup-signature (cddr c)))))
(syntax->list outs)))
(complete-exports (map process-tagged-sigid (unit-info-export-sig-ids unit))
(complete-exports (map (process-tagged-sigid sig-introducer) (unit-info-export-sig-ids unit))
o))
(syntax->list #'((out ...) ...))
units)]
units
sig-introducers)]
[link-defs (append import-sigs (apply append sub-outs))])
(define lnk-table (make-bound-identifier-mapping))
@ -1486,7 +1496,7 @@
(let ([sub-ins
(map
(lambda (ins unit unit-stx)
(lambda (ins unit sig-introducer unit-stx)
(define is (syntax->list ins))
(define lrs
(map
@ -1510,12 +1520,13 @@
is)
(complete-imports sig-table
lrs
(map process-tagged-sigid
(map (process-tagged-sigid sig-introducer)
(unit-info-import-sig-ids unit))
unit-stx))
(syntax->list #'((l ...) ...))
units
(syntax->list #'(u ...)))]
sig-introducers
us)]
[exports
(map
(lambda (e)

View File

@ -440,6 +440,20 @@ mark}. Multiple applications of the same
@scheme[make-syntax-introducer] result procedure use the same mark,
and different result procedures use distinct marks.}
@defproc[(make-syntax-delta-introducer [ext-stx syntax?] [base-stx syntax?])
(syntax? . -> . syntax?)]{
Produces a procedure that behaves like
@scheme[syntax-local-introduce], but using the @tech{syntax
marks} of @scheme[ext-stx] that are not shared with @scheme[base-stx].
This procedure is useful when @scheme[_m-id] has a transformer binding
that records some @scheme[_orig-id], and a use of @scheme[_m-id]
introduces a binding of @scheme[_orig-id]. In that case, the
@tech{syntax marks} in the use of @scheme[_m-id] since the binding of
@scheme[_m-id] should be transferred to the binding instance of
@scheme[_orig-id], so that it captures uses with the same lexical
context as the use of @scheme[_m-id].}
@defproc[(syntax-local-transforming-module-provides?) boolean?]{

View File

@ -1640,3 +1640,40 @@
(define x 19))
(test '(3 4 19 18)
(invoke-unit (compound-unit/infer (import) (export) (link u2 u1)))))
(define-signature sig^ (u-a))
(define unit@
(unit
(import)
(export sig^)
(define u-a 'zero)))
(define-syntax (use-unit stx)
(syntax-case stx ()
[(_)
#'(let ()
(define-values/invoke-unit unit@ (import) (export sig^))
u-a)]))
(define-syntax (use-unit-badly1 stx)
(syntax-case stx ()
[(_ u-a)
#'(let ()
(define-values/invoke-unit unit@ (import) (export sig^))
u-a)]))
(define-syntax (use-unit-badly2 stx)
(syntax-case stx ()
[(_ sig^)
#'(let ()
(define-values/invoke-unit unit@ (import) (export sig^))
u-a)]))
(test 'zero (use-unit))
(test-runtime-error exn:fail:contract:variable? "context mismatch; no u-a"
(use-unit-badly1 u-a))
(test-runtime-error exn:fail:contract:variable? "context mismatch; no u-a"
(use-unit-badly2 sig^))

View File

@ -1,5 +1,5 @@
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,50,50,0,0,0,1,0,0,6,0,9,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,51,50,0,0,0,1,0,0,6,0,9,0,
13,0,26,0,29,0,34,0,41,0,46,0,51,0,58,0,65,0,69,0,78,
0,84,0,98,0,112,0,115,0,119,0,121,0,132,0,134,0,148,0,155,0,
177,0,179,0,193,0,253,0,23,1,32,1,41,1,51,1,68,1,107,1,146,
@ -59,10 +59,10 @@
115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,74,2,20,9,248,22,
65,203,27,248,22,65,248,22,132,4,23,197,1,28,248,22,71,23,194,2,20,
15,159,36,35,36,249,22,189,3,80,158,38,35,27,248,22,132,4,248,22,64,
23,198,2,28,249,22,160,8,62,61,62,248,22,190,3,248,22,88,23,197,2,
23,198,2,28,249,22,161,8,62,61,62,248,22,190,3,248,22,88,23,197,2,
250,22,73,2,20,248,22,73,249,22,73,21,93,2,25,248,22,64,199,250,22,
74,2,8,249,22,73,2,25,249,22,73,248,22,97,203,2,25,248,22,65,202,
251,22,73,2,17,28,249,22,160,8,248,22,190,3,248,22,64,23,201,2,64,
251,22,73,2,17,28,249,22,161,8,248,22,190,3,248,22,64,23,201,2,64,
101,108,115,101,10,248,22,64,23,198,2,250,22,74,2,20,9,248,22,65,23,
201,1,249,22,63,2,8,248,22,65,23,203,1,99,8,31,8,30,8,29,8,
28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,57,57,56,50,16,4,
@ -99,7 +99,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 2032);
}
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,50,60,0,0,0,1,0,0,3,0,16,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,51,60,0,0,0,1,0,0,3,0,16,0,
21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169,0,200,
0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1,112,1,
157,1,202,1,226,1,9,2,11,2,68,2,158,3,199,3,33,5,137,5,241,
@ -131,177 +131,177 @@
111,114,32,98,121,116,101,32,115,116,114,105,110,103,6,36,36,99,97,110,110,
111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116,111,32,97,32,
114,111,111,116,32,112,97,116,104,58,32,5,0,27,20,14,159,80,158,36,50,
250,80,158,39,51,249,22,27,11,80,158,41,50,22,176,12,10,248,22,153,5,
23,196,2,28,248,22,150,6,23,194,2,12,87,94,248,22,163,8,23,194,1,
250,80,158,39,51,249,22,27,11,80,158,41,50,22,177,12,10,248,22,154,5,
23,196,2,28,248,22,151,6,23,194,2,12,87,94,248,22,164,8,23,194,1,
248,80,159,37,53,36,195,28,248,22,71,23,195,2,9,27,248,22,64,23,196,
2,27,28,248,22,157,13,23,195,2,23,194,1,28,248,22,156,13,23,195,2,
249,22,158,13,23,196,1,250,80,158,42,48,248,22,172,13,2,20,11,10,250,
80,158,40,48,248,22,172,13,2,20,23,197,1,10,28,23,193,2,249,22,63,
248,22,160,13,249,22,158,13,23,198,1,247,22,173,13,27,248,22,65,23,200,
1,28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,22,157,
13,23,195,2,23,194,1,28,248,22,156,13,23,195,2,249,22,158,13,23,196,
1,250,80,158,47,48,248,22,172,13,2,20,11,10,250,80,158,45,48,248,22,
172,13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,160,13,249,22,
158,13,23,198,1,247,22,173,13,248,80,159,45,52,36,248,22,65,23,199,1,
2,27,28,248,22,158,13,23,195,2,23,194,1,28,248,22,157,13,23,195,2,
249,22,159,13,23,196,1,250,80,158,42,48,248,22,173,13,2,20,11,10,250,
80,158,40,48,248,22,173,13,2,20,23,197,1,10,28,23,193,2,249,22,63,
248,22,161,13,249,22,159,13,23,198,1,247,22,174,13,27,248,22,65,23,200,
1,28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,22,158,
13,23,195,2,23,194,1,28,248,22,157,13,23,195,2,249,22,159,13,23,196,
1,250,80,158,47,48,248,22,173,13,2,20,11,10,250,80,158,45,48,248,22,
173,13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,161,13,249,22,
159,13,23,198,1,247,22,174,13,248,80,159,45,52,36,248,22,65,23,199,1,
87,94,23,193,1,248,80,159,43,52,36,248,22,65,23,197,1,87,94,23,193,
1,27,248,22,65,23,198,1,28,248,22,71,23,194,2,9,27,248,22,64,23,
195,2,27,28,248,22,157,13,23,195,2,23,194,1,28,248,22,156,13,23,195,
2,249,22,158,13,23,196,1,250,80,158,45,48,248,22,172,13,2,20,11,10,
250,80,158,43,48,248,22,172,13,2,20,23,197,1,10,28,23,193,2,249,22,
63,248,22,160,13,249,22,158,13,23,198,1,247,22,173,13,248,80,159,43,52,
36,248,22,65,23,199,1,248,80,159,41,52,36,248,22,65,196,27,248,22,133,
13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,155,6,23,195,
2,27,248,22,155,13,195,28,192,192,248,22,156,13,195,11,87,94,28,28,248,
22,134,13,23,195,2,10,27,248,22,133,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11,12,250,22,190,
195,2,27,28,248,22,158,13,23,195,2,23,194,1,28,248,22,157,13,23,195,
2,249,22,159,13,23,196,1,250,80,158,45,48,248,22,173,13,2,20,11,10,
250,80,158,43,48,248,22,173,13,2,20,23,197,1,10,28,23,193,2,249,22,
63,248,22,161,13,249,22,159,13,23,198,1,247,22,174,13,248,80,159,43,52,
36,248,22,65,23,199,1,248,80,159,41,52,36,248,22,65,196,27,248,22,134,
13,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,156,6,23,195,
2,27,248,22,156,13,195,28,192,192,248,22,157,13,195,11,87,94,28,28,248,
22,135,13,23,195,2,10,27,248,22,134,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,12,250,22,191,
8,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,42,42,
112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109,41,
32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,
23,197,2,28,28,248,22,134,13,23,195,2,249,22,160,8,248,22,135,13,23,
197,2,2,21,249,22,160,8,247,22,174,7,2,21,27,28,248,22,155,6,23,
196,2,23,195,2,248,22,164,7,248,22,138,13,23,197,2,28,249,22,185,13,
23,197,2,28,28,248,22,135,13,23,195,2,249,22,161,8,248,22,136,13,23,
197,2,2,21,249,22,161,8,247,22,175,7,2,21,27,28,248,22,156,6,23,
196,2,23,195,2,248,22,165,7,248,22,139,13,23,197,2,28,249,22,186,13,
0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,
93,34,23,195,2,28,248,22,155,6,195,248,22,141,13,195,194,27,248,22,130,
7,23,195,1,249,22,142,13,248,22,167,7,250,22,191,13,0,6,35,114,120,
34,47,34,28,249,22,185,13,0,22,35,114,120,34,91,47,92,92,93,91,46,
32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,191,13,
93,34,23,195,2,28,248,22,156,6,195,248,22,142,13,195,194,27,248,22,131,
7,23,195,1,249,22,143,13,248,22,168,7,250,22,128,14,0,6,35,114,120,
34,47,34,28,249,22,186,13,0,22,35,114,120,34,91,47,92,92,93,91,46,
32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,128,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,6,2,2,92,49,80,158,43,36,2,21,28,248,22,155,6,194,248,
22,141,13,194,193,87,94,28,27,248,22,133,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11,12,250,22,
190,8,23,196,2,2,22,23,197,2,28,248,22,155,13,23,195,2,12,248,22,
152,11,249,22,161,10,248,22,184,6,250,22,139,7,2,23,23,200,1,23,201,
1,247,22,23,87,94,28,27,248,22,133,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11,12,250,22,190,
8,23,196,2,2,22,23,197,2,28,248,22,155,13,23,195,2,12,248,22,152,
11,249,22,161,10,248,22,184,6,250,22,139,7,2,23,23,200,1,23,201,1,
247,22,23,87,94,87,94,28,27,248,22,133,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11,12,250,22,
190,8,195,2,22,23,197,2,28,248,22,155,13,23,195,2,12,248,22,152,11,
249,22,161,10,248,22,184,6,250,22,139,7,2,23,199,23,201,1,247,22,23,
249,22,3,89,162,8,44,36,49,9,223,2,33,34,196,248,22,152,11,249,22,
191,10,23,196,1,247,22,23,87,94,250,80,159,38,39,36,2,7,196,197,251,
23,202,1,6,2,2,92,49,80,158,43,36,2,21,28,248,22,156,6,194,248,
22,142,13,194,193,87,94,28,27,248,22,134,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,12,250,22,
191,8,23,196,2,2,22,23,197,2,28,248,22,156,13,23,195,2,12,248,22,
153,11,249,22,162,10,248,22,185,6,250,22,140,7,2,23,23,200,1,23,201,
1,247,22,23,87,94,28,27,248,22,134,13,23,196,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,23,197,2,28,
23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,12,250,22,191,
8,23,196,2,2,22,23,197,2,28,248,22,156,13,23,195,2,12,248,22,153,
11,249,22,162,10,248,22,185,6,250,22,140,7,2,23,23,200,1,23,201,1,
247,22,23,87,94,87,94,28,27,248,22,134,13,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,12,250,22,
191,8,195,2,22,23,197,2,28,248,22,156,13,23,195,2,12,248,22,153,11,
249,22,162,10,248,22,185,6,250,22,140,7,2,23,199,23,201,1,247,22,23,
249,22,3,89,162,8,44,36,49,9,223,2,33,34,196,248,22,153,11,249,22,
128,11,23,196,1,247,22,23,87,94,250,80,159,38,39,36,2,7,196,197,251,
80,159,39,41,36,2,7,32,0,89,162,8,44,36,44,9,222,33,36,197,198,
32,38,89,162,43,41,58,65,99,108,111,111,112,222,33,39,28,248,22,71,23,
199,2,87,94,23,198,1,248,23,196,1,251,22,139,7,2,24,23,199,1,28,
248,22,71,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,151,13,23,
204,1,23,205,1,23,198,1,27,249,22,151,13,248,22,64,23,202,2,23,199,
2,28,248,22,146,13,23,194,2,27,250,22,1,22,151,13,23,197,1,23,202,
2,28,248,22,146,13,23,194,2,192,87,94,23,193,1,27,248,22,65,23,202,
1,28,248,22,71,23,194,2,87,94,23,193,1,248,23,199,1,251,22,139,7,
199,2,87,94,23,198,1,248,23,196,1,251,22,140,7,2,24,23,199,1,28,
248,22,71,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,152,13,23,
204,1,23,205,1,23,198,1,27,249,22,152,13,248,22,64,23,202,2,23,199,
2,28,248,22,147,13,23,194,2,27,250,22,1,22,152,13,23,197,1,23,202,
2,28,248,22,147,13,23,194,2,192,87,94,23,193,1,27,248,22,65,23,202,
1,28,248,22,71,23,194,2,87,94,23,193,1,248,23,199,1,251,22,140,7,
2,24,23,202,1,28,248,22,71,23,206,2,87,94,23,205,1,23,204,1,250,
22,1,22,151,13,23,207,1,23,208,1,23,201,1,27,249,22,151,13,248,22,
64,23,197,2,23,202,2,28,248,22,146,13,23,194,2,27,250,22,1,22,151,
13,23,197,1,204,28,248,22,146,13,193,192,253,2,38,203,204,205,206,23,15,
22,1,22,152,13,23,207,1,23,208,1,23,201,1,27,249,22,152,13,248,22,
64,23,197,2,23,202,2,28,248,22,147,13,23,194,2,27,250,22,1,22,152,
13,23,197,1,204,28,248,22,147,13,193,192,253,2,38,203,204,205,206,23,15,
248,22,65,201,253,2,38,202,203,204,205,206,248,22,65,200,87,94,23,193,1,
27,248,22,65,23,201,1,28,248,22,71,23,194,2,87,94,23,193,1,248,23,
198,1,251,22,139,7,2,24,23,201,1,28,248,22,71,23,205,2,87,94,23,
204,1,23,203,1,250,22,1,22,151,13,23,206,1,23,207,1,23,200,1,27,
249,22,151,13,248,22,64,23,197,2,23,201,2,28,248,22,146,13,23,194,2,
27,250,22,1,22,151,13,23,197,1,203,28,248,22,146,13,193,192,253,2,38,
198,1,251,22,140,7,2,24,23,201,1,28,248,22,71,23,205,2,87,94,23,
204,1,23,203,1,250,22,1,22,152,13,23,206,1,23,207,1,23,200,1,27,
249,22,152,13,248,22,64,23,197,2,23,201,2,28,248,22,147,13,23,194,2,
27,250,22,1,22,152,13,23,197,1,203,28,248,22,147,13,193,192,253,2,38,
202,203,204,205,206,248,22,65,201,253,2,38,201,202,203,204,205,248,22,65,200,
27,247,22,174,13,253,2,38,198,199,200,201,202,198,87,95,28,28,248,22,134,
13,23,194,2,10,27,248,22,133,13,23,195,2,28,23,193,2,192,87,94,23,
193,1,28,248,22,155,6,23,195,2,27,248,22,155,13,23,196,2,28,23,193,
2,192,87,94,23,193,1,248,22,156,13,23,196,2,11,12,252,22,190,8,23,
200,2,2,25,35,23,198,2,23,199,2,28,28,248,22,155,6,23,195,2,10,
248,22,143,7,23,195,2,87,94,23,194,1,12,252,22,190,8,23,200,2,2,
26,36,23,198,2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,154,13,
23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,191,8,23,201,1,2,
27,247,22,175,13,253,2,38,198,199,200,201,202,198,87,95,28,28,248,22,135,
13,23,194,2,10,27,248,22,134,13,23,195,2,28,23,193,2,192,87,94,23,
193,1,28,248,22,156,6,23,195,2,27,248,22,156,13,23,196,2,28,23,193,
2,192,87,94,23,193,1,248,22,157,13,23,196,2,11,12,252,22,191,8,23,
200,2,2,25,35,23,198,2,23,199,2,28,28,248,22,156,6,23,195,2,10,
248,22,144,7,23,195,2,87,94,23,194,1,12,252,22,191,8,23,200,2,2,
26,36,23,198,2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,155,13,
23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,128,9,23,201,1,2,
27,23,199,1,249,22,7,194,195,91,159,37,11,90,161,37,35,11,87,95,28,
28,248,22,134,13,23,196,2,10,27,248,22,133,13,23,197,2,28,23,193,2,
192,87,94,23,193,1,28,248,22,155,6,23,197,2,27,248,22,155,13,23,198,
2,28,23,193,2,192,87,94,23,193,1,248,22,156,13,23,198,2,11,12,252,
22,190,8,2,10,2,25,35,23,200,2,23,201,2,28,28,248,22,155,6,23,
197,2,10,248,22,143,7,23,197,2,12,252,22,190,8,2,10,2,26,36,23,
200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,154,13,23,199,2,
87,94,23,195,1,87,94,28,23,193,2,12,250,22,191,8,2,10,2,27,23,
201,2,249,22,7,23,195,1,23,196,1,27,249,22,143,13,250,22,190,13,0,
28,248,22,135,13,23,196,2,10,27,248,22,134,13,23,197,2,28,23,193,2,
192,87,94,23,193,1,28,248,22,156,6,23,197,2,27,248,22,156,13,23,198,
2,28,23,193,2,192,87,94,23,193,1,248,22,157,13,23,198,2,11,12,252,
22,191,8,2,10,2,25,35,23,200,2,23,201,2,28,28,248,22,156,6,23,
197,2,10,248,22,144,7,23,197,2,12,252,22,191,8,2,10,2,26,36,23,
200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,155,13,23,199,2,
87,94,23,195,1,87,94,28,23,193,2,12,250,22,128,9,2,10,2,27,23,
201,2,249,22,7,23,195,1,23,196,1,27,249,22,144,13,250,22,191,13,0,
18,35,114,120,35,34,40,91,46,93,91,94,46,93,42,124,41,36,34,248,22,
139,13,23,201,1,28,248,22,155,6,23,203,2,249,22,167,7,23,204,1,8,
63,23,202,1,28,248,22,134,13,23,199,2,248,22,135,13,23,199,1,87,94,
23,198,1,247,22,136,13,28,248,22,133,13,194,249,22,151,13,195,194,192,91,
159,37,11,90,161,37,35,11,87,95,28,28,248,22,134,13,23,196,2,10,27,
248,22,133,13,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,155,
6,23,197,2,27,248,22,155,13,23,198,2,28,23,193,2,192,87,94,23,193,
1,248,22,156,13,23,198,2,11,12,252,22,190,8,2,11,2,25,35,23,200,
2,23,201,2,28,28,248,22,155,6,23,197,2,10,248,22,143,7,23,197,2,
12,252,22,190,8,2,11,2,26,36,23,200,2,23,201,2,91,159,38,11,90,
161,38,35,11,248,22,154,13,23,199,2,87,94,23,195,1,87,94,28,23,193,
2,12,250,22,191,8,2,11,2,27,23,201,2,249,22,7,23,195,1,23,196,
1,27,249,22,143,13,249,22,153,7,250,22,191,13,0,9,35,114,120,35,34,
91,46,93,34,248,22,139,13,23,203,1,6,1,1,95,28,248,22,155,6,23,
202,2,249,22,167,7,23,203,1,8,63,23,201,1,28,248,22,134,13,23,199,
2,248,22,135,13,23,199,1,87,94,23,198,1,247,22,136,13,28,248,22,133,
13,194,249,22,151,13,195,194,192,249,247,22,186,4,194,11,249,80,158,37,46,
9,9,249,80,158,37,46,195,9,27,247,22,176,13,249,80,158,38,47,28,23,
195,2,27,248,22,172,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,151,13,248,22,172,
13,69,97,100,100,111,110,45,100,105,114,247,22,170,7,6,8,8,99,111,108,
140,13,23,201,1,28,248,22,156,6,23,203,2,249,22,168,7,23,204,1,8,
63,23,202,1,28,248,22,135,13,23,199,2,248,22,136,13,23,199,1,87,94,
23,198,1,247,22,137,13,28,248,22,134,13,194,249,22,152,13,195,194,192,91,
159,37,11,90,161,37,35,11,87,95,28,28,248,22,135,13,23,196,2,10,27,
248,22,134,13,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,156,
6,23,197,2,27,248,22,156,13,23,198,2,28,23,193,2,192,87,94,23,193,
1,248,22,157,13,23,198,2,11,12,252,22,191,8,2,11,2,25,35,23,200,
2,23,201,2,28,28,248,22,156,6,23,197,2,10,248,22,144,7,23,197,2,
12,252,22,191,8,2,11,2,26,36,23,200,2,23,201,2,91,159,38,11,90,
161,38,35,11,248,22,155,13,23,199,2,87,94,23,195,1,87,94,28,23,193,
2,12,250,22,128,9,2,11,2,27,23,201,2,249,22,7,23,195,1,23,196,
1,27,249,22,144,13,249,22,154,7,250,22,128,14,0,9,35,114,120,35,34,
91,46,93,34,248,22,140,13,23,203,1,6,1,1,95,28,248,22,156,6,23,
202,2,249,22,168,7,23,203,1,8,63,23,201,1,28,248,22,135,13,23,199,
2,248,22,136,13,23,199,1,87,94,23,198,1,247,22,137,13,28,248,22,134,
13,194,249,22,152,13,195,194,192,249,247,22,187,4,194,11,249,80,158,37,46,
9,9,249,80,158,37,46,195,9,27,247,22,177,13,249,80,158,38,47,28,23,
195,2,27,248,22,173,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,152,13,248,22,173,
13,69,97,100,100,111,110,45,100,105,114,247,22,171,7,6,8,8,99,111,108,
108,101,99,116,115,11,27,248,80,159,41,52,36,250,22,77,23,203,1,248,22,
73,248,22,172,13,72,99,111,108,108,101,99,116,115,45,100,105,114,23,204,1,
73,248,22,173,13,72,99,111,108,108,101,99,116,115,45,100,105,114,23,204,1,
28,23,194,2,249,22,63,23,196,1,23,195,1,192,32,48,89,162,8,44,38,
54,2,19,222,33,49,27,249,22,183,13,23,197,2,23,198,2,28,23,193,2,
54,2,19,222,33,49,27,249,22,184,13,23,197,2,23,198,2,28,23,193,2,
87,94,23,196,1,27,248,22,88,23,195,2,27,27,248,22,97,23,197,1,27,
249,22,183,13,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,
249,22,184,13,23,201,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,
22,88,23,195,2,27,250,2,48,23,203,2,23,204,1,248,22,97,23,199,1,
28,249,22,149,7,23,196,2,2,28,249,22,77,23,202,2,194,249,22,63,248,
22,142,13,23,197,1,23,195,1,87,95,23,199,1,23,193,1,28,249,22,149,
7,23,196,2,2,28,249,22,77,23,200,2,9,249,22,63,248,22,142,13,23,
197,1,9,28,249,22,149,7,23,196,2,2,28,249,22,77,197,194,87,94,23,
196,1,249,22,63,248,22,142,13,23,197,1,194,87,94,23,193,1,28,249,22,
149,7,23,198,2,2,28,249,22,77,195,9,87,94,23,194,1,249,22,63,248,
22,142,13,23,199,1,9,87,95,28,28,248,22,143,7,194,10,248,22,155,6,
194,12,250,22,190,8,2,14,6,21,21,98,121,116,101,32,115,116,114,105,110,
28,249,22,150,7,23,196,2,2,28,249,22,77,23,202,2,194,249,22,63,248,
22,143,13,23,197,1,23,195,1,87,95,23,199,1,23,193,1,28,249,22,150,
7,23,196,2,2,28,249,22,77,23,200,2,9,249,22,63,248,22,143,13,23,
197,1,9,28,249,22,150,7,23,196,2,2,28,249,22,77,197,194,87,94,23,
196,1,249,22,63,248,22,143,13,23,197,1,194,87,94,23,193,1,28,249,22,
150,7,23,198,2,2,28,249,22,77,195,9,87,94,23,194,1,249,22,63,248,
22,143,13,23,199,1,9,87,95,28,28,248,22,144,7,194,10,248,22,156,6,
194,12,250,22,191,8,2,14,6,21,21,98,121,116,101,32,115,116,114,105,110,
103,32,111,114,32,115,116,114,105,110,103,196,28,28,248,22,72,195,249,22,4,
22,133,13,196,11,12,250,22,190,8,2,14,6,13,13,108,105,115,116,32,111,
102,32,112,97,116,104,115,197,250,2,48,197,195,28,248,22,155,6,197,248,22,
166,7,197,196,32,51,89,162,8,44,39,57,2,19,222,33,54,32,52,89,162,
22,134,13,196,11,12,250,22,191,8,2,14,6,13,13,108,105,115,116,32,111,
102,32,112,97,116,104,115,197,250,2,48,197,195,28,248,22,156,6,197,248,22,
167,7,197,196,32,51,89,162,8,44,39,57,2,19,222,33,54,32,52,89,162,
8,44,38,54,70,102,111,117,110,100,45,101,120,101,99,222,33,53,28,23,193,
2,91,159,38,11,90,161,38,35,11,248,22,154,13,23,199,2,87,95,23,195,
1,23,194,1,27,28,23,198,2,27,248,22,159,13,23,201,2,28,249,22,162,
8,23,195,2,23,202,2,11,28,248,22,155,13,23,194,2,250,2,52,23,201,
2,23,202,2,249,22,151,13,23,200,2,23,198,1,250,2,52,23,201,2,23,
202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,133,
13,23,196,2,27,249,22,151,13,23,198,2,23,201,2,28,28,248,22,146,13,
193,10,248,22,145,13,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,
23,199,2,11,27,248,22,159,13,23,202,2,28,249,22,162,8,23,195,2,23,
203,1,11,28,248,22,155,13,23,194,2,250,2,52,23,202,1,23,203,1,249,
22,151,13,23,201,1,23,198,1,250,2,52,201,202,195,194,28,248,22,71,23,
197,2,11,27,248,22,158,13,248,22,64,23,199,2,27,249,22,151,13,23,196,
1,23,197,2,28,248,22,145,13,23,194,2,250,2,52,198,199,195,87,94,23,
193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2,11,27,248,22,158,
13,248,22,64,23,196,2,27,249,22,151,13,23,196,1,23,200,2,28,248,22,
145,13,23,194,2,250,2,52,201,202,195,87,94,23,193,1,27,248,22,65,23,
197,1,28,248,22,71,23,194,2,11,27,248,22,158,13,248,22,64,195,27,249,
22,151,13,23,196,1,202,28,248,22,145,13,193,250,2,52,204,205,195,251,2,
51,204,205,206,248,22,65,199,87,95,28,27,248,22,133,13,23,196,2,28,23,
193,2,192,87,94,23,193,1,28,248,22,155,6,23,196,2,27,248,22,155,13,
23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,156,13,23,197,2,11,
12,250,22,190,8,2,15,6,25,25,112,97,116,104,32,111,114,32,115,116,114,
2,91,159,38,11,90,161,38,35,11,248,22,155,13,23,199,2,87,95,23,195,
1,23,194,1,27,28,23,198,2,27,248,22,160,13,23,201,2,28,249,22,163,
8,23,195,2,23,202,2,11,28,248,22,156,13,23,194,2,250,2,52,23,201,
2,23,202,2,249,22,152,13,23,200,2,23,198,1,250,2,52,23,201,2,23,
202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,28,248,22,134,
13,23,196,2,27,249,22,152,13,23,198,2,23,201,2,28,28,248,22,147,13,
193,10,248,22,146,13,193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,
23,199,2,11,27,248,22,160,13,23,202,2,28,249,22,163,8,23,195,2,23,
203,1,11,28,248,22,156,13,23,194,2,250,2,52,23,202,1,23,203,1,249,
22,152,13,23,201,1,23,198,1,250,2,52,201,202,195,194,28,248,22,71,23,
197,2,11,27,248,22,159,13,248,22,64,23,199,2,27,249,22,152,13,23,196,
1,23,197,2,28,248,22,146,13,23,194,2,250,2,52,198,199,195,87,94,23,
193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2,11,27,248,22,159,
13,248,22,64,23,196,2,27,249,22,152,13,23,196,1,23,200,2,28,248,22,
146,13,23,194,2,250,2,52,201,202,195,87,94,23,193,1,27,248,22,65,23,
197,1,28,248,22,71,23,194,2,11,27,248,22,159,13,248,22,64,195,27,249,
22,152,13,23,196,1,202,28,248,22,146,13,193,250,2,52,204,205,195,251,2,
51,204,205,206,248,22,65,199,87,95,28,27,248,22,134,13,23,196,2,28,23,
193,2,192,87,94,23,193,1,28,248,22,156,6,23,196,2,27,248,22,156,13,
23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,157,13,23,197,2,11,
12,250,22,191,8,2,15,6,25,25,112,97,116,104,32,111,114,32,115,116,114,
105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197,2,28,28,23,195,
2,28,27,248,22,133,13,23,197,2,28,23,193,2,192,87,94,23,193,1,28,
248,22,155,6,23,197,2,27,248,22,155,13,23,198,2,28,23,193,2,192,87,
94,23,193,1,248,22,156,13,23,198,2,11,248,22,155,13,23,196,2,11,10,
12,250,22,190,8,2,15,6,29,29,35,102,32,111,114,32,114,101,108,97,116,
2,28,27,248,22,134,13,23,197,2,28,23,193,2,192,87,94,23,193,1,28,
248,22,156,6,23,197,2,27,248,22,156,13,23,198,2,28,23,193,2,192,87,
94,23,193,1,248,22,157,13,23,198,2,11,248,22,156,13,23,196,2,11,10,
12,250,22,191,8,2,15,6,29,29,35,102,32,111,114,32,114,101,108,97,116,
105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,23,198,2,
28,28,248,22,155,13,23,195,2,91,159,38,11,90,161,38,35,11,248,22,154,
13,23,198,2,249,22,160,8,194,68,114,101,108,97,116,105,118,101,11,27,248,
22,172,7,6,4,4,80,65,84,72,251,2,51,23,199,1,23,200,1,23,201,
1,28,23,197,2,27,249,80,158,43,47,23,200,1,9,28,249,22,160,8,247,
22,174,7,2,21,249,22,63,248,22,142,13,5,1,46,23,195,1,192,9,27,
248,22,158,13,23,196,1,28,248,22,145,13,193,250,2,52,198,199,195,11,250,
80,158,38,48,196,197,11,250,80,158,38,48,196,11,11,87,94,249,22,146,6,
247,22,182,4,195,248,22,172,5,249,22,169,3,35,249,22,153,3,197,198,27,
28,28,248,22,156,13,23,195,2,91,159,38,11,90,161,38,35,11,248,22,155,
13,23,198,2,249,22,161,8,194,68,114,101,108,97,116,105,118,101,11,27,248,
22,173,7,6,4,4,80,65,84,72,251,2,51,23,199,1,23,200,1,23,201,
1,28,23,197,2,27,249,80,158,43,47,23,200,1,9,28,249,22,161,8,247,
22,175,7,2,21,249,22,63,248,22,143,13,5,1,46,23,195,1,192,9,27,
248,22,159,13,23,196,1,28,248,22,146,13,193,250,2,52,198,199,195,11,250,
80,158,38,48,196,197,11,250,80,158,38,48,196,11,11,87,94,249,22,147,6,
247,22,183,4,195,248,22,173,5,249,22,169,3,35,249,22,153,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,172,13,2,20,27,249,80,158,40,48,23,196,1,11,27,27,248,22,172,
248,22,173,13,2,20,27,249,80,158,40,48,23,196,1,11,27,27,248,22,172,
3,23,200,1,28,192,192,35,27,27,248,22,172,3,23,202,1,28,192,192,35,
249,22,149,5,23,197,1,83,158,39,20,97,95,89,162,8,44,35,47,9,224,
3,2,33,58,23,195,1,23,196,1,27,248,22,134,5,23,195,1,248,80,159,
249,22,150,5,23,197,1,83,158,39,20,97,95,89,162,8,44,35,47,9,224,
3,2,33,58,23,195,1,23,196,1,27,248,22,135,5,23,195,1,248,80,159,
38,53,36,193,159,35,20,103,159,35,16,1,65,98,101,103,105,110,16,0,83,
158,41,20,100,138,67,35,37,117,116,105,108,115,2,1,11,11,10,10,42,80,
158,35,35,20,103,159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,
@ -319,7 +319,7 @@
0,16,0,16,0,35,35,16,0,16,17,83,158,35,16,2,89,162,43,36,48,
2,19,223,0,33,29,80,159,35,53,36,83,158,35,16,2,89,162,8,44,36,
55,2,19,223,0,33,30,80,159,35,52,36,83,158,35,16,2,32,0,89,162,
43,36,44,2,2,222,33,31,80,159,35,35,36,83,158,35,16,2,249,22,157,
43,36,44,2,2,222,33,31,80,159,35,35,36,83,158,35,16,2,249,22,158,
6,7,92,7,92,80,159,35,36,36,83,158,35,16,2,89,162,43,36,53,2,
4,223,0,33,32,80,159,35,37,36,83,158,35,16,2,32,0,89,162,8,44,
37,49,2,5,222,33,33,80,159,35,38,36,83,158,35,16,2,32,0,89,162,
@ -332,8 +332,8 @@
35,16,2,32,0,89,162,43,36,43,2,12,222,33,44,80,159,35,45,36,83,
158,35,16,2,83,158,38,20,96,96,2,13,89,162,43,35,43,9,223,0,33,
45,89,162,43,36,44,9,223,0,33,46,89,162,43,37,54,9,223,0,33,47,
80,159,35,46,36,83,158,35,16,2,27,248,22,179,13,248,22,166,7,27,28,
249,22,160,8,247,22,174,7,2,21,6,1,1,59,6,1,1,58,250,22,139,
80,159,35,46,36,83,158,35,16,2,27,248,22,180,13,248,22,167,7,27,28,
249,22,161,8,247,22,175,7,2,21,6,1,1,59,6,1,1,58,250,22,140,
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,14,223,0,33,50,80,159,35,47,36,83,
158,35,16,2,83,158,38,20,96,96,2,15,89,162,8,44,38,53,9,223,0,
@ -344,7 +344,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 5080);
}
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,50,8,0,0,0,1,0,0,6,0,19,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,51,8,0,0,0,1,0,0,6,0,19,0,
34,0,48,0,62,0,76,0,111,0,0,0,255,0,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,
110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122,
@ -361,7 +361,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 292);
}
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,50,52,0,0,0,1,0,0,3,0,14,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,52,46,49,46,49,46,51,52,0,0,0,1,0,0,3,0,14,0,
41,0,47,0,60,0,74,0,96,0,122,0,134,0,152,0,172,0,184,0,200,
0,223,0,3,1,8,1,13,1,18,1,23,1,54,1,58,1,66,1,74,1,
82,1,185,1,230,1,250,1,29,2,64,2,98,2,108,2,155,2,165,2,172,
@ -383,31 +383,31 @@
64,108,111,111,112,1,29,115,116,97,110,100,97,114,100,45,109,111,100,117,108,
101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,63,108,105,98,67,105,
103,110,111,114,101,100,249,22,14,195,80,158,37,45,249,80,159,37,48,36,195,
10,27,28,23,195,2,28,249,22,160,8,23,197,2,80,158,38,46,87,94,23,
195,1,80,158,36,47,27,248,22,169,4,23,197,2,28,248,22,133,13,23,194,
2,91,159,38,11,90,161,38,35,11,248,22,154,13,23,197,1,87,95,83,160,
10,27,28,23,195,2,28,249,22,161,8,23,197,2,80,158,38,46,87,94,23,
195,1,80,158,36,47,27,248,22,170,4,23,197,2,28,248,22,134,13,23,194,
2,91,159,38,11,90,161,38,35,11,248,22,155,13,23,197,1,87,95,83,160,
37,11,80,158,40,46,198,83,160,37,11,80,158,40,47,192,192,11,11,28,23,
193,2,192,87,94,23,193,1,27,247,22,187,4,28,192,192,247,22,173,13,20,
14,159,80,158,35,39,250,80,158,38,40,249,22,27,11,80,158,40,39,22,187,
4,28,248,22,133,13,23,198,2,23,197,1,87,94,23,197,1,247,22,173,13,
247,194,250,22,151,13,23,197,1,23,199,1,249,80,158,42,38,23,198,1,2,
18,252,22,151,13,23,199,1,23,201,1,6,6,6,110,97,116,105,118,101,247,
22,175,7,249,80,158,44,38,23,200,1,80,158,44,35,87,94,23,194,1,27,
23,194,1,27,250,22,168,13,196,11,32,0,89,162,8,44,35,40,9,222,11,
28,192,249,22,63,195,194,11,27,248,23,195,1,23,196,1,27,250,22,168,13,
193,2,192,87,94,23,193,1,27,247,22,188,4,28,192,192,247,22,174,13,20,
14,159,80,158,35,39,250,80,158,38,40,249,22,27,11,80,158,40,39,22,188,
4,28,248,22,134,13,23,198,2,23,197,1,87,94,23,197,1,247,22,174,13,
247,194,250,22,152,13,23,197,1,23,199,1,249,80,158,42,38,23,198,1,2,
18,252,22,152,13,23,199,1,23,201,1,6,6,6,110,97,116,105,118,101,247,
22,176,7,249,80,158,44,38,23,200,1,80,158,44,35,87,94,23,194,1,27,
23,194,1,27,250,22,169,13,196,11,32,0,89,162,8,44,35,40,9,222,11,
28,192,249,22,63,195,194,11,27,248,23,195,1,23,196,1,27,250,22,169,13,
196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,63,195,194,11,
249,247,22,178,13,248,22,64,195,195,27,250,22,151,13,23,198,1,23,200,1,
249,80,158,43,38,23,199,1,2,18,27,250,22,168,13,196,11,32,0,89,162,
8,44,35,40,9,222,11,28,192,249,22,63,195,194,11,249,247,22,185,4,248,
22,64,195,195,249,247,22,185,4,194,195,87,94,28,248,80,158,36,37,23,195,
2,12,250,22,190,8,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,
249,247,22,179,13,248,22,64,195,195,27,250,22,152,13,23,198,1,23,200,1,
249,80,158,43,38,23,199,1,2,18,27,250,22,169,13,196,11,32,0,89,162,
8,44,35,40,9,222,11,28,192,249,22,63,195,194,11,249,247,22,186,4,248,
22,64,195,195,249,247,22,186,4,194,195,87,94,28,248,80,158,36,37,23,195,
2,12,250,22,191,8,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,
108,101,100,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,
97,116,104,32,115,116,114,105,110,103,23,197,2,91,159,41,11,90,161,36,35,
11,28,248,22,157,13,23,201,2,23,200,1,27,247,22,187,4,28,23,193,2,
249,22,158,13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,154,13,23,
194,2,87,94,23,196,1,90,161,36,39,11,28,249,22,160,8,23,196,2,68,
11,28,248,22,158,13,23,201,2,23,200,1,27,247,22,188,4,28,23,193,2,
249,22,159,13,23,203,1,23,195,1,200,90,161,38,36,11,248,22,155,13,23,
194,2,87,94,23,196,1,90,161,36,39,11,28,249,22,161,8,23,196,2,68,
114,101,108,97,116,105,118,101,87,94,23,194,1,2,17,23,194,1,90,161,36,
40,11,247,22,175,13,27,89,162,43,36,49,62,122,111,225,7,5,3,33,27,
40,11,247,22,176,13,27,89,162,43,36,49,62,122,111,225,7,5,3,33,27,
27,89,162,43,36,51,9,225,8,6,4,33,28,27,249,22,5,89,162,8,44,
36,47,9,223,5,33,29,23,203,2,27,28,23,195,2,27,249,22,5,83,158,
39,20,97,94,89,162,8,44,36,47,9,223,5,33,30,23,198,1,23,205,2,
@ -420,11 +420,11 @@
199,193,11,11,11,11,28,192,249,80,159,48,54,36,203,89,162,43,35,45,9,
224,15,2,33,33,249,80,159,48,54,36,203,89,162,43,35,44,9,224,15,7,
33,34,32,36,89,162,8,44,36,54,2,19,222,33,38,0,17,35,114,120,34,
94,40,46,42,63,41,47,40,46,42,41,36,34,27,249,22,183,13,2,37,23,
94,40,46,42,63,41,47,40,46,42,41,36,34,27,249,22,184,13,2,37,23,
196,2,28,23,193,2,87,94,23,194,1,249,22,63,248,22,88,23,196,2,27,
248,22,97,23,197,1,27,249,22,183,13,2,37,23,196,2,28,23,193,2,87,
248,22,97,23,197,1,27,249,22,184,13,2,37,23,196,2,28,23,193,2,87,
94,23,194,1,249,22,63,248,22,88,23,196,2,27,248,22,97,23,197,1,27,
249,22,183,13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63,
249,22,184,13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63,
248,22,88,23,196,2,248,2,36,248,22,97,23,197,1,248,22,73,194,248,22,
73,194,248,22,73,194,32,39,89,162,43,36,54,2,19,222,33,40,28,248,22,
71,248,22,65,23,195,2,249,22,7,9,248,22,64,195,91,159,37,11,90,161,
@ -435,96 +435,96 @@
249,22,7,249,22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,
249,22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63,
248,22,64,23,200,1,23,197,1,195,27,248,2,36,23,195,1,28,194,192,248,
2,39,193,87,95,28,248,22,167,4,195,12,250,22,190,8,2,20,6,20,20,
2,39,193,87,95,28,248,22,168,4,195,12,250,22,191,8,2,20,6,20,20,
114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,197,
28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,137,2,
80,158,41,42,248,22,139,14,247,22,180,11,11,28,23,193,2,192,87,94,23,
193,1,27,247,22,121,87,94,250,22,135,2,80,158,42,42,248,22,139,14,247,
22,180,11,195,192,250,22,135,2,195,198,66,97,116,116,97,99,104,251,211,197,
198,199,10,28,192,250,22,189,8,11,196,195,248,22,187,8,194,28,249,22,161,
6,194,6,1,1,46,2,17,28,249,22,161,6,194,6,2,2,46,46,62,117,
112,192,28,249,22,162,8,248,22,65,23,200,2,23,197,1,28,249,22,160,8,
248,22,64,23,200,2,23,196,1,251,22,187,8,2,20,6,26,26,99,121,99,
80,158,41,42,248,22,140,14,247,22,181,11,11,28,23,193,2,192,87,94,23,
193,1,27,247,22,121,87,94,250,22,135,2,80,158,42,42,248,22,140,14,247,
22,181,11,195,192,250,22,135,2,195,198,66,97,116,116,97,99,104,251,211,197,
198,199,10,28,192,250,22,190,8,11,196,195,248,22,188,8,194,28,249,22,162,
6,194,6,1,1,46,2,17,28,249,22,162,6,194,6,2,2,46,46,62,117,
112,192,28,249,22,163,8,248,22,65,23,200,2,23,197,1,28,249,22,161,8,
248,22,64,23,200,2,23,196,1,251,22,188,8,2,20,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,65,248,22,78,249,22,63,23,206,1,23,202,
1,12,12,247,192,20,14,159,80,158,39,44,249,22,63,247,22,180,11,23,197,
1,12,12,247,192,20,14,159,80,158,39,44,249,22,63,247,22,181,11,23,197,
1,20,14,159,80,158,39,39,250,80,158,42,40,249,22,27,11,80,158,44,39,
22,149,4,23,196,1,249,247,22,186,4,23,198,1,248,22,52,248,22,137,13,
23,198,1,87,94,28,28,248,22,133,13,23,197,2,10,248,22,173,4,23,197,
2,12,28,23,198,2,250,22,189,8,11,6,15,15,98,97,100,32,109,111,100,
117,108,101,32,112,97,116,104,23,201,2,250,22,190,8,2,20,6,19,19,109,
22,150,4,23,196,1,249,247,22,187,4,23,198,1,248,22,52,248,22,138,13,
23,198,1,87,94,28,28,248,22,134,13,23,197,2,10,248,22,174,4,23,197,
2,12,28,23,198,2,250,22,190,8,11,6,15,15,98,97,100,32,109,111,100,
117,108,101,32,112,97,116,104,23,201,2,250,22,191,8,2,20,6,19,19,109,
111,100,117,108,101,45,112,97,116,104,32,111,114,32,112,97,116,104,23,199,2,
28,28,248,22,61,23,197,2,249,22,160,8,248,22,64,23,199,2,2,4,11,
248,22,168,4,248,22,88,197,28,28,248,22,61,23,197,2,249,22,160,8,248,
28,28,248,22,61,23,197,2,249,22,161,8,248,22,64,23,199,2,2,4,11,
248,22,169,4,248,22,88,197,28,28,248,22,61,23,197,2,249,22,161,8,248,
22,64,23,199,2,66,112,108,97,110,101,116,11,87,94,28,207,12,20,14,159,
80,158,37,39,250,80,158,40,40,249,22,27,11,80,158,42,39,22,180,11,23,
197,1,90,161,36,35,10,249,22,150,4,21,94,2,21,6,18,18,112,108,97,
80,158,37,39,250,80,158,40,40,249,22,27,11,80,158,42,39,22,181,11,23,
197,1,90,161,36,35,10,249,22,151,4,21,94,2,21,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,
101,116,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,
101,114,12,251,211,199,200,201,202,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,101,114,114,223,
6,33,44,27,28,248,22,51,23,199,2,27,250,22,137,2,80,158,43,43,249,
22,63,23,204,2,247,22,174,13,11,28,23,193,2,192,87,94,23,193,1,91,
22,63,23,204,2,247,22,175,13,11,28,23,193,2,192,87,94,23,193,1,91,
159,37,11,90,161,37,35,11,249,80,159,44,48,36,248,22,54,23,204,2,11,
27,251,80,158,47,50,2,20,23,202,1,28,248,22,71,23,199,2,23,199,2,
248,22,64,23,199,2,28,248,22,71,23,199,2,9,248,22,65,23,199,2,249,
22,151,13,23,195,1,28,248,22,71,23,197,1,87,94,23,197,1,6,7,7,
109,97,105,110,46,115,115,249,22,178,6,23,199,1,6,3,3,46,115,115,28,
248,22,155,6,23,199,2,87,94,23,194,1,27,248,80,159,41,55,36,23,201,
22,152,13,23,195,1,28,248,22,71,23,197,1,87,94,23,197,1,6,7,7,
109,97,105,110,46,115,115,249,22,179,6,23,199,1,6,3,3,46,115,115,28,
248,22,156,6,23,199,2,87,94,23,194,1,27,248,80,159,41,55,36,23,201,
2,27,250,22,137,2,80,158,44,43,249,22,63,23,205,2,23,199,2,11,28,
23,193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,35,11,249,80,159,
45,48,36,23,204,2,11,250,22,1,22,151,13,23,199,1,249,22,77,249,22,
45,48,36,23,204,2,11,250,22,1,22,152,13,23,199,1,249,22,77,249,22,
2,32,0,89,162,8,44,36,43,9,222,33,45,23,200,1,248,22,73,23,200,
1,28,248,22,133,13,23,199,2,87,94,23,194,1,28,248,22,156,13,23,199,
1,28,248,22,134,13,23,199,2,87,94,23,194,1,28,248,22,157,13,23,199,
2,23,198,2,248,22,73,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,160,8,248,
115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22,161,8,248,
22,64,23,201,2,2,21,27,250,22,137,2,80,158,43,43,249,22,63,23,204,
2,247,22,174,13,11,28,23,193,2,192,87,94,23,193,1,91,159,38,11,90,
2,247,22,175,13,11,28,23,193,2,192,87,94,23,193,1,91,159,38,11,90,
161,37,35,11,249,80,159,45,48,36,248,22,88,23,205,2,11,90,161,36,37,
11,28,248,22,71,248,22,90,23,204,2,28,248,22,71,23,194,2,249,22,185,
11,28,248,22,71,248,22,90,23,204,2,28,248,22,71,23,194,2,249,22,186,
13,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,27,27,28,23,197,
2,249,22,77,28,248,22,71,248,22,90,23,208,2,21,93,6,5,5,109,122,
108,105,98,249,22,1,22,77,249,22,2,80,159,51,56,36,248,22,90,23,211,
2,23,197,2,28,248,22,71,23,196,2,248,22,73,23,197,2,23,195,2,251,
80,158,49,50,2,20,23,204,1,248,22,64,23,198,2,248,22,65,23,198,1,
249,22,151,13,23,195,1,28,23,198,1,87,94,23,196,1,23,197,1,28,248,
249,22,152,13,23,195,1,28,23,198,1,87,94,23,196,1,23,197,1,28,248,
22,71,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,28,
249,22,185,13,0,8,35,114,120,34,91,46,93,34,23,199,2,23,197,1,249,
22,178,6,23,199,1,6,3,3,46,115,115,28,249,22,160,8,248,22,64,23,
201,2,64,102,105,108,101,249,22,158,13,248,22,162,13,248,22,88,23,202,2,
248,80,159,42,55,36,23,202,2,12,87,94,28,28,248,22,133,13,23,194,2,
10,248,22,177,7,23,194,2,87,94,23,200,1,12,28,23,200,2,250,22,189,
8,67,114,101,113,117,105,114,101,249,22,139,7,6,17,17,98,97,100,32,109,
249,22,186,13,0,8,35,114,120,34,91,46,93,34,23,199,2,23,197,1,249,
22,179,6,23,199,1,6,3,3,46,115,115,28,249,22,161,8,248,22,64,23,
201,2,64,102,105,108,101,249,22,159,13,248,22,163,13,248,22,88,23,202,2,
248,80,159,42,55,36,23,202,2,12,87,94,28,28,248,22,134,13,23,194,2,
10,248,22,178,7,23,194,2,87,94,23,200,1,12,28,23,200,2,250,22,190,
8,67,114,101,113,117,105,114,101,249,22,140,7,6,17,17,98,97,100,32,109,
111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,64,23,199,
2,6,0,0,23,203,1,87,94,23,200,1,250,22,190,8,2,20,249,22,139,
2,6,0,0,23,203,1,87,94,23,200,1,250,22,191,8,2,20,249,22,140,
7,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,
248,22,64,23,199,2,6,0,0,23,201,2,27,28,248,22,177,7,23,195,2,
249,22,182,7,23,196,2,35,249,22,160,13,248,22,161,13,23,197,2,11,27,
28,248,22,177,7,23,196,2,249,22,182,7,23,197,2,36,248,80,158,42,51,
23,195,2,91,159,38,11,90,161,38,35,11,28,248,22,177,7,23,199,2,250,
22,7,2,22,249,22,182,7,23,203,2,37,2,22,248,22,154,13,23,198,2,
87,95,23,195,1,23,193,1,27,28,248,22,177,7,23,200,2,249,22,182,7,
23,201,2,38,249,80,158,47,52,23,197,2,5,0,27,28,248,22,177,7,23,
201,2,249,22,182,7,23,202,2,39,248,22,168,4,23,200,2,27,27,250,22,
137,2,80,158,51,42,248,22,139,14,247,22,180,11,11,28,23,193,2,192,87,
94,23,193,1,27,247,22,121,87,94,250,22,135,2,80,158,52,42,248,22,139,
14,247,22,180,11,195,192,87,95,28,23,209,1,27,250,22,137,2,23,197,2,
248,22,64,23,199,2,6,0,0,23,201,2,27,28,248,22,178,7,23,195,2,
249,22,183,7,23,196,2,35,249,22,161,13,248,22,162,13,23,197,2,11,27,
28,248,22,178,7,23,196,2,249,22,183,7,23,197,2,36,248,80,158,42,51,
23,195,2,91,159,38,11,90,161,38,35,11,28,248,22,178,7,23,199,2,250,
22,7,2,22,249,22,183,7,23,203,2,37,2,22,248,22,155,13,23,198,2,
87,95,23,195,1,23,193,1,27,28,248,22,178,7,23,200,2,249,22,183,7,
23,201,2,38,249,80,158,47,52,23,197,2,5,0,27,28,248,22,178,7,23,
201,2,249,22,183,7,23,202,2,39,248,22,169,4,23,200,2,27,27,250,22,
137,2,80,158,51,42,248,22,140,14,247,22,181,11,11,28,23,193,2,192,87,
94,23,193,1,27,247,22,121,87,94,250,22,135,2,80,158,52,42,248,22,140,
14,247,22,181,11,195,192,87,95,28,23,209,1,27,250,22,137,2,23,197,2,
197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,158,51,45,80,158,
50,45,247,22,19,250,22,25,248,22,23,23,197,2,80,158,53,44,23,196,1,
27,247,22,180,11,249,22,3,83,158,39,20,97,94,89,162,8,44,36,54,9,
27,247,22,181,11,249,22,3,83,158,39,20,97,94,89,162,8,44,36,54,9,
226,12,11,2,3,33,46,23,195,1,23,196,1,248,28,248,22,17,80,158,50,
45,32,0,89,162,43,36,41,9,222,33,47,80,159,49,57,36,89,162,43,35,
50,9,227,14,9,8,4,3,33,48,250,22,135,2,23,197,1,197,10,12,28,
28,248,22,177,7,23,202,1,11,27,248,22,155,6,23,208,2,28,192,192,28,
248,22,61,23,208,2,249,22,160,8,248,22,64,23,210,2,2,21,11,250,22,
135,2,80,158,50,43,28,248,22,155,6,23,210,2,249,22,63,23,211,1,248,
28,248,22,178,7,23,202,1,11,27,248,22,156,6,23,208,2,28,192,192,28,
248,22,61,23,208,2,249,22,161,8,248,22,64,23,210,2,2,21,11,250,22,
135,2,80,158,50,43,28,248,22,156,6,23,210,2,249,22,63,23,211,1,248,
80,159,53,55,36,23,213,1,87,94,23,210,1,249,22,63,23,211,1,247,22,
174,13,252,22,179,7,23,208,1,23,207,1,23,205,1,23,203,1,201,12,193,
175,13,252,22,180,7,23,208,1,23,207,1,23,205,1,23,203,1,201,12,193,
91,159,37,10,90,161,36,35,10,11,90,161,36,36,10,83,158,38,20,96,96,
2,20,89,162,8,44,36,50,9,224,2,0,33,42,89,162,43,38,48,9,223,
1,33,43,89,162,43,39,8,30,9,225,2,3,0,33,49,208,87,95,248,22,
148,4,248,80,158,37,49,247,22,180,11,248,22,186,4,80,158,36,36,248,22,
171,12,80,159,36,41,36,159,35,20,103,159,35,16,1,65,98,101,103,105,110,
149,4,248,80,158,37,49,247,22,181,11,248,22,187,4,80,158,36,36,248,22,
172,12,80,159,36,41,36,159,35,20,103,159,35,16,1,65,98,101,103,105,110,
16,0,83,158,41,20,100,138,66,35,37,98,111,111,116,2,1,11,11,10,10,
36,80,158,35,35,20,103,159,39,16,19,30,2,1,2,2,193,30,2,1,2,
3,193,30,2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,10,30,2,
@ -545,7 +545,7 @@
44,9,223,0,33,24,80,159,35,56,36,83,158,35,16,2,89,162,43,36,48,
67,103,101,116,45,100,105,114,223,0,33,25,80,159,35,55,36,83,158,35,16,
2,89,162,43,37,48,68,119,105,116,104,45,100,105,114,223,0,33,26,80,159,
35,54,36,83,158,35,16,2,248,22,174,7,69,115,111,45,115,117,102,102,105,
35,54,36,83,158,35,16,2,248,22,175,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,2,3,223,0,33,
35,80,159,35,36,36,83,158,35,16,2,32,0,89,162,8,44,36,41,2,7,
222,192,80,159,35,41,36,83,158,35,16,2,247,22,124,80,159,35,42,36,83,

View File

@ -13,7 +13,7 @@
#define USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 935
#define EXPECTED_PRIM_COUNT 936
#ifdef MZSCHEME_SOMETHING_OMITTED
# undef USE_COMPILED_STARTUP

View File

@ -13,12 +13,12 @@
consistently.)
*/
#define MZSCHEME_VERSION "4.1.1.2"
#define MZSCHEME_VERSION "4.1.1.3"
#define MZSCHEME_VERSION_X 4
#define MZSCHEME_VERSION_Y 1
#define MZSCHEME_VERSION_Z 1
#define MZSCHEME_VERSION_W 2
#define MZSCHEME_VERSION_W 3
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)

View File

@ -55,6 +55,7 @@ static Scheme_Object *syntax_original_p(int argc, Scheme_Object **argv);
static Scheme_Object *syntax_property(int argc, Scheme_Object **argv);
static Scheme_Object *syntax_property_keys(int argc, Scheme_Object **argv);
static Scheme_Object *syntax_track_origin(int argc, Scheme_Object **argv);
static Scheme_Object *syntax_transfer_intro(int argc, Scheme_Object **argv);
static Scheme_Object *bound_eq(int argc, Scheme_Object **argv);
static Scheme_Object *module_eq(int argc, Scheme_Object **argv);
@ -449,6 +450,12 @@ void scheme_init_stx(Scheme_Env *env)
3, 3),
env);
scheme_add_global_constant("make-syntax-delta-introducer",
scheme_make_immed_prim(syntax_transfer_intro,
"make-syntax-delta-introducer",
2, 2),
env);
scheme_add_global_constant("bound-identifier=?",
scheme_make_immed_prim(bound_eq,
"bound-identifier=?",
@ -6761,6 +6768,61 @@ static Scheme_Object *syntax_track_origin(int argc, Scheme_Object **argv)
return scheme_stx_track(argv[0], argv[1], argv[2]);
}
static Scheme_Object *delta_introducer(int argc, struct Scheme_Object *argv[], Scheme_Object *p)
{
Scheme_Object *r, *delta;
r = argv[0];
if (!SCHEME_STXP(r))
scheme_wrong_type("delta-introducer", "syntax", 0, argc, argv);
delta = SCHEME_PRIM_CLOSURE_ELS(p)[0];
for(; !SCHEME_NULLP(delta); delta = SCHEME_CDR(delta)) {
r = scheme_add_remove_mark(r, SCHEME_CAR(delta));
}
return r;
}
static Scheme_Object *syntax_transfer_intro(int argc, Scheme_Object **argv)
{
Scheme_Object *m1, *m2, *delta, *a[1];
int l1, l2;
if (!SCHEME_STXP(argv[0]))
scheme_wrong_type("make-syntax-delta-introducer", "syntax", 0, argc, argv);
if (!SCHEME_STXP(argv[1]))
scheme_wrong_type("make-syntax-delta-introducer", "syntax", 1, argc, argv);
m1 = scheme_stx_extract_marks(argv[0]);
m2 = scheme_stx_extract_marks(argv[1]);
l1 = scheme_list_length(m1);
l2 = scheme_list_length(m2);
delta = scheme_null;
while (l1 > l2) {
delta = CONS(SCHEME_CAR(m1), delta);
m1 = SCHEME_CDR(m1);
l1--;
}
if (!scheme_equal(m1, m2)) {
/* tails don't match, so keep all marks */
while (l1) {
delta = CONS(SCHEME_CAR(m1), delta);
m1 = SCHEME_CDR(m1);
l1--;
}
}
a[0] = delta;
return scheme_make_prim_closure_w_arity(delta_introducer, 1, a, "delta-introducer", 1, 1);
}
static Scheme_Object *bound_eq(int argc, Scheme_Object **argv)
{
Scheme_Object *phase;